【问题标题】:How to display clear result after Hough Transformation?霍夫变换后如何显示清晰的结果?
【发布时间】:2012-02-23 06:19:42
【问题描述】:

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

在对其应用霍夫变换后,我得到了这个结果:

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

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

我用最简单的方法计算平均半径:

avgRadius = sum of all raduises / number of raduises

但是我得到的线条不在它们的包的中心。

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

我正在使用霍夫变换的这个实现:Hough Transform

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

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

提前致谢。

【问题讨论】:

  • 你为什么要做正弦/余弦/反正切的东西,而不是直接平均 thetas?另外,你是如何定义线半径的?

标签: java algorithm image-recognition hough-transform


【解决方案1】:

你可以试试这个:

在没有任何余弦、正弦或反正切函数的情况下取平均角度。只要确保你处理包装。根据您链接到的实现,在我看来您包裹在 pi(180 度)。在您的图像中,“岛(?)”右侧的几乎垂直的线束将是环绕两侧的线的一个很好的例子。

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

【讨论】:

  • 我想从原始 Canny 图像中创建一个池,其中有多少点包含每条霍夫线,从而选择使用哪个。也许这是最好的选择。事实上,如果图片上有多个感兴趣的对象,我可以使用这种算法。
猜你喜欢
  • 1970-01-01
  • 2022-07-26
  • 2020-06-08
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
  • 1970-01-01
  • 1970-01-01
  • 2019-10-26
相关资源
最近更新 更多