第一步:简单的图像拼接:
简单的图像拼接
- 对每幅图进行特征点提取,选择速度更快的ORB特征,并结合图像金字塔增强尺度变换的鲁棒性。
计算速度: ORB>>SURF>>SIFT(各差一个量级)
旋转鲁棒性: SURF>ORB~SIFT(表示差不多)
模糊鲁棒性: SURF>ORB~SIFT
尺度变换鲁棒性: SURF>SIFT>ORB(ORB并不具备尺度变换性)
2、对特征点进行匹配
KD树搜索。
3、进行图像配准
计算单应矩阵,DLT。
4、把图像拷贝到另一幅图像的特定位置
5、融合两幅图像
两图因为光照色泽的原因使得两图交界处的过渡模糊,需要特定的处理解决这种不自然。简单的方法是加权融合,在重叠部分由前一幅图像慢慢过渡到第二幅图像,即将图像的重叠区域的像素值按一定的权值相加合成新的图像。
实现一个图像的线性渐变,对于重叠的区域,靠近左边的部分,让左边图像内容显示的多一些,靠近右边的部分,让右边图像的内容显示的多一些。用公式表示就是,假设 alpha 表示像素点横坐标到左右重叠区域边界横坐标的距离,新的像素值就为 newpixel = 左图像素值 × (1 - alpha) + 右图像素值 × alpha 。可以实现一个简单的融合效果。
6、多频段混合
基于07年马修.布朗等人的论文:
Automatic Panoramic Image Stitching using Invariant Features
过程:
natlab实例:
目标:将图像2移到图像1右边。
思想:求出满足x2=H*x1的单应H,因此将x1的横坐标扩展,由x1右侧坐标求出在图像2中的对应点。
输入图像1:
输入图像2:
关键步骤:
Step1 求出单应矩阵H,满足
X2=H*x1
Step2 计算图像的重叠范围。
针对重叠区域的横坐标范围,将图1的右上和右下坐标映射至图像2中,表示图1与图像2的横坐标重叠范围。在融合图像中满足:
x_cor=W-round(max([new_corner(1,3),new_corner(1,4)]));
step3 图像拷贝
结果:
step4 混合图像的重叠区域: 宽度: x_cor:W
融合算法的输入图像,分别选取图1和上图映射后图2的公共区域。
结果: