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