【问题标题】:Explanation of a Hough accumulator that does not match image与图像不匹配的霍夫累加器的说明
【发布时间】:2017-01-26 15:59:31
【问题描述】:

我对 Octave 上的图像处理和霍夫变换很感兴趣,但结果不是预期的。 这是我的边缘图像: 这是我的霍夫累加器(x 轴是角度,y 轴是半径): 我觉得我错过了水平条纹,但 0/180 角度值的累加器中没有局部最大值。

另外,对于垂直条纹,半径的值应该等于边缘图像的 x 值,但是 r 的值非常高:

exp:图像左侧的第一条垂直线有一个方程 x=20(approx) -> r.r = x.x + y.y -> r=x -> r=20

检测到的整体结果线与边缘完全不匹配:

  • 检测到最大值的蓄能器:
  • 结果行:

如您所见,累加器的最大值已令人满意地检测到,但结果线的半径值太高且缺少 theta 值。

看起来霍夫变换累加器与图像不对应......

谁能帮我弄清楚为什么以及如何纠正它? 这是我的代码:

function [r, theta] = findScratches (img, edge)

hough = houghtf(edge,"line", pi*[0:360]/180);
threshHough = hough>.5*max(hough(:));

[r, theta] = find(threshHough>0);

%deg to rad for the trig functions
theta = theta/180*pi; 
%according to octave doc r range is 2*diagonal 
%-> bring it down to 1*diagonal or all lines are out of the picture
r = r/2;

%coefficients of the line y=ax+b
a = -cos(theta)./sin(theta);
b = r./sin(theta);

x = 1:size(img,2);
y = a * x + b;


figure(1)
imagesc(edge);
colormap gray;
hold on;
for i=1:size(y,1)
axis ij;
plot(y(i,:),x,'r','linewidth',1);
end
hold off;

endfunction

提前谢谢你。

【问题讨论】:

    标签: octave hough-transform


    【解决方案1】:

    您绝对是在正确的轨道上。在寻找热点之前模糊累加器图像会有所帮助。另外,为什么不在霍夫变换之前快速腐蚀和膨胀?

    【讨论】:

    • 抱歉回复晚了。我确实添加了一些预处理,它有很大帮助。谢谢你。我记得我在解释我的结果时仍然存在一些问题,但这是我想回到的问题。
    【解决方案2】:

    我遇到了同样的问题 - 检测到的线具有正确的斜率,但发生了偏移。问题是find(threshHough>0) 函数调用返回的r[0,2*diag] 的区间内,而霍夫变换使用r 的值从[-diag,diag] 的区间运行。因此,如果您更改线路

    r=r/2

    r=r-size(hough,1)/2

    你会得到正确的偏移量。

    【讨论】:

    【解决方案3】:

    让我们定义一个角度向量(以弧度为单位): 角度=pi*[0:360]/180

    你不应该做这个操作:theta = theta/180*pi。

    将其替换为:theta = Angles(theta),其中 theta 是索引

    【讨论】:

    • 感谢您的回答,但并没有真正改善答案。另外,我不明白为什么这会改变任何事情。如果累加器给出的theta,是bins而不是degrees,如果有360个bin,那么每个theta索引都相当于1度,那么使用theta作为索引或者直接转换应该是一样的吧?
    【解决方案4】:

    上面有人评论建议将 r 调整为 -diag 到 +diag 范围

    r=r-size(hough,1)/2

    这对我来说效果很好。然而,另一个区别是我使用默认角度来计算角度 -90 到 +90 的 Hough 变换。向量中的 theta 范围是 +1 到 +181。所以需要调整-91,然后转换成弧度。

    theta = (theta-91)*pi/180;

    以上 2 处更改后,其余代码正常。

    【讨论】:

    • 谢谢,我也一定会测试的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多