轮廓匹配 - 寻找轮廓位移

信息处理 图像处理 计算机视觉 算法
2022-01-12 02:53:39

我在两个具有相同对象的图像上找到了轮廓,我想找到这个对象的位移和旋转。我已经尝试过旋转这个轮廓的边界框,然后是它的角度和中心点,但是边界框的旋转并不能正确地说明轮廓旋转,因为它对于角度 a+0、a+90、a+180 等是相同的。度。找到轮廓的旋转和位移还有其他好方法吗?也许使用一些凸包,凸性缺陷?我在 Learning OpenCv 中读过关于匹配轮廓的内容,但没有帮助。有人可以举一些例子吗?

例子:

1 2 3 4

我想检测例如粉红色的正方形,在第二种情况下是笔。其他示例可能是带有一些孔、星星等的正方形。正如我所说,我想做一些通用的东西。感谢任何建议,因为我想测试尽可能多的方法。

3个回答

您是否需要担心轮廓之间的比例差异?如果不是,您可以简单地找到每个轮廓的质心,并通过从另一个减去一个来计算位移。然后您可以计算轮廓的主轴,并找到它们之间的旋转角度。

如果涉及缩放,则可以通过取相应主轴的比率来计算比例因子。

如果您不必担心比例或投影失真,链码可能会有所帮助。如果您有大致相同形状和相同比例的链码,您可以找到具有一维 FFT 相位相关的翻译 http://en.wikipedia.org/wiki/Phase_correlation

如果您必须考虑投影失真,您还可以考虑使用特征点(如角)而不是轮廓的可能性。

在你说的问题中

正如我所说,我想做一些通用的东西

但恐怕很难找到一个“通用”的解决方案。

您可以购买商业可用的模式定位器软件并将其集成到您的应用程序中,通常它们在广泛的应用程序中表现良好。只是为了给您一个想法,这是此类产品的参考手册http://www.lmi3d.com/sites/default/files/support/4.2.0.70-hexsight_user_guide.pdf

此外,您可以为某些特定情况(例如图像中的笔)开发临时解决方案。

否则,您可以从根植于计算几何( http://www.cs.sunysb.edu/~algorith/files/shape-similarity.shtml )的非常基本的基础开始努力研究这个问题,您的“轮廓”被称为“多边形”,读取如下内容:

M. de Berg、O. Devillers、M. Kreveld、O. Schwarzkopf 和 M. Teillaud。 计算平移下两个凸多边形的最大重叠。 理论计算机科学,31:613-628,1998。

H. Ahn、O. Cheong、C. Park、C. Shin 和 A. Vigneron。 最大化刚性运动下两个平面凸集的重叠。计算几何:理论与应用,37:3-15,2007。

并以Markus UlrichMVTec合作的“图像中复合对象的分层实时识别”结束,MVTec是另一家销售对象识别软件工具的软件公司。