OpenCV中的旋转和缩放不变模板匹配

raj*_*jat 6 c++ opencv pattern-recognition

可能重复:
缩放和旋转模板匹配

我有一个模板灰度图像,上面有白色背景和黑色形状.我还有几个类似的测试图像,它们的旋转和形状各不相同.测试图像与模板不同,但它们相似.

我想比较这两个图像,看看模板是否与任何测试图像最匹配.图像中没有失真,没有噪声和其他缺陷.有关于这个主题的任何教程吗?

krz*_*ych 11

首先尝试最简单的方法.

如果我理解正确你有一些模型 - 白色背景上的黑色形状.您可以将其视为blob - 通过计算主轴角度找到它的质量中心和旋转 - 看那里.

然后,您必须从其他图像中分割出形状.然后尝试找到matchShapes()函数的最佳相应的形状-看到如何使用它.

matchShapes()函数使缩放和旋转不变匹配.最小的匹配形状导致更好的匹配.

扩展您的问题,您可以找到质量中心和最佳匹配斑点的旋转,并找到模型和匹配图像之间的旋转,缩放和位移.


cod*_*joe 5

这是一个相当复杂的课题。您通常可以使用诸如广义霍夫变换和归一化灰度相关之类的选项来处理模板匹配。问题是它们在最简单的表达式中不是缩放或旋转不变的。您需要专注于当时的问题,通用解决方案很复杂。我首先推荐简单的模板匹配。然后为旋转和缩放添加“hacks”。对于旋转,您可以缩小(低分辨率匹配)和模板与旋转模型匹配。这也可以处理规​​模。