算法 - 将图像扭曲到另一个图像并计算相似性度量

时间:2012-07-21 17:48:35

标签: algorithm opencv

我通过基于强度的注册计算了一个图像与另一个图像的最佳匹配点的计算。我想对我的算法有一些评论:

  1. 在此次迭代中计算扭曲矩阵

  2. 对于图像A的每个点,

    2a上。我们扭曲特定图像A像素与经线矩阵坐标到图像B

    2B。如果翘曲点坐标在图像B中,则执行插值以从图像B获得相应的强度。

    2c中。计算翘曲像素A强度和翘曲图像B强度之间的相似性度量值

  3. 循环浏览图像A中的每个像素

  4. 循环完成所有可能的轮换和翻译

  5. 这可以吗?我们可以参考哪些相关的opencv代码?

1 个答案:

答案 0 :(得分:0)

关于算法的评论

您的算法看起来不错,但您必须小心:

  1. 边缘效果:您需要确保算法不支持大多数图像A不与图像B重叠的匹配。您可能希望计算平均相似性度量并约束转换以确保至少50%的像素重叠。

  2. 计算复杂性。可能需要考虑很多可能的翻译和旋转,这种算法在实践中可能太慢。

  3. 经线类型。根据您的应用,您可能还需要考虑透视/照明变化以及平移和旋转。

  4. 加速

    类似的算法常用于视频编码器,但大多数会忽略旋转/透视变化,只搜索翻译。

    一种常用的方法是对最佳匹配进行渐变搜索。换句话说,尝试以几种不同的方式调整平移/旋转(例如左/右/上/下16像素)并选择最佳匹配作为新的起点。然后重复几次这个过程。 一旦您无法改善匹配,请减小调整的大小,然后重试。

    替代算法

    根据您的应用程序,您可能需要考虑一些替代方法:

    1. 立体声匹配。如果您的2张图像来自立体相机,那么您只需要向一个方向搜索(而OpenCV提供有用的methods来执行此操作)

    2. 已知模式。如果你能够在你的两个图像中放置一个已知的模式(例如棋盘),那么注册它们会变得容易得多(OpenCV提供methods来查找和注册某些类型的模式)

      < / LI>
    3. 要素点匹配。图像配准的常用方法是搜索区别点(例如,角落的类型或更一般的感兴趣的位置),然后尝试在两个图像中找到匹配的区别点。例如,OpenCV包含检测SURF功能的功能。谷歌发布了一个很好的paper使用这种方法,以消除我推荐阅读的滚动快门噪音。