基于视频抖动的灰度投影稳像算法
2019-04-10胡常俊张著洪
胡常俊,张著洪
(贵州大学 大数据与信息工程学院,贵州 贵阳 550025)
视频抖动是影响视频序列中目标提取的关键因素,如何实时、快速、有效地消除抖动产生的负面影响,是图像预处理中关系到运动目标提取效果的关键问题。车载摄像头是安装在车载平台的一种成像设备。在车体发生抖动或道路不平稳场景下,摄像机输出的图像序列呈现不稳定现象,造成目标提取失效。因此,研究消除视频抖动尤为重要。
电子稳像[1-2]是一种利用数字图像处理和电子技术来确定图像间偏移的运动矢量并以此进行运动补偿的稳像方法。较为常见的方法包括代表点匹配算法、特征点跟踪算法、块匹配法、灰度投影算法[3-7]。在这些算法中,第一种算法是在参考帧图像上以像素点为单位,选取等距离间隔的点阵集,在当前帧图像上寻求与之相匹配的同样等距离间隔的点阵集,两个点阵集初始点坐标的差值就是图像间的运动矢量,其算法结构简单、计算量小,但自适应能力较弱;第二种算法主要是先在参考帧中选择一组特征点,然后按照匹配准则在当前帧中进行搜索,找出对应的匹配特征点,计算出帧间运动矢量;王斌等[7]提出一种电子稳像的数字图像跟踪算法,其借助图像的特征点进行背景补偿、矢量计算和特征点跟踪;第三种算法的基本思想是将当前帧图像划分为若干大小相同的子块并在参考帧图像的指定搜索窗内进行全局搜索,直到找到与参考帧最匹配的小块,进而获取子块的运动矢量;张跃飞[4]提出一种改进型车载视频稳像算法,其主要通过优化图像子块的位置来降低车辆运动对图像子块匹配的影响;最后一种算法是利用图像序列的灰度总体分布的变化规律,对图像的行列灰度投影曲线做相关运算获取当前帧图像相对于参考帧的运动矢量,其运算速度快,能满足实时性、稳定性要求[8-12],但尚未考虑抖动现象对图像的影响问题;李计添等[8]通过分析车辆载体运动的特点和导致图像抖动的根源,运用灰度投影算法对车载图像序列进行稳像,验证了灰度投影算法的有效性。
本文针对视频抖动问题,探讨基于车载摄像机抖动的改进型灰度投影算法;该算法能消除运动前景对运动矢量估计的干扰,可提高运动补偿的精度;借助实时场景的视频序列,实验结果表明,该算法能实时、有效地获得稳定的图像序列。
1 基本的灰度投影算法
灰度投影算法利用参考帧和当前帧图像的灰度值计算当前帧图像的运动矢量,进而对当前帧进行运动补偿,可达消除或减轻随机抖动对目标提取的影响。算法描述概述如下:
步1输入大小为m×n的第k帧灰度图Pk;
(1)
步3 求使公式(2)达到最小的ωmin;
1≤ω≤2I+1
(2)
其中ω取整数,1≤ω≤2I+1,I是检测图像抖动的范围的非负整数;第k帧图像相对于第k-1帧图像在水平方向的运动矢量为:
vx=I+1-ωmin
(3)
类似地,可获第k帧图像的竖直方向运动矢量vy;
步4 将第k帧图像向运动矢量的反方向运动相应的距离,即可得到稳定的第k帧图像。
2 图像稳像算法
传统灰度投影算法[13]仅适应无运动前景抖动场景,当图像中出现运动前景或者背景中包含其它运动的小物体时,将导致图像的运动矢量的估计精度低;另一方面,随着摄像机不断移动和场景的变化,该方法造成稳像失败。为此,采用分块灰度投影算法和自适应相邻帧补偿解决此方法存在的问题。
2.1 基于区域分割的运动矢量估计
抖动现象易于导致相邻两帧图在自下而上的3/4区域的信息有显著的差异性,同时运动前景一般都出现在图像的中心区域位置;当抖动现象发生时,运动目标极大偏离图像的中心区域且参考帧的边缘信息在当前帧随即消失。为此,将图像区域进行划分,如图1所示。依据区域的划分,利用灰度投影算法估计出各子块的运动矢量,进而计算出全局运动矢量,算法的具体设计步骤如下:
算法1全局运动矢量估计
步1 置k=1;
图1 块区域划分Fig.1 Block area division
步2 输入第k帧图像Pk;
步3 将Pk的下方3/4图像区域的边缘保留,其余部分划分为大小相同的小块(见图1),设定有r个区域块;
步4 排除中间区域块,利用以上灰度投影算法计算其余区域块的水平、竖直方向的运动矢量,得到Vx={vx1,vx2,…,vx,r-1}、Vy={vy1,vy2,…,vy,r-1};
步5 分别计算Vx和Vy中元素的平均值vax和vay;
步6 计算Vx中各元素与vax的偏差exi,1≤i≤r;类似地,计算Vy中各元素与vay的偏差eyi,1≤i≤r;
步7 若max{|exi|,|eyi|}>σ,则从Vx和Vy中删除第i个区域块的运动矢量,1≤i≤r,在此σ为给定的阈值;
步8 Vx中各元素的均值即为Pk的水平方向运动矢量vx,同理可获竖直方向的运动矢量vy;
步9 置k=k+1, 返回步2。
该算法利用图像块区域划分的思想与灰度投影算法融合,计算出区域块的水平、竖直方向的局部运动矢量,消除运动前景的干扰,进而获得全局运动矢量。
2.2 自适应运动补偿
算法1 获得的当前帧图的运动矢量是摄像机正常扫描和随机抖动产生的运动矢量的叠加,而电子稳像的目的是保留正常扫描运动获得的像素信息,消除随机抖动而导致图像出现的跳跃因素,即需将当前帧图的运动矢量中涉及抖动因素的矢量去掉。为此,基于算法1,设计下列图像稳像算法自适应地消除随机抖动对稳像的影响。
算法2 图像稳像算法
步1 输入记忆尺度L,初始序列灰度图P0,P1,...,PL,最大累积偏移量T1;
步2 依据算法1计算第i帧相对于第i-1帧全局运动矢量vxi,vyi,1≤i≤L;
步3 置k=L+1,置M=0;
步4 输入第k帧灰度图Pk;
步5 依据算法1计算Pk相对于Pk-1的运动矢量vxk,vyk;
(4)
步7 将补偿运动矢量[Δxk,Δyk]进行反方向运动相应的像素距离后补偿第k帧图像,补偿后的图像取代原灰度图;置k=k+1,转步4;
步8 将补偿运动矢量[Δxk,Δyk]进行反方向运动相应的像素距离补偿第k帧图像,更新M=0,转步4。
该算法利用算法1获得各原始灰度图的运动矢量,进而借助均值滤波获得水平、竖直方向的运动补偿量,并依据阈值确定后续帧的L幅记忆灰度图以及自适应的更新参考帧。它是一种消除抖动对目标提取影响的稳像算法。
3 实验分析
在Windows7(CPU/3.70 GHz,RAM/ 4GB)/ Visual Studio 2010/ OpenCV 2.4.9环境下展开实验。为检测以上算法2的稳像效果,选择经典的电子稳像算法文献[4]、[8]算法参与比较。文献[8]中的算法利用灰度图的整体分布变换规律,精确的计算出运动矢量,但没有考虑运动车辆对运动补偿的影响;文献[4]中的算法只针对在固定位置选择小块进行运动估计,虽然提高运算速度,但没有考虑到选择的小块中是否包含运动车辆对运动补偿的影响。测试视频序列包含两种场景,一种是车辆行驶在视频中心的场景,另一种是除了一车辆行驶在视频中心外,视频边缘也包含行驶的车辆场景;参与比较的两种算法的参数设置与它们所在文献中的参数设置相同,算法2的参数设置是:I=6,σ=1,T1=20,图像区域划分的大小为32×32,并且在图像下方3/4处的边缘区域保留宽度为10个像素的补偿区域。依据下式[14]评判算法的稳像效果:
(5)
其中,Imax=255,MSE(Pk,Pk-1)表示运动补偿后的第k-1和k帧图Pk-1,Pk中对应像素点的灰度值偏差平方的均值;若PSNR(Pk,Pk-1)越大,则算法对图像序列的稳像效果好,反之则较差。
3.1 视频序列及分析
视频1源于某立交桥下后侧的视觉场景:一车辆在一雾天经过此地;摄像头在出现抖动情形下以27帧/秒的速度拍摄大小为128×128的35帧图像构成视频序列;由于该场景出现摄像头抖动,导致各视频的右下方的图像较为模糊。视频2源于相对较窄的高速公路上转弯场景:此路面上有多辆机动车在缓慢行驶,摄像头在抖动条件下以27帧/秒的速度拍摄大小为128×128的35帧图像构成视频序列。由于此视频序列的视觉场景具有明显差异,且摄像头均有抖动现象,因而可用于检测以上算法的稳像效果。
图2 两种视觉场景下的灰度图序列Fig.2 Grayscale sequence in two visual scenes
3.2 实验结果与分析
将算法2与文献[8]的算法作用于视频序列1,获得图2(a)对应的稳像图,如图3所示;该算法与文献[4]的算法作用于视频序列2,获得图2(b)对应的稳像图,如图4所示。
图3 视频序列1的稳像效果Fig.3 Image stabilization effect of video sequence 1
经由对比图2与图3~4可知,文献[4]、[8]的算法和本文算法均能对图像中出现的抖动现象进行不同程度的补偿。另外、采用峰值信噪比(PSNR)评价文献[4]、[8]算法和本文算法运动补偿后的稳像效果,依据式(5), 算法2和文献[8]的算法作用于视频序列1得到的PSRN值序列如图5所示;类似地,算法2和文献[4]的算法依据视频序列2得到的PSRN值序列如图6所示。
图5 视频序列1稳像前后的PSRN值Fig.5 PSRN value before and after video sequence 1 is stabilize
由图5-6中稳像前后的PSNR值可知,本文算法的PSNR值明显高于原始图的PSNR值,因此图像稳像效果好。文献[8]的算法在图5中第9、10、13、17、18、24、27、35帧图像的PSNR值都小于原始图的PSNR值,文献[4]的算法在图6中第7、8、17、18帧图像PSNR值都小于原始图的PSNR值。此表明参与比较的算法对抖动的视频序列较难消除抖动因素对稳像的影响。本文算法利用块区域划分的思想和自适应补偿方法,可有效地提高补偿精度。
图6 视频序列2稳像前后的PSRN值Fig.6 PSRN value before and after video sequence 2 is stabilized
4 总结
针对车载视频出现抖动导致视频序列出现失真的现象,通过分析运动前景的运动特征,以及出现抖动时相邻帧之间图像信息的差异性,在灰度投影算法基础上,融合了图像区域分割的思想,获得处理视频序列抖动的稳像算法。实验结果显示,本文算法通过消除运动前景的干扰和采用自适应运动补偿策略,能获得稳定的视频序列。