OpenCV Image Processing 模块有一个 phaseCorrelate 方法。
这个就理解成计算两张图片之间的位移,用于图像拼接。
这个文章讲的可以:https://cloud.tencent.com/developer/article/1851548
简单说一下原理,其实就是对两个图片功率谱进行一些计算。
当两幅函数 f1(x,y) 和 f2(x,y) 仅仅有位移的差异,即 f2(x,y) = f1(x-a,y-b),则它们的傅立叶变换 F1(u,v) 和 F2(u,v) 有如下关系:
然后他们的互功率谱如下:
式中
两张图的拼接结果:
-
相位相关法相比模板匹配方法可以自动计算偏移量,省去设定模板的步骤;
-
在特征点较少的图像拼接情况下,特征匹配如SIFT/SURF可能会失败,此时可尝试相位相关法:
-
相位相关法不适用图像有周期性重复区域的图像,如棋盘格图像。
-
一些畸变明显的图像不能单纯靠此方法得到好的效果。
