最近在进行图像拼接的研究。在这里记下自己的一些想法与学习到的算法,欢迎大家交流与讨论。
图像拼接能够将具有一定重叠区域的图像拼接成连续大视场图像,很多手机内置有全景拍摄或者360度拍摄。图像拼接可分为三个步骤:1、图像匹配。2、图像矫正。3、拼接缝融合
这里写一些自己关于图像的匹配与矫正的研究工作,以sift为列的一般步骤是:
1、sift角点检测
2、特征点128维描述向量
3、kd_tree特征点粗匹配
4、Ransca仿射或旋转模型进一步剔除误匹配点
5、利用Ransca算出的变换矩阵,变换图像
这一流程方法在分析sift的博文中已经详细的进行了介绍。源代码:RobHess的sift源代码,源码中包含了以上所有的步骤,但是通过实验,发现匹配特征点对数较少,可能参数需要调整吧。
不过让我感兴趣的是文章"As-Projective-As-Possible Image Stitching with Moving DLT",作者主页中有源代码和实验数据,与一般全局变换矩阵不同的是,其先将变换偏移量映射到网格中,再计算网格交叉点与网格中的匹配点对的距离差,算出偏移矫正权重,最后网格偏移量乘以这一权重,这样做的好处是能够矫正全局变换带来的局部错位,但是可能会带来物体的变形扭曲。同时也比较依赖特征点的准确性,不过代码中实现的sift能够找到上千对的特征点,还是很给力的。