opencv - OpenCV中的相位相关和模板匹配有什么区别?

标签 opencv fft feature-detection

我最近在 OpenCV 中发现了相位相关性,它与对数极坐标变换 (LPT) 可以进行旋转和尺度不变的模板匹配。我想知道此方法与此处描述的所有模板匹配方法之间有什么区别 http://docs.opencv.org/2.4/doc/tutorials/imgproc/histograms/template_matching/template_matching.html这似乎对任何旋转或缩放都不那么稳健。

我想我的问题是:

  1. 相位相关 + 对数极坐标变换。
  2. 模板匹配。
  3. 与 SIFT 等工具相匹配的完整功能。

最佳答案

相位相关和对数极坐标变换是在频域中实现的,这两种算法都是从傅立叶位移定理推导出来的,即两幅转换后的图像在频域中会表现出相似的相位差。相位相关只能记录平移运动,而对数极坐标变换在对数极坐标域中工作,它实质上将旋转和比例变化转换为线性平移。因此,使用对数极坐标匹配,您可以配准两个图像,这些图像经过缩放、旋转和平移后互为副本。这两种算法都不能注册变形变换。关于这些算法可以确定的模糊度和旋转范围以及尺度变化的详分割析,可以引用这篇论文“http://ieeexplore.ieee.org/document/901003/”。

模板匹配本质上是使用各种相似性度量(差平方和、归一化互相关、Hausdorff 距离等)在基本图像中找到已知模板的存在。因此匹配可以应用于空间属性(强度图像、边缘图、HOG)或频率属性(相位)。相位相关和对数极坐标匹配可以在相同大小的图像上实现,因此基于相位的模板匹配本质上对应于在搜索空间中找到具有最高相关值的相同补丁。

SIFT、SURF 等生成依赖于各种参数的大型特征向量集,因此它不受尺度变化、噪声和光照变化的影响。这是一个非常广泛的话题,网上有很多论文比较了它们的功能。

根据我的经验,SIFT、SURF 是一个更强大的分类器,可以在单帧中定位对象,但如果您计划在计算时间是限制因素的视频中定位对象,那么模板匹配会更好。

关于opencv - OpenCV中的相位相关和模板匹配有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37143979/

相关文章:

c++ - c++中的卷积实现

c++ - cvExtractSURF 抛出异常,cvCreateSeq 中输入数组 ( ) 的大小不正确

c++ - OpenCV 级联分类器加载错误 iOS

python - 傅立叶变换 2D 工件 - 我做错了什么?

Javascript 特征检测 CMYK 图像

python - ROS Noetic (Ubuntu 20.04) - CV 桥不工作

c# - 计算 FFT 相关系数

matlab - Matlab 中基于傅里叶的字符识别

python - 如何获取python scipy中的所有音频参数?

Android 自动裁剪相机拍摄的图像