首页 文章

使用opencv检测圆形图案

提问于
浏览
2

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

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

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

3 回答

  • 1

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

    • 检测中心和圆圈大小(你说你已经实现了这个 - 很好!)

    • 使用简单均值计算平均中心 . 从这个意思上表达所有中心

    • 用一个简单的规范找到最远的中心(欧几里得很好)

    • 缩放中心位置和圆的大小,使此最大距离为1.0

    • 旋转中心,使最远的坐标为(1.0,0)

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

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

  • 0

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

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

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

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

    希望有所帮助 .

  • 1

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

    只需搜索OpenCV和SURF .

相关问题