图像拼接是利用连续帧图像生成全景图或更高分辨率的图像,通常图像拼接技术需要消除图像拼接部分的缝隙间隔,因些需要进行重叠区域匹配修复。通常图像拼接分为以下三个步骤:
⑴特征点检测。图像拼接操作对序列图像一般要求重叠区域不少于10%,对序列图像进行特征点检测,可利用OpenCV中提供的角点检测方法来对序列图像进行特征点提取。特征点筛选采用RANSAC提取有效样本特征点,OpenCV提供了函数FindHomography,可以进行特征筛选,同时可以计算出3×3转换矩阵。
⑵图像标定。计算出两幅图像之间的最优空间位置和色彩之间的变换关系,该映射关系矩阵能有效地将一幅图像中的点最优地映射到另一幅图像中,映射关系矩阵是该步骤的核心,根据上一步骤中得到的转换矩阵可计算出对应的透视变换。
⑶图像融合。根据标定步骤得到图像的输出投影,同时调整图像的空间颜色,以弥补曝光差异。缝隙调整是为了最大限度地减少图像之间拼接缝隙的可见性,最后对得到的图像进行事以得到全景图。
OpenCV提供了图像拼接类库Stitcher可完成图像间的缝合连接。Stitcher包含多个成员函数,estimateTransform函数实现匹配给定图像及估计每个摄像机的旋转矩阵;composePanorama函数实现组成给定图像的偏移,将图像偏移存储在内部并可供其他函数调用;stitch成员函数实现拼接给定图像。
OpenCV下实现图像拼接的代码如下:
代码中用到的三张图像的下载链接为:http://pan.baidu.com/s/1miuBZNq
说明一下:代码中stitch函数使用Stitcher类实现图像拼接,而stitch2则自己实现算法,并且stitch2只能实现两幅图的拼接
代码请访问博文https://blog.csdn.net/lehuoziyuan/article/details/84382302获取
代码请访问博文https://blog.csdn.net/lehuoziyuan/article/details/84382302获取
代码请访问博文https://blog.csdn.net/lehuoziyuan/article/details/84382302获取
运行结果如下图所示: