线性检测

1、霍夫变换的线性检测

    %得到霍夫空间
    [H,T,R] = hough(BW);
    
    %求极值点
    Peaks=houghpeaks(H,5);
    
    %得到线段信息
    lines=houghlines(I,T,R,Peaks);
    
    %新建窗口,绘图用
    figure (2)
    imshow(I);
    hold on
    %绘制线段
    for k=1:length(lines)
        xy=[lines(k).point1;lines(k).point2];
        plot(xy(:,1),xy(:,2),'LineWidth',4);
    end
    hold off 

  • 函数[H, T, R] = hough (BW, Name, Value)

       输入:BW:一个logic类的矩阵,通过边界计算得到的结果矩阵

       'RhoResolution': 指定在累计数组中(检测极值)的检测间隔?默认为1。取值范围在0到norm(size(BW))之间

                                     norm(size(BW)):BW矩阵的size-->[H,W],norm([H,W])是求矩阵的二范数。

                 二范数:norm(A):A*A的转置,求特征值,取最大特征值开根号。

   'Theta': 指定检测的角度范围(不超过-90~90度)以及间隔,例如-90:0.5:89.5,默认-90:1:89

       输入:H:累计数组,大小就是Rho×Theta

                  T,R分别对应公式中的theta和rho:rho = x*cos(theta) + y*sin(theta)

      这两个参数值的注意,RhoResolution太大覆盖不到极值点,检测到一些不对应直线的次极值;Theta范围设置小了显然会把某些极值排除在外,故Theta推荐使用全范围,并小的角度间隔,如-90:0.5:89.5


参考:

https://www.cnblogs.com/Ponys/p/3146753.html

https://blog.csdn.net/maginy/article/details/37758079

猜你喜欢

转载自blog.csdn.net/Diana_Z/article/details/80726264