更准确的Hough线变换OpenCV

4

我一直在使用OpenCV的houghlines,但是我似乎无法获得更准确的线条读数,有时会出现两条重复的线在同一位置。我已经查看了OpenCV网站上的教程,但结果相似。


编写检查斜率/线段/点的代码。我曾经遇到过类似的问题,但是一个简单的检查就解决了它。但要确保不会丢失信息。 - scap3y
会尝试一下,谢谢。只是想知道是否可以在HoughLines上读取曲线? - user3130151
HoughLines将检测出_直线_。如果您的图像中的曲线可以由一组直线表示,则HL将输出该集合。如何解释它将取决于您。 - scap3y
OpenCV中的Hough实现确实有点过时。自上个十年以来,出现了更好的Hough实现,希望它们能在未来的GSoC会议中被实现到OpenCV中。 - rwong
1个回答

12

要去除这些重复的线,有两件事可以帮助您:

  1. 双重边缘可能会导致重复的线条。通过对输入图像进行一系列的模糊/膨胀操作即可解决这些问题。
  2. 使用较低的角度分辨率来设置霍夫线方法的theta参数可以删除具有几乎相同斜率的线条。例如,使用π/180会导致查找仅在斜率上相差一度的线条。您可以使用5*π/180以5度分辨率查找线条。

例如,使用原始图像和1度分辨率可以检测到以下线条: triple

经过一点模糊处理并使用3度分辨率,您可以得到以下结果: fixed

通过更改阈值,您可以获得更多或更少的线。
关于您在评论部分提到的拟合曲线,是的,您可以拟合曲线,但不能使用霍夫线方法。您需要找到该形状的参数定义,并尝试运行自己的霍夫变换投票程序。 OpenCV 帮助您查找的唯一其他形状是圆形。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接