当前位置:首页 期刊杂志

基于Brisk和Sift的快速图像拼接

时间:2024-08-31

杨 爽,潘 倩,杨 培,田 芳

(青海大学计算机技术与应用系,青海 西宁 810016)

图像拼接是将两张或多张具有重叠区域的图像拼成一幅无缝的全景图或高分辨率图像,其在无人机航拍、遥感图像、增强现实、视频压缩和图像稳定等领域有着广泛的应用[1]。图像拼接的主要步骤包括图像预处理、图像特征点检测与配准、图像融合[2]。其中图像特征点检测与配准中使用的特征描述符对图像拼接至关重要,其性能直接影响拼接结果的质量及拼接过程的时间开销。

常用的基于特征的特征检测方法中,Sift算子因对旋转、尺度变换、亮度变化等的稳定性被广泛应用[3]。但Sift算子存在计算复杂度高、耗时长的问题[4-5]。Orb算子实时性能表现突出,但存在算法匹配精度低和特征点提取稳定性差的缺陷[6-7]。Brisk算子是另一种具有较好实时性的特征描述算法,由Leutenegger在2011年提出[8]。相对于其他特征算法,Brisk算子对模糊图像的拼接具有一定的优势[9],但在稳定性和精度方面相对于Sift算子表现较差[10-11]。为提升基于Sift算子的图像拼接性能,本文提出了一种基于Brisk和Sift的两阶段图像拼接方法。

1 Sift、Brisk特征检测算法

Sift(Scale-invariant feature transform)是一种局部性特征描述子,其在空间尺度中寻找极值点,并提取出位置、尺度、旋转不变量。Sift特征检测算法可概述为4部分:(1)建立高斯金字塔及差分金字塔;(2)进行DOG空间极值点检测,并在其附近对其泰勒展开进行拟合,用于亚像素定位;(3)关键点邻域像素的梯度方向分布特性为每个关键点指定方向参数;(4)生成描述符。其中,为了使描述符具有旋转不变性,需要为每一个关键点分配一个或多个基准方向。高斯平滑图像L在点I(x,y)处梯度的方向θ(x,y),梯度方向的计算如公式(1)所示:

(1)

Brisk(Binary Robust Invariant Scalable Keypoints)是一种二进制特征描述算子,算法主要包含特征点检测、特征描述2步。首先,构建尺度空间,并通过FAST9-16进行角点检测,提取尺度空间中亚像素级精度的稳定极值点。然后,利用局部图像邻域内均匀采样点对的距离关系进行二进制编码,建立局部图像的二值特征描述子。在提取特征点并对特征点进行描述的同时,计算该点邻近区域的灰度差值,在任意选取的一对采样点中估计部分区域的梯度变换,两采样点之间的梯度计算公式如下所示:

(2)

描述符生成需要应用短距离点对集合S,与其他二进制描述符生成过程类似,对短距离点对随机采样生成512位的二进制串。

2 基于Brisk和Sift的快速图像拼接算法

图像拼接过程中,时间开销主要取决于特征点检测与特征点匹配两个步骤。图1为一组拼接图像Sift特征点的检测及匹配结果。由图1可知,可成功匹配的特征点全部位于参考图和待拼接图的重叠区域,且可成功匹配特征点数目占参考图和待拼接图像检出特征点的比例较低。由于Sift算子特征计算具有时间开销大的特点,基于Sift算子的图像拼接过程中,对非重叠区进行Sift特征点检测和匹配增加了拼接过程的时间消耗。

图1 拼接图像Sift特征点的匹配示意Fig.1 Matching sketch of Sift feature points in stitching image

基于以上分析,本文提出一种结合Brisk和Sift的两阶段图像拼接方法。图2为本文方法的流程图,其中第1阶段用于实现对重叠区域的估计,第2阶段对估计的重叠区进行基于Sift特征的图像拼接。第1阶段进行重叠区估计过程中,首先根据Brisk算子对模糊图像鲁棒的特性,对参考图像及待拼接图像进行均值滤波,该操作可有效降低Brisk特征点检出数量。对滤波处理后的图像进行Brisk特征点检测及基于Brute Force、RANSAC及最小二乘方法的特征点匹配、筛选及单应性矩阵估计,进而实现重叠区的大致估计。第2阶段中,仅在第1阶段获取的重叠估计区域进行Sift特征点的提取。通过第1阶段初步确定重叠区域后,可有效降低Sift算子检测的区域面积,从而减少Sift特征检测环节的时间开销,提升整个拼接过程的效率。

