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