我必须使用 opencv 检测 6 个圆圈的模式。我已经通过在opencv中使用阈值和轮廓函数来检测圆及其质心。
现在,我必须以一种对比例和旋转不变的方式定义这些圆之间的关系。有了这个,我将能够在各种视图中检测到这种模式。我必须使用这种模式来确定物体姿势。
如何实现缩放/旋转不变性?你有什么参考资料可以读到吗?
为了使你的模式对旋转和缩放不变,你必须在检测你的模式时规范化方向和比例。这是一个简单的算法来实现这一点
- 检测中心和圆圈大小(你说你已经做到了这一点 - 很好!
- 使用简单平均值计算平均中心。从此均值表示所有中心
- 使用简单范数找到最远的中心(欧几里得就足够好了)
- 缩放中心位置和圆大小,使此最大距离为 1.0
- 旋转中心,使最远中心的坐标为 (1.0, 0)
大功告成。您现在是刻度/旋转不变模式检测器的骄傲拥有者!!祝贺!
现在,您可以找到图案,按照建议进行转换,并比较中心位置和圆圈大小。
我并不完全清楚你是否需要找到旋转,或者只是摆脱它,或者检测圆圈是否真的形成了你链接的模式。无论哪种方式,答案都大同小异。
我将首先找到只有一个邻居的两个圆圈。对于每个圆质心,计算到最近两个相邻体的距离。如果距离相差超过 10%,则质心属于"末端"圆(链接中的顶部圆之一)。
现在您已经找到了两个端圆,请旋转它们,使它们彼此水平。如果其他质心现在位于其上方,请再旋转 180 度,以使图案最终达到所需的方向。
现在,您可以从平均质心间距离计算比例。
希望有帮助。
你的问题听起来和SURF算法完全一样。 它找到感兴趣的组,并以旋转和缩放的方式将它们分组在一起,并且可以在其他图片中找到相同的对象。
只需搜索OpenCV和SURF。