缩放和旋转 模板匹配

scale and rotation Template matching

本文关键字:旋转 缩放      更新时间:2023-10-16

我正在使用与CV_TM_CCORR_NORMED匹配模板的方法来比较两张图像......我想使这种旋转和缩放不变..有什么想法吗?

我尝试在图像和模板的傅里叶变换上使用相同的方法,但旋转后的结果仍然不同

在场景中旋转或缩放对象时,与matchTemplate的模板匹配效果不佳。

您应该尝试从Features2D框架中获取 openCV 函数。例如SIFTSURF描述符,以及FLANN匹配器。此外,您将需要findHomography方法。

下面是在场景中查找旋转对象的一个很好的例子。

更新:

简而言之,算法是这样的:

  1. 查找对象图像的关键点1.1. 从这些关键点中提取描述符

  2. 查找场景图像的关键点2.1 从关键点中提取描述符

  3. 匹配器匹配描述符

  4. 分析您的匹配项

有不同类别的特征检测器,描述符提取器和描述符匹配,您可以阅读它们并选择适合您的任务的那些。

  • openCV FeatureDetector(上述算法中的步骤 1 和 2(
  • openCV 描述符提取器(算法中的步骤 1.1 和 2.1以上(
  • openCV 描述符匹配器 ( 上面算法中的步骤 3 (

与通过特征检测和同形异义词相比,有更简单的方法来匹配模板比例和旋转不变性(如果您知道它实际上只是旋转和缩放,但其他一切都是恒定的(。对于真正的目标检测,上述建议的基于关键点的方法效果更好。

如果您知道它是相同的模板并且不涉及透视更改,则可以使用图像金字塔进行缩放空间检测,并在该金字塔的不同级别上匹配模板(通过简单的东西,例如SSD或NCC(。在金字塔的较高(=较低分辨率(级别上找到粗略匹配会很便宜。事实上,它会非常便宜,以至于您还可以在低分辨率级别上大致旋转模板,并且当您将模板追溯到更高的分辨率级别时,您可以使用更细粒度的旋转步进。这是一种非常标准的模板匹配技术,在实践中效果很好。

旋转不变

对于每个关键点:

  1. 采取关键点周围的区域。
  2. 使用渐变或其他方法计算该区域的方向角。
  3. 将此角度上的图案和请求区域旋转为 0。
  4. 计算此旋转区域的描述符并匹配它们。

尺度不变

请参阅轻快方法