图2 本文算法流程Fig.2 Algorithm flow of this paper

本文基于Brisk和Sift的两阶段快速图像拼接算法具体过程如算法1所示。

算法1 基于Brisk和Sift的快速图像拼接输入:参考图像P1,待拼接图像P2输出:拼接图像R1.使用均值滤波对P1、P2进行平滑得到P1′、P2′;2.使用Brisk对P1′和P2′进行特征检测;3.使用Brute Force进行特征匹配;4.RANSAC剔除误匹配,使用最小二乘法估算变换矩阵;5.生成参考P1和参考P2的透视变换矩阵;6.计算大致重叠区C1、C2;7.使用Sift对C1、C2进行特征检测;8.检测出的特征点坐标定位到P1、P2;9.使用FLANN进行特征匹配;10.RANSAC剔除误匹配,使用最小二乘法估算变换矩阵;11.生成参考P1的透视变换矩阵;12.计算出拼接图像R。

3 结果与分析

对基于Sift特征提取的图像拼接、基于Brisk特征提取的图像拼接和基于本文算法的图像拼接在pycharm 2019.3.3上进行仿真实验,实验机器为64位windows10系统,内存12 GB,处理器主频2.50 GHz。本实验选用了尺寸不同,重叠区占比不同的4组图片进行算法性能测试,均为智能手机采集的真实场景图。使用的最小尺寸为800*600,最大尺寸为4 000*3 000。

3.1算法效率分析基于Sift算子的图像拼接,使用同本文算法的FLANN匹配器,RANSAC剔除误匹配,最小二乘法估算变换矩阵。基于Brisk的图像拼接,使用同本文算法的Brute Force匹配器,RANSAC剔除误匹配,最小二乘法估算变换矩阵。表1为在4组测试图上Brisk算子与本文前处理中基于均值滤波的Brisk算子特征检测及配准耗时对比。实验结果表明,未经均值滤波的Brisk算子,在图像尺度增大时,检测到的特征点数激增,匹配耗时随之增加。使用均值滤波对拼接图像进行平滑,实现对图像中重要纹理细节的筛选,能降低Brisk特征点的检出数量,提升特征点的检出质量,提高特征检测和配准过程的精度及效率,实现了参考图像及待拼接图像重叠区的快速估计。

表1 Brisk算子与均值滤波基础上的Brisk算法特征检测及配准耗时

表2为在4组测试图上Sift算子与本文前处理基础上的Sift算子特征检测配准耗时对比。由于本文的Sift算子只在重叠区上进行特征检测,提取和配准减少的时间开销与重叠区面积成反比。在#3图组中,由于重叠区面积占比较大,本文在前处理基础上的Sift算子在特征检测时间开销相比之下减少较少。当重叠区面积占比小时,本文算法可大幅度减少Sift算子在特征提取和配准方面的时间开销。

表2 Sift算子与前处理基础上的Sift算子特征检测及配准耗时

为验证本文算法对Sift算子的时间提升与重叠区域大小之间的关系,在3个拼接场景中进行实验分析,每个拼接场景包含9组拼接图像,重叠区域占比范围为5.29%~81.83%,其中重叠区域占比的计算方法如公式(3)所示,C1w、C1h、Rw、Rh分别为重叠区宽度、重叠区高度、拼接图宽度、拼接图高度。

(3)

图3为重叠区面积占拼接图像面积比例与时间提升比例间的关系。如图3所示,时间提升比例随重叠面积增加逐步减少,重叠占比不高于30%时(重叠区面积占参考图或待拼接图的平均比例约50%),本文算法可获得不小于30%的时间提升。

图3 重叠面积对图像拼接时间开销的影响Fig.3 Effects of overlapping area on the image stitching time

