我有一个关于通过基于强度的配准计算一张图像与另一张图像的最佳匹配点的查询。我想对我的算法发表一些评论:
在此迭代中计算扭曲矩阵
对于图像 A 的每个点,
2a. 我们将特定图像 A 的像素坐标与变形矩阵变形为图像 B
2b。如果扭曲点坐标在图像 B 中,则进行插值得到对应的强度形式图像 B。
2c。计算扭曲像素 A 强度和扭曲图像 B 强度之间的相似性度量值
循环遍历图像 A 中的每个像素
循环遍历所有可能的旋转和平移
这样可以吗?有没有我们可以参考的相关opencv代码?
您的算法看起来不错,但您必须小心:
边缘效应:您需要确保算法不支持大多数图像 A 不与图像 B 重叠的匹配。例如,您可能希望计算平均相似性度量并约束转换以确保至少 50% 的像素重叠。
计算复杂度。可能有很多可能的平移和旋转需要考虑,而且这个算法在实践中可能太慢了。
经线类型。根据您的应用程序,您可能还需要考虑透视/照明更改以及平移和旋转。
视频编码器中通常使用类似的算法,尽管大多数会忽略旋转/透视变化而只搜索平移。
一种非常常用的方法是对最佳匹配进行梯度搜索。换句话说,尝试以几种不同的方式调整平移/旋转(例如左/右/上/下 16 个像素)并选择最佳匹配作为新的起点。然后重复这个过程几次。一旦您无法改进匹配,请减小调整的大小并重试。
根据您的应用程序,您可能需要考虑一些替代方法: