原伟杰 文中华 彭擎宇
(1.湖南工程学院计算机与通信学院 湘潭 411104)(2.湘潭大学计算机学院网络空间安全学院 湘潭 411105)
生活中拍照需要各式各样的相机,然而获取视角广阔、场景篇幅大的全景图像无论是在汽车导航、森林火灾监测以及军事领域等方面都具有广泛的应用[1]。要想获得这种要求的图像通常需要高级的广角镜头或者是超广角镜头,由于其高额的费用以及复杂的操作,图像拼接技术就产生了。图像拼接技术就是将两幅或两幅以上的图像进行拼接,组合成为一幅具有较大视野的图像。
图像拼接技术的两个关键技术是图像配准和图像融合。图像融合的质量取决于图像配准的精确度以及技术的创新。图像配准的常用方法有SURF[2]、SIFT、ORB 等,在此算法的基础上前人进行了很多关于图像拼接技术的研究。董强等使用Haar小波响应为每个特征点建立描述符,同时利用灰度信息和细节信息,大大提高了精确度[3];魏利胜等为了获取图像的低频成分,采用对图像进行分解的Haar 小波函数来实现,从而加快算法的运行速度,利用特征点约束的方向一致性和单向匹配等性质改善了拼接技术存在的问题,提高了实时性[4];邹承明等提出了在几何图像基础上配准的拼接方法,提升了图像拼接的效率[5];卢鹏等提出了一种将SIFT 算法与时间序列相结合的拼接方法,降低了维度,缩短了时间,融合效果更好[6];马强等对RANSAC 算法进行改进,减少了迭代次数,加快了拼接效率[7]。本文提出了一种基于SURF算法的图像拼接方法,首先在特征点提取时使用SURF 算法;再用FLANN[8~10]算法对特征点进行配对[11],并利用RANSAC算法来进行单适应性矩阵的计算[12],然后剔除错误的匹配点,最后对图像进行融合,实现图像的拼接。
SURF(Speeded-Up Robust Features)加速稳健特征,被广泛应用在特征点检测以及特征匹配等方面,于2006 年首先发表在ECCV 大会上[13~14]。该算法在保持SIFT 算子优良性能特点的基础上,同时解决了SIFT 算法复杂度高、耗时长的问题,对特征点提取进行了改进并且在其特征向量描述方面进行了改善,其算法效率得到了提升。具体步骤如下。
式子中Lyy、Lxy、Lxx是在高斯滤波后图像g(β)在其每个方向上的二阶导数。其二阶导数计算公式如下:
其中L(x)=g(h(x))(h(x)为原始图像的灰度值,L(x)是将h(x)高斯滤波处理后的图像)。
SURF 是SIFT 改进后的算法,主要是速度进行了提升,主要在于跟SIFT 相比,它的每一组图像大小都没有发生变化,变的是高斯模板的尺寸和尺度。除此之外,SURF去除了降采样的过程,因此提升了处理速度。
把经过Hessian矩阵处理的每个像素点与其邻域内的26 个点进行比较,找到其最大值与最小值并将其保留下来,初步定位出关键点,再经过滤除能量比较弱的关键点以及错误定位的关键点,筛选出最终的稳定的特征点。
首先将特征点所在区域划分为4*4 个矩形区域,每个区域有25 个采样点,在每个区域求出Harr小波特征的水平方向与垂直方向的绝对值以及值之和。最终就会得到一个4*4*4=64的64维向量,相比于SIFT 算法减少了一半。
对于图像的特征点匹配,常用的方法有BF(Brute Force)和FLANN(Fast Library for Approximate Nearest Neighbors)。
1)BF即暴力匹配。BF采用的是方法是对特征点进行遍历。首先从第一幅图像中选取一个特征点,然后对待匹配的图像中特征点进行遍历的同时并计算距离,记录每两数据间的距离,然后对这些距离进行排序,最后返回距离最短的那个特征点,所以通常会有大量的特征点错误匹配,后续需要对特征点的匹配结果进行提纯,从而提升匹配正确率[15]。
2)FLANN[16]即快速最近邻搜索。采用的是近似法,其算法复杂度低,但是找到的结果是最近邻近似匹配,主要通过Flann Based Mather 参数的调整来提升匹配度的精度提升或者算法速度。它可以很好地解决高维特征的问题。
误匹配点就是匹配过程中没有位置上与外观上相似的关系,因为符合算法将那些特征点匹配在一起,它的存在会影响到单应性变换矩阵的计算并且带来一定的误差。然而使用RANSAC 算法可以对匹配点进行提纯,提高精确度,最终计算出良好的单应性矩阵[17]。RANSAC 算法步骤如下。
1)根据假定模型所需要的数据从匹配对数据集M 中随机取出4对作为样本,代入公式计算出单应性矩阵,记为模型Q,确定好阈值;
2)计算出数据集中所有数据与模型Q 的误差,如果其误差小于提前设定好的阈值,就将其加入内点集P;
3)计算出内点在样本容量中占得比例,如果其比例小于阈值,就选择此时的参数矩阵Q;否则就重复上述步骤,直至符合要求。最终内点最占比例最大的模型就是待求的模型。
RANSAC 算法称为随机抽样一致性,是一种拟合模型,该算法能够在数据中存在大量噪声(有效点多于噪声)时,可以得到一个尽可能满足样本集中大部分样本对的变换模型,保证了模型参数的准确性,且该算法在大多数情况下较最小二乘法好[18]。
3.3.1 最大值法
最大值法其重点就是对将要拼接的图像[19]在重叠区域内对像素值进行比较,随后将选择将像素值最大的值来作为重合区域融合后图像的像素值,其计算公式如下:
f代表融合后图像,f1和f2表示待拼接图像。
3.3.2 加权平均法
和直接平均法不同,其重点在加权,方法是按照两幅图在重叠区域内的所占比例对像素进行权重的分配,选取一定的权值进行加权处理,从而实现像素值的平滑过渡[20]。该计算公式如下:
上述三者为公式的约束区间;w1和w2分别代表重叠区域内两幅图像像素点的权值,同时w1和w2满足关系w1+w2= 1(0<w1<1,0<w2<1);从其计算方法来看,跟平均法差不多,主要差别在于其权重随着重叠区域的宽度发生变化,从而实现融合区域像素变化的平滑性。
本算法设计主要是为了解决在图像拼接中存在的拼接痕迹明显,存在清晰的颜色变化等问题。提出了基于SURF 算法,充分利用其速度优势,速度是SIFT 算法的3 倍;结合OpenCV 中携带的FLANN 算法,利用其复杂度低,搜索速度快且可以调整参数的优点;加上RANSAC算法可以对误匹配点进行剔除来优化匹配结果,最终利用加权平均法,四者结合来解决图像拼接中存在的问题。
SURF、FLANN、RANSAC 三者结合的图像拼接框架图如图1所示。
图1 图像拼接流程图
SURF、FLANN、RANSAC 三者结合的图像拼算法流程如下。
第1~4 行是对图片进行输入并进行灰度化的一个处理;第5 行是采用SURF 算法对图片进行特征点的识别与描述;第6 行是用FLANN 算法对特征点进行配对;第7 行是调用RANSAC 算法进行误匹配点的剔除并进行单应变换矩阵的计算;第8 行是运用加权平均法对图片进行融合,最后输出拼接图像。
下面对SURF算法进行解释,其过程如下。
第1 行是设置海森矩阵参数,参数越大,越精准;第2~5 行是对两幅带拼接的图像进行特征点检测;第6~9行是对特征点进行描述,其中第2行和第6行是对SURF 算法进行调用。
下面对FLANN 与RANSAC 算法进行解释,其过程如下。
第1~3行是对FLANN 函数进行调用;第4行是对最大值、最小值初始化并进行赋值;第6~13 行是来遍历寻找最大最小距离;第13~16 行是对所求的匹配点进行配对,找到最有匹配对;第17 行直接调用RANSAC算法进行单应矩阵的计算,并将经过单应矩阵变换过后的图像进行保存。
下面对WARP算法进行介绍,其过程如下。
第1~6 行对图像进行拼接,其主要是对权重进行计算并将重合区域的像素进行分配,尽可能好地得到结果。
本实验的所有操作均在一台处理器为Intel Core i5-3320 2.90GHz,内 存8GM,操 作 系 统 为Win10,实验平台为Visual Studio 2010 和图像处理库OpenCv 2.4.10。
在实验的匹配阶段,经过SURF 算法进行特征点寻找之后,分别用BF 算法匹配和FLANN 算法进行匹配实验,并对其匹配结果进行对比,以验证所用方法的优劣性,图2 和图3 分别是待拼接图像1与待拼接图像2,图4 和图5 分别是FLANN 特征点匹配结果图与BF特征点匹配结果图。
图2 待拼接图像1
图3 待拼接图像2
图4 FLANN匹配结果图
图5 BF匹配结果图
通过看匹配结果图,可以明显看出,基于BF的暴力匹配算法匹配方法存在大量的匹配错误点,而FLANN 方法匹配效果良好,无明显错误,因此本文采用FLANN方法进行特征点的匹配。
在融合图像时也采用了两种方法,分别是最大值法与加权平均法,图6 和图7 分别是加权平均法与最大值法的拼接效果图。
图6 加权平均法
图7 最大值法
从实验结果可以看出:最大值法虽然能较快得到结果,但是可以发现有明显的拼接痕迹,而且拼接区域出现了明显的色差变化;然而加权平均法得到的结果,可以看出没有拼接痕迹不明显,整体看起来也自然,其拼接效果要好于最大值法。
本文针对在图像拼接过程中特征点匹配错误率高、匹配速度慢和拼接色彩变化明显的问题,通过结合RANSAC 与SURF 算法,在匹配阶段采用了FLANN 方法来提高匹配正确率,同时为减弱图像融合时有颜色明显变化以及存在的拼接痕迹,采用RANSAC 算法进行误匹配点的剔除,并且采用加权平均法进行图像的融合,消除了颜色的突兀变化减弱了拼接痕迹,其匹配效果更好。实验结果表明,本文采用的方法在匹配正确率方面良好、鲁棒性强。