2

我必须使用opencv检测6个圆圈的图案。我通过在 opencv 中使用阈值和轮廓函数检测到圆及其质心。

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

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

4

3 回答 3

1

如果您需要找到旋转,或者只是摆脱它,或者检测圆圈是否真的形成了您链接的图案,我并不完全清楚。无论哪种方式,答案都差不多。

我会首先找到只有一个邻居的两个圆圈。对于每个圆心计算到最近的两个邻居的距离。如果距离差异超过 10%,则质心属于“结束”圆(链接中的顶部之一)。

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

现在您可以根据平均质心间距离计算缩放比例。

希望有帮助。

于 2012-04-11T16:05:36.807 回答
1

为了使您的图案对旋转和比例保持不变,您必须在检测图案时标准化方向和比例。这是一个简单的算法来实现这一点

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

你完成了。您现在是比例/旋转不变模式检测器的骄傲拥有者!恭喜!

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

于 2012-04-11T16:19:07.307 回答
0

您的问题听起来与 SURF 算法所做的完全一样。它找到感兴趣的组并将它们组合在一起,旋转和缩放不变,并且可以在其他图片中找到相同的对象。

只需搜索 OpenCV 和 SURF。

于 2012-12-13T04:29:20.367 回答