scale and rotation Template matching(缩放和旋转模板匹配)
问题描述
我正在使用带有 CV_TM_CCORR_NORMED
的匹配模板的方法来比较两个图像......我想让这个旋转和缩放不变......有什么想法吗?
I'm using the method of match template with CV_TM_CCORR_NORMED
to compare two images ... I want to make to make this rotation and scale invariant .. any ideas?
图像和模板的傅里叶变换我尝试用同样的方法,但是旋转后的结果还是不一样
I tried to use the same method on the fourier transform of the image and the template , but still the result after rotation is different
推荐答案
在场景中旋转或缩放对象时,使用 matchTemplate
的模板匹配效果不佳.
Template matching with matchTemplate
is not good when your object is rotated or scaled in scene.
您应该尝试 Features2D
框架中的 openCV 函数.例如SIFT
或SURF
描述符,以及FLANN
匹配器.此外,您还需要 findHomography
方法.
You should try openCV function from Features2D
Framework. For example SIFT
or SURF
descriptors, and FLANN
matcher. Also, you will need findHomography
method.
这里是在场景中找到旋转对象的一个很好的例子.
Here is a good example of finding rotated object in scene.
更新:
简而言之,算法是这样的:
In short, algorithm is this:
寻找对象图像的关键点1.1.从这些关键点中提取描述符
Finding keypoints of your object image 1.1. Extracting descriptors from those keypoints
寻找场景图像的关键点2.1 从关键点中提取描述符
Finding keypoints of your scene image 2.1 Extracting descriptors from keypoints
通过匹配器匹配描述符
分析你的匹配
有不同类别的 FeatureDetector、DescriptorExtractors 和 DescriptorMatches,您可以阅读它们并选择适合您的任务的那些.
There are different classes of FeatureDetectors, DescriptorExtractors, and DescriptorMatches, you may read about them and choose those, that fit good for your tasks.
- openCV FeatureDetector(上述算法中的第 1 步和第 2 步)
- openCV DescriptorExtractor(算法中的步骤 1.1 和 2.1上面)
- openCV DescriptorMatcher(上述算法中的第 3 步)
- openCV FeatureDetector (steps 1 and 2 in algorithm above)
- openCV DescriptorExtractor ( steps 1.1 and 2.1 in algorithm above )
- openCV DescriptorMatcher ( step 3 in algorithm above )
这篇关于缩放和旋转模板匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:缩放和旋转模板匹配
基础教程推荐
- 调用std::Package_TASK::Get_Future()时可能出现争用情况 2022-12-17
- C++ 标准:取消引用 NULL 指针以获取引用? 2021-01-01
- 如何在 C++ 中处理或避免堆栈溢出 2022-01-01
- C++ 程序在执行 std::string 分配时总是崩溃 2022-01-01
- 设计字符串本地化的最佳方法 2022-01-01
- 您如何将 CreateThread 用于属于类成员的函数? 2021-01-01
- C++,'if' 表达式中的变量声明 2021-01-01
- 什么是T&&(双与号)在 C++11 中是什么意思? 2022-11-04
- 如何定义双括号/双迭代器运算符,类似于向量的向量? 2022-01-01
- 运算符重载的基本规则和习语是什么? 2022-10-31