visual-c++ - 使用 matchTemplate 使用 opencv 查找两个图像之间的变换、旋转和缩放量

标签 visual-c++ opencv image-processing

我想提取模板图像和源图像之间的变换、旋转和缩放量。我想使用模板匹配,但我不知道如何提取变换、旋转和缩放量。有人可以帮助我吗?

最佳答案

您提出的问题可以通过多种方式解决,但模板匹配似乎不是正确的解决方案。

  1. 解决此问题的一种方法可能是使用 SIFT计算每张图像中的关键点,然后您可以找到两张图片之间特征的一致性。获得匹配项后,您可以计算 homography两对点集之间的映射。下面显示了一个带有卡片的示例。请注意,您需要处理错误的匹配,但有一些算法可以做到这一点。您可以找到使用 OpenCV 进行 SIFT 的示例 here .

enter image description here

  • 一种更复杂的处理方法是执行点集注册。有一个非常好的算法叫CPD给定两个点集,它计算点之间的对应关系并估计双步优化(期望最大化)中的变换。 CPD 可以假设不同类型的变换,例如刚性变换、仿射变换和非刚性变换。 CPD 是通过 mex 用 C 语言在 Matlab 中编写的。
  • enter image description here

    关于visual-c++ - 使用 matchTemplate 使用 opencv 查找两个图像之间的变换、旋转和缩放量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22206772/

    相关文章:

    python - 创建具有线性渐变的图像 mask

    image-processing - 如何使用主成分分析选择多个维度

    c++ for循环优化问题

    c++ - std::fstream 的惊人结果

    c++ - OpenCV 错误 : Camera Calibration: Assertion failed in matrix_wrap. cpp

    c++ - 如何在openCV项目中使用LIBSVM生成的模型

    matlab - 图像处理中的平均掩模和拉普拉斯掩模

    c++ - MSVC : Invalid memcpy optimization?

    具有比 CPU 慢的快速 GPU 的 C++ AMP

    python - 如何使用 opencv python 将红色 channel 与灰度图像合并?