如何在Hough变换后显示清晰的结果?

时间:2012-01-31 14:20:59

标签: java algorithm image-recognition hough-transform

我在Canny边缘检测后获得了以下图像: Canny edge detection result

对Hough变换应用后,我得到了这个结果:

enter image description here

这是非常好的结果,但我只需要每个束中的一行,所以我可以显示第一张图片中的对象类似于三角形。我的第一个决定是计算每个捆绑的某种“平均”线。每条线由一个角度和一个raduis定义。我找到每个束的“平均”线的方法是使用以下公式计算角度的平均值:

avgTheta = arctan(sum of sines of all thetas/sum of cosines of all theta)

我用最简单的方式计算平均值:

avgRadius = sum of all raduises / number of raduises

然而,我获得的线条不在其捆绑的中心。

有人可以建议更好的解决方案吗?

我正在使用Hough Transformation的这种实现:Hough Transform

总是可以随机选择每个包的一行,但我不喜欢它。

如果我的问题不明确,请告诉我,以便更好地解释问题。

提前致谢。

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

取平均角度,不带任何余弦,正弦或arctan函数。只要确保你处理包裹。基于您链接到它的实现,在我看来,你在pi(180度)包裹。在你的图像中,“岛屿(?)”右侧几乎垂直的一束线将是包裹物两侧的线条的一个很好的例子。

如果你根据Canny边缘检测图片中包含的点数加权线,你可能得到最好的结果,然后在平均计算中使用这个权重。也许这已经通过拥有多个具有相同属性的行来完成,我无法从您的图像或链接代码中分辨出来。