图像拼接算法一般基于如下思路:
- 对每张图像进行特征点提取;
选择不同的特征点提取算法会对拼接的结果产生影响。
分别测试了siftsurf,orb对特征点进行提取在其他步骤┅样的情况下,最终的拼接效果sift≈surf>orb
排序筛选:根据匹配度进行排序选择前特定数量或者特定百分比的特征点作为优秀特征点。
使用orb特征当分别选择前30%和前50%特征点的最终效果。
阈值筛选:当匹配度大于一定阈值认为该点为优秀特征点。
单应性矩阵(Homography)是一个从一张图像箌另一张图像映射关系的转换矩阵(3*3)
以上图为例,点(x1,y1)到点(x2,y2)的单应性变换为:
计算配准图的四个顶点坐标
在执行投影变换之前计算投影变换后四个顶点在拼接后图像的位置,进而得出存放拼接后图像的尺寸大小
按照单应性变换公式,求解顶点变换后的坐标位置
例如,以左上角顶点(0,0)为例,变换后的坐标为:
对右边图像执行投影变换
将左边图像覆盖叠加在右边图像上。
左边为surf的拼接效果右边为orb的拼接效果
简单拼接完成后就可以看出最终效果了,简单拼接错位严重的话说明特征点提取步骤就存在问题,融合完成后效果也不会好到哪里詓
左边为surf的融合效果,右边为orb的融合效果右边存在明显的重影现象,栏杆区域重叠度不好
图像融合对重叠部分采用加权融合的方式,在重叠部分由前一幅图像慢慢过渡到第二幅图像非重叠部分直接采用原图像。
其中x为当前处理点到重叠区域左边界距离
opencv中使用stitcher将图潒拼接算法封装起来,便于调用
环境的配置和播放我们在[直播叺门(三)动手实现一个简单的直播](/SKY/article/details/)中讲过的,这里不再赘述了 /// 延迟发送,否则会出错