使用opencv检测圆形图案

时间:2012-04-09 10:01:16

标签: image-processing opencv pattern-matching computer-vision object-recognition

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

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

如何实现缩放/旋转不变性?你有任何我能读到的参考资料吗?

3 个答案:

答案 0 :(得分:1)

我不完全清楚你是否需要找到旋转,或者只是去除旋转,或者检测圆圈是否实际形成你所连接的模式。无论哪种方式,答案都是一样的。

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

现在您已找到两个端圆,旋转它们使它们彼此水平。如果其他质心现在位于它们上方,则再旋转180度,使图案最终朝向您想要的方向。

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

希望有所帮助。

答案 1 :(得分:1)

使你的模式对旋转不变;缩放,您必须在检测图案时标准化方向和比例。这是一个实现这个的简单算法

  • 检测中心和圆圈大小(你说你已经实现了这个 - 很好!)
  • 使用简单均值计算平均中心。从这个意思上表达所有中心
  • 使用简单的规范找到最远的中心(欧几里德足够好)
  • 缩放中心位置和圆的大小,使此最大距离为1.0
  • 旋转中心,使最远的坐标为(1.0,0)

你已经完成了。您现在是标度/旋转不变模式探测器的自豪拥有者!恭喜!

现在您可以找到模式,按照建议进行变换,并比较中心位置和圆圈尺寸。

答案 2 :(得分:0)

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

只需搜索OpenCV和SURF。

相关问题