轮廓匹配 - 寻找轮廓位移

7
我在两个具有相同对象的图像上找到了轮廓,并想找到该对象的位移和旋转。我已经尝试过使用这些轮廓的旋转边界框,然后是它们的角度和中心点,但是边界框的旋转不能正确地说明轮廓的旋转,因为对于角度a + 0、a + 90、a + 180等度数来说,其旋转是相同的。 有没有其他好的方法来找到轮廓的旋转和位移?也许使用凸包、凸性缺陷之类的东西?我在《学习OpenCV》中读到匹配轮廓的内容,但并没有帮助。能否举个例子? //编辑: 也许有一种类似于Freeman链的方法可以解决这个问题?但是我目前无法想出算法。使用序列点之间的角度制作链,然后检查序列是否匹配并不是很好用...

可能在dsp.stackexchange.com上会更好。 - endolith
1个回答

3
如果对象有凸性缺陷,您可以选择一个缺陷,从第一个轮廓的质心到该缺陷的质心创建一个向量。 然后您可以检查第二个轮廓中的缺陷并匹配之前使用的那个缺陷。再次从轮廓的质心到匹配的缺陷的质心创建一个向量。
从此,您可以获得两个线段(向量),从中可以获得位移和旋转。

但我想知道它是否对所有类型的轮廓都有效?例如,能否检测出非常简单的形状,如正方形等。 - krzych
这就是为什么我说如果有缺陷,如果对象是正方形、圆形或其他基本形状,你将需要另一种方法。 - Adrian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接