使用 opencv 检测圆圈的模式



我必须使用 opencv 检测 6 个圆圈的模式。我已经通过在opencv中使用阈值和轮廓函数来检测圆及其质心。

现在,我必须以一种对比例和旋转不变的方式定义这些圆之间的关系。有了这个,我将能够在各种视图中检测到这种模式。我必须使用这种模式来确定物体姿势。

如何实现缩放/旋转不变性?你有什么参考资料可以读到吗?

为了使你的模式对旋转和缩放不变,你必须在检测你的模式时规范化方向和比例。这是一个简单的算法来实现这一点

  • 检测中心和圆圈大小(你说你已经做到了这一点 - 很好!
  • 使用简单平均值计算平均中心。从此均值表示所有中心
  • 使用简单范数找到最远的中心(欧几里得就足够好了)
  • 缩放中心位置和圆大小,使此最大距离为 1.0
  • 旋转中心,使最远中心的坐标为 (1.0, 0)

大功告成。您现在是刻度/旋转不变模式检测器的骄傲拥有者!!祝贺!

现在,您可以找到图案,按照建议进行转换,并比较中心位置和圆圈大小。

我并不完全清楚你是否需要找到旋转,或者只是摆脱它,或者检测圆圈是否真的形成了你链接的模式。无论哪种方式,答案都大同小异。

我将首先找到只有一个邻居的两个圆圈。对于每个圆质心,计算到最近两个相邻体的距离。如果距离相差超过 10%,则质心属于"末端"圆(链接中的顶部圆之一)。

现在您已经找到了两个端圆,请旋转它们,使它们彼此水平。如果其他质心现在位于其上方,请再旋转 180 度,以使图案最终达到所需的方向。

现在,您可以从平均质心间距离计算比例。

希望有帮助。

你的问题听起来和SURF算法完全一样。 它找到感兴趣的组,并以旋转和缩放的方式将它们分组在一起,并且可以在其他图片中找到相同的对象。

只需搜索OpenCV和SURF。

相关内容

  • 没有找到相关文章

最新更新