基于选择特征宏块的快速视频稳像
2015-08-26谢晓明
李 沙, 谢晓明
(北京化工大学 信息技术与科学学院, 北京 100029)
随着多媒体技术的快速发展, 摄像设备越来越普及,日常生活中,人们常常用手持摄像设备记录生活点滴。 但由于随机振动、镜头参数设置等会造成连续视频序列间的随机运动较大,从而得到画面抖动的视频。 抖动的视频不仅会影响视频的观看,还会影响观看者对视频图像信息的获取。 视频的稳像过程正是去除这种不想要的运动。
视频抖动主要分为帧间抖动和帧内抖动,视频稳像则主要处理帧间抖动。 视频稳像系统主要由3 部分组成:运动估计、运动补偿和图像复原。 运动估计部分又包括局部运动估计和全局运动估计。 由于视频稳像效果主要取决于全局运动估计的精度[1],因此运动估计是视频稳像的关键。
传统的估计全局运动的算法包括特征点法[2]、灰度投影法[3]、位平面法[4]、块匹配法[5]。 其中,块匹配算法适于视频中的主要运动是静止的情况,但会由于偶然的室外风力等原因使视频中的背景出现抖动。
运动估计是在参考帧某一给定的搜索区域,根据一定的匹配准则,找到与当前帧的当前区域的最佳匹配区域。 本文中采用的是块匹配准则,因此,最佳匹配区域被认为是最佳匹配块。 但如果所选的匹配块特征不够明显,比如,边缘角点、包含周期的纹理等,若所选的宏块中包含这些元素,不仅会为运动估计提供错误的信息,所估计的运动矢量可能不是当前块的真实运动,从而影响全局运动估计的准确性以及视频稳像的性能,还会增加不必要的计算量。 因此,包括上述信息的宏块需要预先剔除。
针对抖动较小、前景较少的视频序列,块匹配具有精度高的特点,因此,本文将结合宏块内部的SAD 差异将视频帧的宏块划分为有效宏块和无效宏块,利用块匹配对有效宏块进行运动估计,获得准确的全局运动矢量,提高视频稳像的性能。 通过跳过无效宏块的运动估计,大大减少了计算量,并提高了运动矢量估计的精确度。
1 宏块分类算法
减少所搜点数是最直观的快速算法的途径[6]。 所提方法的主要思想是利用宏块内部相邻小宏块间的SAD 值对视频帧中的宏块进行分类。 若当前宏块的内部相邻小宏块间的SAD 差异大于一定的阈值,那么认为它是有效宏块,反之,则无效宏块,无需对它进行运动估计。 其算法的主要流程如图1 所示。
1.1 计算宏块内部的SAD 值
对所输入的当前帧, 将其划分为大小为N*N 的宏块,同时将宏块划分为4 个大小相同的小宏块,如图2 所示。
图1 所提算法的流程图Fig. 1 The proposed algorithm flow diagram
图2 视频帧的宏块划分示意图Fig. 2 The partition of macroblocks in video frame schematic diagram
在块匹配算法中, 匹配准则主要有绝对误差和SAD、平均绝对差值MAD、平均平方误差MSD 等。本文采用绝对误差和SAD 作为匹配准则,其计算公式如下:
其中,Rr(i,j),fc(i+d x,j+d y)分别为参考帧在位置为(i,j)的像素值和当前帧在位置为(i+d x,j+d y)的灰度值。 d x、d y 分别为运动矢量的水平坐标和垂直坐标。
设某一宏块B,其大小为N*N,其等分的4 个大小相同的宏块分别为B1,B2,B3,B4。 如图2 所示。 为了计算宏块内部的SAD,需要计算两两相邻的小宏块间的绝对误差和,即计算块B1与B2间的绝对误差和、块B1与B3间的绝对误差和、块B2与B4间的绝对误差和、块B3与B4间的绝对误差和。 计算公式如下:
那么,宏块B 内部的绝对误差i 和SADSUM为
1.2 判断当前宏块是否适于运动估计
一个宏块是否适用于全局运动估计, 不仅要求它与背景具有相似的特征,还需要判断它是否具有显著的信息。本文判断一个宏块具有显著信息是依据宏块内部的绝对误差和之和SADSUM。 若该值大于所设阈值,那么说明该宏块具有显著的特征,应标记为有效宏块,用于运动估计,否则,该宏块没有显著特征,应提前剔除,以避免获得错误的运动矢量。
2 结果及分析
为了显示所提算法的有效性, 对视频测试序列在PC 机上进行仿真实验, 比较筛选出有效宏块与未进行筛选的精确性以及运算时间。 本实验采用的抖动较小、前景较少的avi 视频序列,每帧的大小为640*480,大宏块为64*64,那么小宏块大小为32*32,搜索范围为[-16,16]。 剔除视频帧的部分边缘区域,本文将每帧图像划分为7*5(即35)个大宏块。根据所选宏块的尺寸和视频图像本身的特性,经多次试验,本文将宏块内部SAD 差异阈值T 设为300 000。
2.1 主观评价
本文选取两帧视频图像及稳像后的图像作为实验数据,如图3 所示,其中,图(a)为参考帧,图(b)为处理前的视频中的某帧的效果图,图(c)为未经宏块筛选处理后的视频中的某帧的效果图,图(d)为经过宏块筛选处理后的视频中的某帧的效果图。
图3 视频稳像的处理结果Fig. 3 The processing results of video stabilization
2.2 客观评价
本文从运算时间和准确性两方面评价视频稳像的性能。运算时间越少,表明计算量越小,视频稳像的效率越高。 视频稳像的准确性采用峰值信噪比PSNR 作为衡量标准。PSNR 反映了当前帧与参考帧间的峰值信噪比, 它对前景少的视频序列具有很好的评价视频稳像的效果。 其计算公式如下:
其中,
式中,Ic(i,j),Ir(i,j)分别为当前帧与参考帧在(i,j)处的灰度值。
PSNR 值越大,表明补偿后的帧间的灰度差别越小,稳像效果越好。
表1 改进前后视频稳像中的图像的PSNR 的对比Tab. 1 Image PSNR of video stabilization with improvements in comparison with that without improvements
表2 改进前后处理每帧视频图像的时间Tab.2 Processing time per video image with improvements in comparison with that without improvements
由表1 可以看出, 通过特征宏块的选择的视频稳像中图像的PSNR 值明显高于未处理前的图像的PSNR,也高于未经过特征宏块的选择的视频稳像中图像的PSNR 值。 相较于未经过特征宏块的选择的视频稳像处理, 基于特征宏块的选择的视频稳像的PSNR 值提高了9.06%。
由表2 可以看出, 未对宏块进行分类选择的视频稳像每帧需对35 个大宏块进行运动估计, 每帧的处理时间约为3.78 s,而基于特征宏块的选择的视频稳像每帧大约只需对7个大宏块进行运动估计,每帧的处理时间约为0.83 s。 由此可见,相较于未经过特征宏块的选择的视频稳像处理,基于特征宏块的选择的视频稳像的计算量减少了78.04%。
3 结 论
本文针对抖动较小、前景较少的视频序列,提出了一种特征宏块的选择的视频稳像算法,采用精确度高的块匹配算法,结合宏块内部的SAD 值的大小筛选出具有明显特征的宏块用于运动估计,通过实验验证,可看出该方法不仅大大减少了计算量,还具有较高的视频稳像精确性。
[1] Wang Tae-shick,Kang Seok-jae. Robust Global Motion Estimation for Video Stabilization [C]//In: Consumer Electronics(GCCE), 2012 IEEE 1st Global Conference,2012:623-624.
[2] Kim Seung-kyun,Kang Seok-jae,Wang Tae-shick,et al.Feature point classification based global motion estimation for video stabilization[J]. Consumer Electronics,2013,59(1):267-272.
[3] LIU Yang-ke,FU De-ji,LI Bo,et al. Real-time global motion vectors estimation based on phase correlation and gray projection algorithm[J]. Image and Signal Processing,2009:1-5.
[4] Shakoor M H,Moattari M. A fuzzy method based on bit-plane images for stabilizing digital images[J]. Electronics, Communications and Computer,2010:106-108.
[5] Immanuel Alex Pandiana S,Josemin Balaa n G,Anitha J. A pattern based PSO approach for block matching in motion estimation[J]. Engineering Applications of Artificial Intelligence,2013(26):1811-1817.
[6] 裴琴,刘国繁,徐美清. 基于块特征分类的运动估计算法[J].中国图象图形学报,2011,16(6):933-938.