周高磊,黄敏青
(四川大学计算机学院,成都610065)
现实生活中,人们对大场景图像的获取通常有两种途径。第一种为单个摄像头利用调整焦距的方式变换拍摄场景大小,采用这种方式的一个缺点就是场景的细节往往不能满足需求。第二种为通过图像拼接的方法,将多个摄像头采集到的具有重叠区域的图像拼接起来获得一幅大场景的图像,该方式能得到场景信息更丰富的图像。因此图像拼接算法的研究有非常重要的现实意义。
目前大部分关于图像拼接算法的研究都是基于图像配准与图像融合。图像配准是对两幅具有一定重合区域的图像进行几何变换关系的匹配,把两幅图像变换到相同坐标系,实现图像重叠区域的对齐。学者提出了多种图像配准方法,但大体上可以分为以下几类。第一种:基于图像灰度值的配准。该方法通过计算待配准图像之间相同尺寸区域的相似性度量来实现配准;第二种:基于频率域的匹配[4]。将待配准图像变换到频域再进行匹配;第三种:基于特征点的提取与匹配。该方法首先提取图像中的特征点,然后利用良好的匹配特征点对计算单应性变换矩阵,从而实现图像配准。前两种方法有其不足与局限性,而基于特征点的匹配方法具有良好的效果和鲁棒性,所以该方法得到了广泛的应用和发展。
Lowe 于2004 年提出了SIFT(Scale Invariant Features Transform)[1]特征点提取算法。该算法在Dog 金字塔的基础上进行特征点的定位,然后为每个特征点指定主方向,通过统计梯度直方图来为每个特征点建立128 维的描述子。Dog 金字塔的引入和主方向的选取使其提取的特征点具有尺度不变性、旋转不变性,而它的缺点就是计算量大。为了降低特征点提取过程计算量,2006 年,Bay 等人提出了SURF[2]算法。SURF 使用不同尺度的盒滤波器与图像卷积来构建图像金字塔,从而使特征点检测的运算具有并行性。在提取特征描述子上,SURF 算法通过统计一定区域内Harr 小波响应获取主方向,然后给每个特征点建立64 维的描述子,描述子维度远低于SIFT。因此,SURF 算法计算速度更快,性能更加稳定,同时其生成的描述子具有良好的区分性。因此本文的特征点提取方法将采用SURF。
图像拼接中融合方法通常有:加权融合、最优拼接缝融合[9]、多频带融合[3]。加权融合方法及其变种简单易于实现,可以使重叠区域融合过度自然,在大多数场景下其性能不亚于复杂的融合算法。多频带融合(multi blend)的目的也是为了使重叠区域过度自然、无明显缝隙,其思想是:在图像的不同分辨率下采用不同的权值进行融合,最后将各个分辨率下的结果综合。其拼接效果良好,但与加权法相比较,增加了时间复杂度。最优接缝融合是在寻找重合区域最佳接缝的基础上进行融合,最优接缝与其他融合方法的配合可以带来很好的效果。但接缝寻找过程带来的时间消耗与其提升的拼接效果之间需要一定权衡。本文将使用的渐入渐出融合方法是加权融合方法的一个变种,该方法可以使重叠区域融合过度自然,拼接效果能很好地满足要求。
图像配准是拼接过程的第一步。为提高配准效率,本文使用SURF 算法提取特征点,并且提取特征点过程只在重合区域进行。特征点匹配阶段使用暴力枚举匹配算法,该方法稳定可靠。通过对重叠区域进一步分块,匹配过程只在各对应分块之间进行,这样可以降低特征点匹配的搜索空间大小,加快匹配过程。特征点匹配完成后,利用RANSAC 方法计算出最优的单应性矩阵,完成配准。
SURF 算法中文名为“加速鲁棒性特征”。SURF 特征检测的步骤:
(1)尺度空间的极值检测:搜索所有尺度空间上的图像,通过Hessian 矩阵来识别潜在的兴趣点。
(2)过滤特征点,并进行精确定位。
(3)主特征方向赋值:统计特征点圆形邻域内的Harr 小波特征。在60 度扇形内,每次将60 度扇形区域旋转0.2 弧度进行统计,将值最大的那个扇形的方向作为该特征点的主方向。
(4)生成特征点描述符:在特征点主方向周围的邻域内,取4×4 个小矩形区域,统计每个小区域的Harr特征,每个区域计算出一个4 维的特征向量。因此,每个SURF 特征点由一个64 维的特征向量作为描述子。
为使提取的特征点具有尺度不变性,SURF 算法首先要对图像进行高斯滤波,其公式如下:
等号右边为高斯函数与原图像的卷积,σ 为模糊系数。高斯函数应用不同的σ 构成了所需要的尺度空间。滤波以后构建Hessian 矩阵,构建Hessian 矩阵的目的是为了生成稳定的边缘点,为特征提取做准备。经过滤波后的Hessian 矩阵表达式如下:
从公式(2)可以得出hessian 矩阵的行列式值为如下公式:为了提高运算速度,SURF 算法使用盒式滤波器来替代高斯滤波器。但是为了平衡因使用盒式滤波器近似所带来的误差,需要在Lxy上乘一个加权系数ω。此时的H 矩阵行列式值表达式为:
SURF 特征点的定位过程和SIFT 算法一致,将经过Hessian 矩阵处理的每个像素点与其图像域和尺度域的所有相邻点进行比较,找出潜在的极值点,这些点就是侯选特征点。
SURF 算法中,在特征点的圆形邻域内统计60 度扇形内所有点的水平、垂直Harr 小波特征总和。然后扇形以0.2 弧度大小的间隔进行旋转,再次统计该区域内Harr 小波特征值。最后将值最大的那个扇形的方向作为该特征点的主方向。
计算出主特征方向后,在特征点周围以主方向为准的一个边长为20σ的正方形框,将其分为4×4 个子区域,分别在每个子区域内选取25 个像素,计算其水平方向与垂直方向的Haar 小波特征。至此,每个子区域得到一个4 维描述符向量,每一维分别表示水平和垂直方向Harr 小波响应之和、水平方向绝对值之和以及垂直方向绝对值之和。所以SURF 特征描述子的维度为64 维。小波响应的光照不变性赋予了SURF 特征描述子对光照变化不敏感的特性。
为提高配准过程的效率,本文提出的改进配准思想基于只提取待拼接图像重叠区域特征点,以及特征点匹配时对重叠区域再次分块以加速匹配过程。两相机位置固定的拼接场景下,如图1,其重叠区域可以从拍摄出的图像大致确定。
假设待拼接图像为Ileft和Iright。其中两图像重叠区域的大小占原图像的。提取两幅图像全局的特征点所需要的时间为T1。则只提取两幅图像重叠区域特征点理论上所带来的时间消耗tlocal为如下公式:
图1 相机位置示意图
提取出两幅图像重叠区域的特征点之后,采用暴力枚举匹配算法对两幅图像特征点进行匹配。根据该匹配算法的特点,对重叠区域进一步分块,如图2。对应块之间进行匹配,可以缩小特征点匹配的搜索空间。假设不对重叠区域分块的情况下,特征点匹配过程的耗时为T2。假设重叠区域分为n 块,左图Ileft中每一块内含有的潜在特征点个数为l1,l2,…,ln;右图Iright中每一块内含有的潜在特征点个数为r1,r2,…,rn。假设n 为2,此时tpart为如下公式:
图2 待配准图像分块示意图
从上述两个公式很容易地看出,一般情况下改进后的配准方法可以很大程度地提高配准效率。极端情况下分块之间的特征点分布非常不均匀,有的特别少,有的特别多。此时虽然分块的配准不能加速匹配过程,但局部的特征点提取还是会起到提高效率的作用。
因为特征点匹配过程存在误匹配点,可能会给单应性变换矩阵计算带来误差。而使用RANSAC[5]算法可以达到提纯匹配特征点对,计算出良好单应性矩阵的目的。单应性变换模型是图像拼接中使用的经典模型。待拼接图像对应点之间的几何变换关系可以由以下公式表示:
RANSAC 算法剔除误匹配点,同时计算出最优单应性变换矩阵的流程如下:
(1)根据单应性变换模型所需参数数量在数据集中随机采样样本。
(2)根据1 中采样到的数据点计算出单应性变换矩阵H。
(3)将所有的数据样本代入2 中求出模型参数H,若某样本对误差小于一定阈值则视为内点。计算出内点在总数据中所占的比率。如果该比率大于设定阈值,则接受此时的参数H。再利用所有内点重新计算更准确的H。
(4)若内点所占比率小于设定阈值,重复步骤(1)-(3)。
利用RANSAC 算法进行模型估算,可以得到一个尽可能满足样本集中大部分样本对的变换模型。多次随机采样初始点的方法,有效消除了误匹配特征点对给模型估计带来的影响,保证了模型参数的准确性。
为了保证拼接质量,使融合后的重叠区域无明显缝隙、且过度自然,在拼接的最后一步本文采用了渐入渐出加权融合算法。根据待融合像素点距重叠区域左边界的距离,不断改变左右两幅图之间像素点融合时的加权因子,以实现拼接后的图像重叠区域内像素值光滑变化。该融合方法可以由以下公式表示:
其中I1,I2为待拼接图像,I 为拼接后的图像。加权因子α=w,其中w 为重叠区域的横坐标宽度,wd为重叠区域像素点距重叠区左边界的横坐标距离。可以看出α 的变化范围从0 到1。
为了验证本文改进算法的可行性与有效性,对多组图像进行实验,拼接效果和速度与OpenCV 拼接算法进行对比。算法实现使用OpenCV 4.1.0,运行环境为Windows10+VS2019 ,计算机配置为Intel Core i5 3.2GHz 和8GB RAM。其中配准过程重叠区域大小为原图的1/3,重叠区域分块数量n 的大小取2。
图3 为第一组待拼接图像white car 的左图和右图;图4 为第二组待拼接图像houses 的左图和右图。
图3 white car左右图
图4 houses左右图
图5 为OpenCV 拼接后的效果图。图6 为本文算法拼接后的效果图。
图5 OpenCV拼接效果
表1 为重叠区特征点分块匹配与非分块匹配的时间消耗对比,以white car 为例。其中Hessian 矩阵的阈值决定提取到特征点的数量,值越大提取到的特征点越少。表2 为本文拼接算法耗时与OpenCV 拼接算法的耗时对比。
表1 重叠区特征点分块匹配与非分块匹配的时间消耗(ms)
表2 本文拼接算法与OpenCV 拼接算法时间消耗(ms)
由表1 可以看出分块匹配的方法相较于非分块的方法效率上的提升是明显的。每一分块的特征点只与另一图像中其对应块的特征点之间匹配,缩小了暴力枚举匹配的搜索空间,因此效率有很大的提升。图像拼接算法尚无客观的评价指标,只有通过人为主观的评价。从表2 与图5、图6 结合来看,本文提出的拼接算法在提高效率的同时还具有良好的拼接效果。
本文针对固定相机平台下直接应用现有图像拼接算法存在的效率问题展开研究,在现有图像配准方法上提出改进。首先在图像特征点提取部分采用了鲁棒性和运算效率较优的具有旋转尺度,以及光照不变性的SURF 算法。提取特征点时根据固定平台的重合区域特点,在达到配准要求并降低时间消耗的目的下,本文算法只提取图像的局部特征点。特征点配准阶段对重合区域进行分块,达到减小特征空间搜索的范围,进而缩短了匹配用时。融合阶段采用渐入渐出加权法使融合重叠区域时像素值平滑过渡。实验表明本文算法不仅具有较高的拼接效率,拼接效果也能满足实际需求。