检测图像中的圆形的可能快速方法有哪些?
image-processing
5
0

检测图像中的圆形的快速方法有哪些?

例如:我有一个带有一个大圆圈的图像,并且在大圆圈内有6个小圆圈。

我需要找到一个大圆圈而不使用霍夫圆(OpencV)。

参考资料:
Stack Overflow
收藏
评论
共 1 个回答
高赞 时间 活跃

查找圆的标准算法是Hough(评论中提到的问题)和RANSAC。参数化这些算法将为您的应用程序设置基准速度。

http://en.wikipedia.org/wiki/Hough_transform

http://en.wikipedia.org/wiki/RANSAC

为了加快这些算法的速度,您可以查看图像集合并确定是否限制搜索范围将有助于加快搜索速度。这很简单:仅在合理范围内搜索半径。由于它们将边缘点作为输入,因此您还可以查看减少检查的边缘点数量的方法。

但是,还有其他一些技巧可以加快处理速度。

  • 仔细设置检查半径的范围。例如,您可能不会简单地从最小的半径到最大的半径进行检查,而是可能将搜索分为两个不同的范围:从半径R1到R2,然后从半径R3到R4。
  • 放弃Canny边缘检测,转而支持您的应用程序可以忍受的最快的边缘检测。 (您可以抛弃Canny来获得许多应用程序。)
  • 预处理边缘点图像以消除离群值。消除离群值的适当算法将特定于您的图像集,但是您可能能够找到一种消除明显离群值的算法,从而在更昂贵的圆拟合算法中节省一些搜索时间。
  • 如果您的圆定义非常好,并且所有或几乎所有的点都存在,请弄清楚如何只匹配一个四分之一圆或半圆而不是整个圆。

长话短说:首先是完整的实现并对其进行基准测试,然后逐步加强参数设置并限制搜索范围,同时确保您仍可以为应用程序和图像集找到圆。

如果您的图像适合缩放,则一种可能性是创建不同比例的图像金字塔图像:1/2比例,1/4比例,1/8比例等。您将需要保留边缘的比例方法在较小的规模。

有了图像金字塔后,请尝试以下操作:

  1. 以最小的比例找到圈子。图像将很小并且可能的半径范围将受到限制,因此这应该是一种快速的操作。
  2. 如果您使用小比例的初始拟合找到了一个圆,请通过在下一个较大比例的图像中进行测试来提高拟合度-或者-继续搜索完整比例的图像。
  3. 检查下一个最大比例。在较小比例尺图像中不可见的圆圈可能会突然“出现”在当前比例尺中。
  4. 对图像中的所有比例重复上述步骤。

图像缩放将是一项快速的操作,您可以看到,如果在较小比例的图像中至少存在一个圆,则可以通过对较小比例的图像进行粗圆拟合来减少循环的总数,并且然后针对全尺寸图像中的那些边缘点单独优化拟合。

保留边缘的缩放比例还可以使用相关类型的工具来查找圆,但是能否进行此操作取决于图像的内容,包括噪点,边缘点表示圆的完整程度等等。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号