基于H.264视频编码的关键技术及其复杂度测试
2010-05-13吴琼,袁静
吴 琼,袁 静
摘 要:H.264标准是压缩率和图像质量方面的关键新技术,研究H.264通过对传统的帧内预测、帧间预测、变换编码和熵编码等算法的改进来进一步提高编码效率和图像质量,给出了基于C代码的宏块编码流程与复杂度测试,仿真结果证明H.264具有更高的压缩比、更好的IP和无线网络信道的适应性。H.264的高压缩率是以复杂度为代价,其复杂度是以耗时为依据的。
关键词:视频压缩;H.264标准;编码复杂度;视频编码
中图分类号:TN919.81文献标识码:A
文章编号:1004-373X(2009)20-060-03
Study on H.264 Standard′s Key Technologies and Its Complexity Test
WU Qiong,YUAN Jing
(Suqian College,Suqian,223800,China)
Abstract:H.264 standard is the key technology about better image compression and image quality based on motion compensation and transform.H.264 uses intra prediction,inter prediction,transforming coding,enhanced entropy coding algorithms to promote the intra encoding efficiency.The macro-block coding based on C and complexity test are presented.Experimental results show that H.264 has higher encoding efficiency,better IP and wireless network adaptability.The complexity of H.264 is on the basis of time cost.
Keywords:video compression;H.264 standard;coding complexity;video coding
0 引 言
H.264 以其良好的网络适应性和高编码压缩效率,灵活地语法配置,在视频处理领域比以往的视频编码标准更加适合视频处理的发展方向和不同应用环境的对象。H.264 继承了H.263 和MPEG 1,2,4视频编码协议的优秀之处,充分考虑了多媒体通信对视频编解码的各种要求,在保留运动补偿和变换编码技术的基础上,加入了如类离散余弦整数变换(DCT)、基于内容的自适应可变长编码(CAVLC)、基于上下文的自适应二进制算术编码(CABAC)等新技术[1],进一步提高了编码算法的压缩效率和图像回放质量。在肉眼主观感受相同情况下,H.264 比H.263 的编码效率提高了50%左右[2]。
1 图像质量和压缩率方面的关键技术
1.1 基于灵活分割宏块(MB)的运动矢量估计和补偿以及增加变换的压缩效果
H.264信源编码在运动估计时,可以灵活地选择块的大小[3,4]。而其他标准,处理的像素块的大小均为16×16或者8×8。H.264以可变大小的块来适应不同应用环境和要求,采用16×16,16×8,8×16,8×8四种模式;当划分为8×8模式时,又可进一步采用8×4,4×8,4×4三种子宏块划分模式进一步划分,如图1所示。根据需要由不同尺寸的宏块来执行,可以使运动物体的划分更加精确,并减小运动物体边缘的衔接误差,还可以处理好需要更多运动细节的场合,即以更小的运动补偿块的引入可以提高在一般和特殊情况下的预测质量。它可以提高主观视觉效果,同时又可以减小变换过程中的计算量。实验表明,应用7种不同大小和形状的块可以比单一的利用16×16块进行编码提高15%以上的压缩率[5,6]。
图1 宏块与子宏块的分解
1.2 支持1/4像素或1/8像素精度的运动估值
在H.264中通过6阶FIR滤波器的内插获得1/2像素位置的预测值。当1/2像素值获得后,通过取整数像素位置和1/2像素位置像素值均值的方式获得1/4像素位置的值。在高码率情况下,提供1/8像素精度的运动估计。采用高精度运动估计会进一步减小帧间预测误差,减少了经变换和量化后的非0比特数,提高了编码效率。利用1/4像素空间精度可以比原有的一个像素精度(整数精度)预测提高20%的编码效率[5,7]。
1.3 多参考帧预测
以往的编解码技术在对P帧图像进行帧间预测时,只允许以参考前一帧图像进行编码,即以前一个I图像或P图像为参考帧,对B图像进行预测时只允许参考前后帧图像进行编码,即以前后两个I图像或P图像为参考图像。H.264则打破了这些限制,允许在从当前帧的前几帧中选择一帧作为参考帧图像,对宏块进行运动预测,当选用多参考帧模式时,编码器从几个参考帧中选择一个效果最好的参考帧,达到最佳的预测效果,参考帧图像甚至可以是采用双向预测编码方式的图像,大幅度降低了预测误差。另外帧间编码部分还引入了SP帧,用于有效地实现变码率环境下切换,可用于随机、快速播放过程。比单参考帧的方法节省5%~10%的传码率[8],并且有利于比特流的错误恢复,解码恢复更高图像质量。因此,多参考帧预测对周期性运动和背景切换能够提供更好的预测效果。
1.4 消除块效应适应性滤波器
基于分块处理的变换编码算法,忽略了物体边缘的连续性,在低码率情况下,容易出现方块效应。为消除在预测和变换过程中引入的块效应,H.264对此采用消除块效应适应性滤波器,对宏块边缘进行平滑,有效改进图像主观质量[9]。但与以往标准不同的是,H.264的消除块效应滤波器位于运动估计循环内部,可以利用消除块效应以后的图像预测其他图像的运动,即滤波后宏块用于运动估计,以产生更小的帧差进行编码,进一步提高预测精度。
1.5 增强的熵编码
以往标准的熵编码采用变长的哈夫曼编码,码表统一,不能适应变换多端的视频内容,影响编码效率[10]。H.264根据视频内容的不同,利用较短的码字来代表出现高频率的符号,可进一步去除码流中的冗余,提供两种熵编码,即上下文自适应二进制算术编码(CABAC)和基于内容的自适应可变长编码(CAVLC)。CABAC的编码效率更高,也更复杂,在相同图像质量下,使用CABAC编码电视信号可降低10%左右(10%~15%)的码率,后者具有较强抗误码能力。
2 基于C代码的宏块编码流程与复杂度测试
H.264的主要编码模块包括帧内预测、帧间预测、DCT变换、熵编码、去块效应滤波器等,如图2所示。
图2 H.264信源编码模块
图2显示的主要是H.264编码器的内层即宏块编码层,主要用来完成核心的运动预测、4×4整数变换、量化和熵编码功能。对一个宏块进行编码前先要获得其邻近已编码宏块的信息(像素值、分割方式、运动矢量等)。然后根据当前编码帧的类型(I帧、P帧、B帧)对宏块进行不同的预测,将获得的残差系数进行变换和量化,量化后的系数分成两个方向进行处理,一个是送到熵编码部分进行CABAC编码,另外一个是送入逆量化和逆变换部分,还原出当前编码的宏块,从而构建出和解码端相同的宏块。其宏块编码层的流程如图3所示。
图3 某宏块编码层的流程
由于逆量化的粗糙性和运动补偿的偏差性,会使逆变换和逆量化后的图像产生方块效应,从而降低图像的主观视觉效果。为此,在逆量化之后插入一个去块滤波过程,通过不同的滤波强度来消除不同程度的方块效应。滤波强度取决于宏块的预测方式、量化参数、运动矢量等。比如量化步长减小时,滤波器的作用也会相应降低。
仿真试验采用基本编码档次,2帧参考帧,±16个点作为运动估计的搜索范围,30个量化等级的条件下,采用CABAC熵编码算法获得的复杂度测试结果如表1所示。
表1 复杂度测试结果
帧内预测和帧间预测/%整数变换和量化/%熵编码CABAC/%去块效应
滤波过程/%
66.94116.17210.5386.349
69.23215.13310.1525.483
68.46516.04510.4934.997
69.11215.37511.1264.387
由测试结果可以看出,帧间预测和帧内预测的持续时间最长,其耗时约为核心模块总编码时间的67%左右。其次就是4×4整数变换和量化过程,耗时约为核心模块总编码时间的15%~16%。熵编码(CABAC)过程所消耗的时间约为核心模块总编码时间的10%~11%。消块滤波过程所占的耗时比例最少,约为4%~6%。测试结果表明,H.264具有更高的压缩比、更好的IP和无线网络信道的适应性,但是H.264的高压缩率是以其复杂度为代价的,而复杂性主要体现在帧间预测模块中,因此要加快H.264的编码速度,就必须对这个模块进行优化。
3 结 语
H.264与以往的视频编码标准相比,其系统结构、运动估计和运动补偿、变换和量化、熵编码等部分均有很大的改进,具有更高的编码压缩效率和适应性,但是其在解码端计算的复杂度比是H.263和MPEG-4的2~3倍。随着芯片处理能力的不断进步,H.264的计算复杂程度在可以接受的范围之内。H.264以其突出的优势,即压缩编码的效率和抗误码的性能,有效解决了在尽可能低的存储情况下获得好的图像质量和低带宽图像快速传输的难题,必然在卫星电视转播、移动通信、IP网的多媒体传输、无线视频传输等视频通信和视频存储领域赢得更好的应用和商机。
参考文献
[1]宋昊.H.264视频编码快速算法研究[D].安徽:安徽大学,2007.
[2]H.264/ MPEG-4 Part 10[S].White Paper.http://www.vcodex.com,2002.
[3]张文俊.264视频编码的复杂度、码率控制与质量评价[D].浙江:浙江大学,2005.
[4]李锡辉.基于H.264码率控制算法研究与改进[D].湖南:中南大学,2007.
[5]李宾,高平.H.264编码系统的特点及其应用前景[J].数字电视与数字视频,2007(6):19-20.
[6]李蔷,余松煜.一种精细的H.264码率控制方法[J].系统工程与电子技术,2007,26(12):1 946-1 949.
[7]赵平芳,刘冀伟,李擎.基于H.264/AVC中的码率控制方案及算法实现[J].计算机工程,2006,32(20):233-249.
[8]刘喜龙.基于H.264的嵌入式视频服务器的设计[J].微计算机信息,2005,21(1):133-135.
[9]王昭顺,张平.基于H.264/AVC的一种新的帧一层码率控制算法[J].计算机应用,2005,25(12):2 800-2 802.
[10]陈川,余松煜.联合编码模式选择的码率控制算法[J].电子学报,2004,32(5):763-767.