3

我有一个关于通过基于强度的配准计算一张图像与另一张图像的最佳匹配点的查询。我想对我的算法发表一些评论:

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

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

    2a. 我们将特定图像 A 的像素坐标与变形矩阵变形为图像 B

    2b。如果扭曲点坐标在图像 B 中,则进行插值得到对应的强度形式图像 B。

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

  3. 循环遍历图像 A 中的每个像素

  4. 循环遍历所有可能的旋转和平移

这样可以吗?有没有我们可以参考的相关opencv代码?

4

1 回答 1

0

算法评论

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

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

  2. 计算复杂度。可能有很多可能的平移和旋转需要考虑,而且这个算法在实践中可能太慢了。

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

加速

视频编码器中通常使用类似的算法,尽管大多数会忽略旋转/透视变化而只搜索平移。

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

替代算法

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

  1. 立体声匹配。如果您的 2 张图像来自立体相机,那么您只需要在一个方向上搜索(OpenCV 提供了有用的方法来做到这一点)

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

  3. 特征点匹配。图像配准的常用方法是搜索特征点(例如角的类型或更一般的兴趣点),然后尝试在两幅图像中找到匹配的特征点。例如,OpenCV 包含检测SURF特征的函数。谷歌发表了一篇关于使用这种方法来消除滚动快门噪音的精彩论文,我推荐阅读。

于 2012-07-21T21:22:25.150 回答