表3为基于Sift特征提取的图像拼接、基于Brisk特征提取的图像拼接和基于本文算法的图像拼接整体耗时对比。实验结果表明,本文算法整体耗时开销优于Sift算子及Brisk算子,第一组测试图像中,由于图像尺度较小,对图像整体特征提取及局部特征提取耗时区别不大,本文算法由于要做两次图像配准,整体耗时稍多于基于Sift算子的图像拼接。

表3 基于Sift算子、Brisk算子与本文算法的图像拼接整体耗时

当测试图尺度较大时,如第4组测试图像,对测试图整体进行特征提取与对局部进行特征提取的耗时可有较大的区分,基于Sift算子的图像拼接整体耗时可得到明显优化。

3.2拼接效果分析图4~图7为3种算法在4个拼接场景上的拼接结果。其中图像融合阶段,重叠区像素使用了参考图和待拼接图对应像素的最大值。图4拼接结果中,由局部放大图像可看出,图4c和图4d中,拼接缝附近的楼体下半部分均有轻微凸出。而本文算法拼接结果中(图4e),楼体边缘呈直线无明显凸出。在图5的拼接结果中,图5c与图5e都可以准确地将落叶位置配准,画面清晰,Brisk算子拼接结果(图5d)在落叶位置存在重影的现象。在图6的拼接结果中,放大拼接缝附近的树枝枝干可看出,Brisk算子的拼接断痕相对于Sift算子和本文方法较明显。图7为第4组拼接场景的拼接结果,其中,本文方法(图7e)在拼接线处,小汽车的车身部分及车轮下方光斑处拼接效果明显优于Sift算法(图7c)与Brisk算法(图7d),拼接处只出现了轻微的错位现象。本文算法由于对重叠区局部进行Sift特征提取,匹配及求解单应性矩阵时可增加重叠区特征点的影响,进而取得更好的拼接效果。综合3种算法在4组测试场景中的拼接结果可知,本文算法相较于Sift算子和Brisk算子,可对重叠区的物体边缘等纹理丰富区进行更好的拼接,拼接结果重叠区的重影现象相对较弱,验证了本文算法的有效性。

图4 3种算法在#1上的拼接效果Fig.4 Stitching effects of three algorithms on #1

图5 3种算法在#2上的拼接效果Fig.5 Stitching effects of three algorithms on #2

图6 3种算法在#3上的拼接效果Fig.6 Stitching effects of three algorithms on #3

图7 3种算法在#4上的拼接效果Fig.7 Stitching effects of three algorithms on #4

4 讨论与结论

图像拼接具有广泛的应用领域,图像拼接中常用的特征检测算子中,Sift算子相比Brisk算子具有更好的稳定性[5,10-11],Brisk算子相比Sift算子具有更好的实时性,且对于较大模糊图像有良好表现[9]。为降低Sift算子在图像拼接中特征检测和特征配准的时间开销,本文提出了一种基于Brisk的Sift特征检测图像拼接算法,使用Brisk算子在进行了均值平滑的测试图上进行特征检测及配准,快速提取重叠区域;再使用Sift算子在重叠区域上进行特征提取并配准,减少Sift算子计算的面积,以此降低时间开销。为验证本文算法的有效性,使用智能手机采集的4组不同尺寸的测试图,对基于Sift算子、Brisk算子、本文算法的图像拼接进行了算法效率及拼接效果对比实验分析。实验结果表明:(1)在引入了Brisk算子的前处理后,本文的Sift算子在特征检测及配准方面时间开销要少于Sift算子及Brisk算子。当重叠区面积占比较小而测试图尺寸较大时,时间开销方面的优化尤其明显。(2)本文算法保留了Sift算子在特征检测方面的稳定性及精准度[3],拼接图整体效果优于Sift算子及Brisk算子。当重叠区域面积占比较小而测试图尺寸较大时,本文算法相比之下可取得更好的拼接效果。

本研究从降低Sift算子在图像拼接特征检测及配准方面的时间开销的角度,提出了一种基于Brisk的Sift特征检测图像拼接算法,为实现Sift算子的快速检测配准提供了算法。但如何实现前处理中均值滤波的自适应,仍有待进一步研究。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!