Matlab houghlines返回图像边界外的X,Y坐标

时间:2014-05-09 09:16:58

标签: matlab hough-transform

我测试了Matlab的Hough变换来检测线条。 我在下面的代码中想出了一个奇怪的行为:

clc; clearvars; close all;
I = zeros(100,100);
I(50:70,25) = 1;
[H,T,R] = hough(I);
P = houghpeaks(H,1);
lines = houghlines(H,T,R,P,'MinLength',10);
disp([ 'Coordinates for beginning of line (x,y) = '...
    ,num2str(lines.point1(1,2)),',',num2str(lines.point1(1,1))]);
disp([ 'Coordinates for ending of line (x,y) = '...
    ,num2str(lines.point2(1,2)),',',num2str(lines.point2(1,1))]);
disp([ 'Length of detected line = ', num2str(norm(lines.point1 - lines.point2)) ]);

一个小狡辩是原始线长为21像素,而houghlines发现它为18.通过设置' Theta'通过替换

来提高精度
[H,T,R] = hough(I);

[H,T,R] = hough(I,'Theta',-90:0.01:89.99);

我达到了20像素的值。将值设置为1到' RhoResolution'在霍夫变换函数中更多地混淆了结果。 所以这有点烦人 - 线的长度偏离1(我测试了其他长度)。

更令人烦恼的是原始图像是100x100像素,如果我没有将Theta设置为更高的分辨率,则终点(在我此处提供的初始示例中)不在网格中(x 108的坐标,这里的术语是行是x轴,列是y轴)!

如果我设置' Theta', - 90:0.01:89.99,起点和终点也完全偏离原始点(尽管它们仍然在图像边界内)。

对此的任何帮助将不胜感激。

谢谢!

0 个答案:

没有答案