比例和旋转模板匹配
c++
computer-vision
image-processing
opencv
5
0

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

我尝试对图像和模板进行傅立叶变换时使用相同的方法,但是旋转后的结果仍然不同

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

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

你应该尝试OpenCV的功能Features2D框架。例如, SIFTSURF描述符以及FLANN匹配器。另外,您将需要findHomography方法。

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

更新:

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

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

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

  3. 匹配器匹配描述符

  4. 分析你的比赛

FeatureDetectors,DescriptorExtractors和DescriptorMatches有不同的类别,您可以阅读并选择它们,以适合您的任务。

收藏
评论

比通过特征检测和单应性更容易匹配模板比例和旋转不变的方法(如果您知道模板实际上只有旋转和比例,但其他所有条件都是不变的)。对于真正的物体检测,以上建议的基于关键点的方法效果更好。

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

收藏
评论

旋转不变

对于每个关键点:

  1. 占据关键点周围的区域。
  2. 用梯度或其他方法计算该区域的定向角。
  3. 旋转图案并将该角度的请求区域设置为0。
  4. 计算该旋转区域的描述符并进行匹配。

尺度不变

风险

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号