一种多方向感知的高实时性视频融合算法
2021-10-18唐清善
莫 维,唐清善,黄 涛
(1.长沙理工大学物理与电子科学学院,湖南 长沙 410114; 2.中国人民解放军第3303工厂,湖北 武汉 430200)
0 引 言
单个相机拍摄的图像分辨率和拍摄视角具有上限,被拍摄物体实际分辨率的大小受自身所在位置约束,物体越靠近相机,物体本身分辨率越高,但相机视场角越小,反之同理。同一场景下分辨率和视场角的对立关系使得两者不能兼顾,无法满足人眼视觉的最佳要求。全景视频通过全景相机或者数个相机拼接合成能够得到分辨率高、视场角大的影像[1],在视频监控[2]、无人驾驶[3]、视频会议[4]、虚拟现实[5]等众多领域应用广泛。
图像拼接是视频拼接的基础,本质都是将多个具有重叠区域的不同视角的图像融合成一个大视场图像[6]。目前来说,图像拼接方面的研究日渐成熟,而视频拼接需要花费更多且难度更大,仍然有很多问题需要解决[7]。比如,视频中前景运动对象周围存在的伪影、视差、幻影等会大大增加拼接的难度[8],即使是固定好相机模组的光学中心,在实际拍摄过程中,也难以避免滚动和俯仰。略微滚动或倾斜就会给图像直接造成伪影与失真[9],理想条件经常无法满足,各视频光心不在同一点。视频每帧若各自独立拼接,则将严重影响视频的时空一致性,且计算复杂、实时性差[10]。
当前,视频拼接方面有研究者做了大量的研究。文献[11]采用具有固定视差的双鱼眼镜头,将大视角鱼眼画面通过网格变形投影到球面模型上来,能经济高效地实现360°全景视频拼接,但鱼眼镜头本身存在大的画面畸变,拼接的视频不能很好地满足人眼视觉要求且分辨率不高。文献[12]基于模板帧图像的圆柱全景视频拼接方法,实现了360°全景拼接,并基于AR设备实现拼接视频的透视观察,利用GPU加速平台能够实时拼接。文献[13]在缝合线寻找阶段引入前景约束项,在隔离移动前景之外的区域找到最佳缝合线,该方法能够解决前景不断移动带来的视差、伪影问题。文献[14]用一种边缘引导方法来缝合重叠区域较小的视频,在边缘的指导下计算网格中的局部扭曲矩阵,能够提升图像对齐精度,减轻了前景移动所产生的伪影。文献[15]着手于相机抖动问题,以摄像机与摄像机的相对运动和视频帧与视频帧的相对运动为参照,拟合出一条最优的摄像机路径,能完美解决相机之间的抖动问题,但是由于计算复杂度过高,无法达到实时效果。
本文输入恒定摄像机位置的多个同步视频流,利用SIFT(Scale Invariant Feature Transform)和基于单应性矩阵算法建立背景模型,并改进一种全方向感知融合方法,在处理不同曝光等场景中的影像时实时性很好。
1 算法整体流程
本文提出的多方向感知加权融合方法流程如图1所示:首先,选取尺度不变特征变换SIFT算法提取初始图像的特征和描述子,得到特征描述子集;然后,采用2NN(2 Nearest Neighbor)方法将描述子集进行第1次匹配;接着,基于RANSAC(RANdom SAmple Consensus)误匹配删除算法进行第2次匹配,计算出全局单应性矩阵,结合投影变换将输入图像投影到同一视角;最后,在公共区域融合计算出的缝合线,得到最终影像。
图1 视频拼接系统方案流程
2 相机参数计算
2.1 SIFT特征检测
SIFT[16]全称尺度不变特征变换,它将图像信息主要表现的特征点抽象成周围像素点的相互信息形成的高维向量,故图像提取的SIFT信息为一个高维向量的集合,图像的仿射变换、投影变换、亮度变换不会影响这个集合,是一种综合能力很强的特征描述算法,得到的高维向量集合具有非常好的鲁棒性。本文采用SIFT算法提取待拼接图像的特征点集合。
2.2 单应性矩阵与RANSAC算法
在计算机视觉范畴内,单应性[17]可应用于图像拼接中视角转换,通过计算各个角度影像的视角位置,将视角不同的影像转变到统一视角下,即可完成初步图像拼接。
当待配准影像视角上有变化或者出现源图像中没有出现的区域,特征匹配点对集合会出现错误配对,但在错误匹配点对占总配对数的小部分时不会影响单应性矩阵估计的正确性,这是因为除去第1次匹配点对集合,还采取了RANSAC[18]误匹配去除算法。这是一种根据迭代更新的方法,通过从包含异常数据的数据集中每次取少部分数据多次拟合得出最佳系统参数的算法。RANSAC最多可处理50%的外点情况。
通过RANSAC算法确保匹配正确的特征点对,然后待配准影像通过单应性矩阵变换到源影像上就完成了原始的拼接。
3 映射融合参数计算
3.1 图像投影变换
得到相机的相对位置后,如果直接进行拼接会破坏视场的一致性,使得拼接得到的全景图看起来不够连贯,因此需要通过投影变换将所有图像都投影在球面、柱面等,投影平面的选择与相机拍摄的方式有关系。本文采用柱面投影来获取拼接图。其主要流程如下:
首先,利用相机内外参数对图像建立前向映射变换矩阵,取源图像的4个顶点与正向投影矩阵相乘进行前向映射,得到变换后的目标图像区域。源图像I(x,y)与变换后的图像I′(x′,y′)关系式为:
(1)
然后,取目标区域内整数坐标点位置的点乘以前向映射变换矩阵的逆,变换前后的图像之间有下列关系:
(2)
如图2所示,前向映射源位置(x,y)为整数点,映射位置(x′,y′)为非整数点,后向映射源位置(x,y)为非整数点,映射位置(x′,y′)为整数点。在前向映射中,目标图像可能会出现空白点等噪点,这是由于图像放缩形成的,而后向映射不会出现这种现象。故映射填充选用后向映射。
图2 前、后向映射对比
投影矩阵的模型参数计算出为浮点型数值,整数位置经过浮点型参数整合计算得到浮点型位置,即整数位置无法映射到整数位置。插值技术在此处发挥作用,对于源影像上点的位置(x,y)和待配准影像上点的位置(x′,y′),非整数坐标位置上的点可以通过所在网格的左上角、左下角、右上角、右下角等整数坐标位置上的点插值,这样就可以计算出像素值是多少。插值算法采用双线性插值。
图3为双线性插值图示,计算公式如下:
图3 双线性插值算法
(3)
3.2 曝光补偿与拼缝寻找
不同姿态的相机即使在曝光要素都一致的条件下拍摄的影像整体亮度也会存在差异,那么直接进行拼接就会出现明显的明暗上的变化,因此需要设置曝光补偿,使得不同图像的整体亮度大概一致。常用增益补偿与分块增益补偿2种方法。
拼缝是指图像之间重叠区域中最为相似的那条线。在得到相邻2幅图像的拼缝位置后,在拼缝附近的若干个像素使用融合算法[19-21]。公共区域内,拼缝各侧只保留整体占比较大的影像。通过这样的方法,可以有效地去除图像之间的错位、伪像,得到更好的拼接结果。常用的合缝线寻找有以下几种方法。1)逐点法:最简单效果也相对较差;2)图割法:计算复杂度高,效果非常好;3)动态规划法:相当于前二者的折中,计算复杂度和效果都居中。根据实际的需要,选择动态规划法作为本文拼缝寻找的方法。
4 基于CUDA的快速融合
4.1 形态学方法
形态学方法对图像边缘非常敏感,常用于描述和提取图像边界形状、抽取图像骨骼,本文采用膨胀和腐蚀来确定拼接缝周围的融合过渡区域与融合权重值。主要步骤如下:
首先,获得重叠区域内拼缝线后,通过数次膨胀两侧拼缝线掩码获取宽度为N个像素的过渡区域,如图4所示,用B对A膨胀,表达式为:
图4 投影矩阵掩码与拼缝掩码
A⊕B={y:B(y)∩A∩P≠∅}
(4)
式中,A为源图像拼接缝掩码,B为3×3大小的单位结构元素,P为源图像投影矩阵掩码。
然后,利用数次膨胀拼接缝掩码确定过渡区域的同时,计算过渡区域内各点位置与拼缝线的距离和与过渡边界的距离,并以此为根据对照权值查找表分配权重。公式如下:
(5)
式中,x1为融合区域左边界位置,x2为融合区域右边界位置,xm为拼缝所在位置,xi-x1为融合区域内像素位置处离左边界的距离大小,x2-xi为融合区域内像素位置处离右边界的距离大小,xm-x1与x2-xm分别为拼缝左侧与右侧过渡距离大小,L[·]为过渡函数查找表,n为查找表元素个数。
当拼接缝与投影边界的距离小于过渡像素N时,基于形态学的距离查找法也能够自动调节过渡幅度,使拼接缝位置完成融合过渡,最后,利用数次腐蚀依次分配权重值。此方法能够从融合区域边界开始,在垂直、水平、斜向各个方向上自适应过渡,保证过渡效果良好。
由于动态规划法寻找拼缝线是基于图像的色彩和结构2个约束维度来计算,最优拼缝线处在色彩差异较小或梯度变化较大的位置。换而言之,在达到相同的权值过渡幅度的前提下,缝合线中心的过渡宽度较窄,缝合线外围边界的过渡宽度较宽,可以使过渡更加平滑自然,同时解决亮度差异较大的问题。本文使用指数曲线y=axb的[0,0.5]区间段作为分配权重的过渡函数。该函数的导数在[0,0.5]区间段从初值0单调递增,很好地贴合了融合区域的过渡需求,由此建立权值分配查找表。图5为融合过渡曲线。
图5 本文权值过渡曲线
4.2 加权渐进渐出融合方法
图像与图像由于存在细节处曝光不一致的情况,在重叠区域内拼接缝周围颜色、亮度有些微不同。依据拼缝直接拼接图像会造成可见的界线,会使画面产生撕裂感,所以需要融合最优拼接缝来消除画面撕裂[22]。本文采用加权渐进渐出融合算法消除拼缝。
在重叠区域,根据过渡区域内像素点与拼缝线距离的比例大小分配融合权重。如图5所示,拼缝过渡正中心处权重分配为0.5∶0.5,权重比q1∶q2从1∶0平滑过渡到0 ∶1。假设I(x,y)为融合后的图像,则加权渐进渐出融合算法公式为:
(6)
式中,I1(x,y)为图4中待融合区域R1,I2(x,y)为待融合区域R2,R12为拼接缝融合过渡区域R12,q1和q2分别为R1和R2的加权权重值,且有q1+q2=1,q1∈[0,1],q2∈[0,1]。
4.3 CUDA加速
CUDA(Compute Unified Device Architecture)是一种能运用图形处理器GPU大大提升通用计算性能的并行平台和编程模型[23-26]。CPU的时钟频率是GPU的数倍,但是GPU的计算核心数量比CPU多数个数量级,通用算术能力CPU远不如GPU。故GPU非常适合用于矩阵投影变换和加权融合算法等矩阵运算的加速。虽然CPU与GPU能同时并行计算,但由于CPU与GPU计算能力的差距,视频每帧图像拼接融合的时间主要受制于CPU计算的时间,所以本文将计算相机参数、映射参数、融合参数整合,视频帧经过GPU的拼接融合,极大地缩短了计算时间,能满足高清视频拼接融合的实时性要求。
5 实验结果与分析
本文采用Windows 10 64 bit操作系统,Intel Core i5-8265U 1.60 GHz CPU,8 GB内存,Nvidia GeForce MX150 GPU,2 GB显存,Visual Studio 2017开发平台,OpenCV 3.4.2图像库,摄像头统一都是视角为110°的300万像素广角镜头,使用C++语言编程实现。最大过渡区域N不是固定值,而是根据输入图像重叠区域大小自适应选择,一般设为重叠区域的1/4,过渡函数中a=10,b=4。
图6为拼缝融合过渡模拟仿真图,上半部分采用渐进渐出融合方法,下半部分采用本文过渡函数指导的融合方法。从图中放大部分可以看出,不同过渡函数对权值的过渡幅度调整是不一样的。本文方法相较于渐进渐出融合方法色彩变化更缓慢,也就是说拼缝周围过渡更加平滑,且初始过渡区域变化更小,过渡部分更加集中。
图6 局部放大的融合权值仿真图
图7是不同时间段下各视频帧的拼接结果图。房屋建筑与结构曝光均正常,前景人物结构与色彩自然,没有出现视觉可见的模糊与伪影,具有良好的视觉效果。
(a) t=0.33 s
(b) t=5 s
(c) t=6.66 s
(d) t=8.33 s
(e) t=10 s
(f) t=15 s
本文为了评估方法的有效性和正确性,采用4个客观评价指标来对视频拼接的结果进行评估。信息熵用图像直方图各灰度级分布的区域与峰值灰度级区域的偏离程度来评估图像所包含的信息量;平均梯度用影像细节部分的梯度差来评估融合后影像的清晰度;标准差用影像灰度值在直方图上分布的均匀性来评估影像信息的丰富程度;互信息用源影像在融合后影像中信息量的占比来评估融合前后影像的相似度。综合来看,信息量越多、清晰度越高、标准差越大、互信息越高,融合后的影像质量就越好。
从表1中可以看出,相较于多频带融合方法,其他方法整体上平均梯度更高,图像清晰度更好,而且多频带计算复杂度高、内存需求大、速度慢。但是,从图8可以看出,直接法与渐进渐出法存在局限,不能很好处理曝光差异的问题,拼接结果图中间部分正上方和正下方存在不同程度的过渡断层,本文方法与多频带法的融合结果效果良好。综合图9的各场景拼接结果来看,本文方法能够在不同场景下保持良好拼接融合质量。
图9 不同场景下拼接结果
表1 图像质量的对比度、相关性和能量、信息熵的对比
(a) 拼接原图
(b) 直接法
(c) 渐进渐出法
(d) 多频带法
(e) 本文方法
视频由多个图像帧组合而成,视频拼接在实时性上的要求远高于图像拼接,视频帧率只有在高于24 fps播放时才不会出现人眼能观察到的卡顿现象。为了测试提出的拼接系统能否满足实时性要求,本文抽取几种分辨率下的输入视频数据进行实验仿真,初始帧计算的时间不计入实际总耗时,计算视频流的所有帧拼接平均时间。实验结果如表2所示。可以看出,3路1920×1080的视频拼接平均帧率为72.5 fps,视频在高分辨率下也能够实时拼接。为了证明本文方法在拼接实时性上具有优势,将本文方法与现有文献中的方法进行速度对比。从表3可以看出,在同样2路视频输入,相同分辨率下的视频拼接,本文方法速度提升大约2~3倍。
表2 不同分辨率下的拼接速度对比
表3 2路视频不同方法下的拼接速度对比
6 结束语
本文提出了一种多方向感知视频融合方法,首先利用图像配准得到投影重叠区域,采取动态规划法寻找重叠区域内最佳拼接缝;接着使用查找表增强拼缝两侧权值过渡,使融合区域更加集中;然后,将拼接缝掩码进行膨胀与腐蚀等形态学操作,得到紧密贴合拼缝的融合效果图像;最后,将本文方法与直接法、渐进渐出法、多频带融合法进行对比实验,并计算了信息熵、平均梯度、标准差和互信息客观评价值。实验结果表明,本文提出的算法在清晰度和标准差等客观评估上有优势,主观视觉上无伪影;且在应对曝光差异较大、图像结构复杂的场景时,拼接效果与多频带融合算法相当的情况下实时性好,为高分辨率大视场影像的实际应用提供了一条途径。