基于H.264/AVC标准的CABAC算法研究*
2011-04-26黄继海涂晨阳
张 猛 黄继海 涂晨阳
(防空兵指挥学院 郑州 450052)
1 引言
H.264/AVC标准是 ITU-T的VCEG(视频编码专家组)和ISO/IEC的MPEG(活动图像专家组)的联合视频组(JVT,JointVideoTeam)开发的标准,也称为MPEG-4Part10“高级视频编码”。它既保留了以往压缩技术的优点又增加了许多新特性:更低的码流和更高的图像质量,更强的容错能力,简洁的设计方式和更好的网络适应性。在相同的重建图像质量下和同等的画质下,H.264比编码标准H.263平均节约64%的传输码流,比MPEG-4ASP也要平均节约39%的传输码流。H.264技术还具备容错能力强、网络适应性强等优势,正好适应了目前国内运营商接入网带宽非常有限的状况。与以往标准相比,H.264标准使运动图像压缩技术上升到了一个更高的阶段,在较低的带宽上可以提供高质量的图像传输。
2 H.264/AVC视频编码关键技术
在视频压缩编码中,预测法是最简单、实用的,经过压缩编码后传输的并不是像素本身的取样值,而是该取样的预测值和实际值之差。在同一幅图像中,邻近像素之间有着相关性,它们发生突变的概率很小,因此可以利用这些性质进行视频压缩编码。
2.1 帧内预测编码
H.264和以往标准相比并无结构性变化而是在各主要模块内部使用一些先进的技术,从而提高编码效率。帧内编码就是在对一幅图像进行编码时没有利用任何其它帧图像的信息的编码,它是传统混合编码框架的重要组成部分。帧内预测编码主要是通过消除图像的空间冗余信息来实现对图像的压缩,也应用于帧间预测的某些宏块编码中。在帧内预测模式中,预测块P是居于已编码重建块和当前块形成的。H.264/AVC对亮度分量和色度分量设定了不同的预测编码方案。针对亮度分量的帧内预测模式有两种:基于4×4像素模块(有9种可选预测模式,独立预测每一个4×4亮度子块)和16×16像素模块(有4种预测模式预测整个16×16亮度块)的帧内预测模式,分别适用于带有大量细节的图像编码和平坦区域图像编码;对色度分量也有四种模式,与16×16模块相似。
2.2 帧间预测编码
与以往标准相比,H.264帧间预测在继承了其成熟的编码框架的同时,又进一步增强和改进了一些新的技术和方法,从而获得更好的压缩性。帧间预测编码通过分析相邻图像之间的时域相关性,然后再对预测图像和实际图像的差值进行编码从而实现视频压缩。采用的新技术主要有可变模式块运动补偿、采用1/4像素精度的运动估计算法以及多参考帧等。通过对模式块进行分割,采用树状结构运动补偿以及把像素精度提高到1/4的像素精度估计并且增加多个参考帧来提高编码效率减小误差,但是同时会增加计算的复杂性。
2.3 整数4×4 DCT编码
对于大多数图像来说都有这样一个共同特征,平坦区域和内容缓慢变化区域远远大于细节区域和内容突变区域。即图像中直流和低频区域占大部分,高频区域占小部分,因此在空间域图像与频域互换时会产生很小的相关变换系数,通过常见的K-L变换、离散余弦变换(DCT)等正交变换对其进行压缩编码。DCT编码性能接近于K-L变换,相比之下,它具有快速算法,广泛应用于图像编码。H.264采用4×4整数变换,在编码器中允许精度相同的变换和反变换,便于使用简单的定点运算方式。
变换编码实现较复杂而预测编码实现相对容易,但预测编码的误差容易扩散。混合编码的使用现在越来越多,即对图像先进行带有运动补偿的帧间预测编码,再对预测后的残差信号进行DCT变换。
2.4 熵编码技术
熵编码是一种无损压缩编码方法,它利用信源的统计特性进行码率的压缩编码,它生成的码流经解码后可以无失真的恢复出原数据。H.264采用两种熵编码技术来提高编码效率:基于上下文自适应的变长编码进行的熵编码(Context-Based Adaptive Variable-Length Coding,CAVLC)和基于上下文的自适应的算术编码(Context-Based Adaptive Binary Arithmetic Coding,CABAC)。
CAVLC适用于对亮度和色度残差数据进行编码,之后再进行量化编码。它充分利用残差通过整数变换以及对量化后的数据特性进行压缩提高压缩效率,进一步减少冗余数据间的冗余信息。
CABAC是一种效率很高的自适应算术编码算法,它考虑的是信源符号序列整体的概率特性,不采用一个码字代表一个输入信息符号的办法。与CAVLC相比,CABAC在同样的视频质量下更节省码率。
3 CABAC算法分析
熵编码是对变换编码后的系数进行编码。CABAC是H.264/AVC标准中的一种自适应算术熵编码方法,是将自适应的二进制算术编码与一个设计精良的上下文模型结合起来得到的方法。其算术编码的计算复杂度主要体现在两个方面:概率的估计和更新,解决其优化问题将会使熵编码的效率得到进一步的提高。CABAC算术编码过程的主要步骤有:利用每个语法元素的上下文关系,根据已编码元素为待编码元素选择概率模型,即上下文建模;根据当前的统计特性自适应地进行概率估计;对输入流进行预编码。
3.1 自适应算法流程
算术编码是一个递进计算过程,编码器必须保存以下变量的记录状态:当前区间的下限L;当前区间的大小R;当前字符Binval;各字符的概率 Pa。
上述定义中 L和R用来确定当前区间;Pa是当前区间的划分依据,由于是二进制编码只有字符0和1,所以只需记录P1和P0;最后确定Binval所在的自区间作为下一个递进中的当前区间。R的递进关系为:R=R*Pa。
图1 算术编码流程
3.2 建立上下文模型
算术编码是对整个流分配码字,为了将差错控制在一定范围内,CABAC将片(Slice)作为算术编码的生命期,但是对具体句法的元素的编码是发生在宏块级。在同一宏块内句法元素是独立编码,宏块之间的上下文信息则可以作为依据用于对当前块进行编码。
H.264将一个片内可能出现的数据划分为399个上下文模型,每个模型以ctxidx标示,在每个模型内部进行概率的查找和更新。每个上下文模型通过H.264为其建立的对应的概率表,独立地维护概率状态。这些模型的划分精确到比特,几乎大多数的比特和它们邻近的比特处于不同的上下文模型中。通常,每个句法元素的上下文模型根据上下文索引偏移量与上下文增量来确定。其中,上下文索引偏移量对于特定类型片中的特定句法元素是唯一确定的,可以在标准中通过查表获得。而上下文增量,则是根据相邻块的编码情况(也就是上下文信息)得出。
对于不同的句法元素,所需相邻块的信息不同,但一般包括可用性(如当前块在片的边缘上,则相邻块可能由于不是在同一片中而不可用)与同一句法元素的编码值。通常用于计算上下文增量的上下文建模函数为ctx_var_add=cond_term(A,B),A和B表示当前块的相邻块。其中cond_term()表示的是一种函数关系。另外,对于利用先前已编码的二进制值的上下文建模函数可表示为ctx_var_bin[k]=cond_term(b1,…,bk-1)。
3.3 对输入流预编码(二进制化)
为优化算术编码的特性,CABAC从统计角度对输入流作了一套预编码方法。如果给定的符号是非二进制值,将其乘以2的倍数放大(左移),即当输入流中连续出现大量MPS,或者MPS对LPS的概率比非常高时,可以达到极高的压缩效果。这种将输入流重新编码后再进行算术编码的过程叫做输入流的二进制化,从而获得MPS概率极高的比特流。
3.4 概率估计更新及优化
算术编码的复杂度主要体现在两个方面:概率的估计和更新。划分子区间的乘法运算:R=R*Pa。假设输入流为T,当前字符为Binval,在Binval之前的字符流为 f,f∈T,条件概率P(Binval/f)就是当前字符的概率估计值。随着条件因子 f的增长,带来的计算量急剧增大,而且每处理一个字符,需要作两次类似的计算。因此为解决这一问题,概率估计值Pa必须取自P(Binval/f)(取自一个严格的统计模型),它所对应的输出码率能最大限的逼近信源熵率;另外需要保证通过同样的法则估计和更新Pa能够顺利在当前划分区间编解码。
据以上分析,CABAC在计算的复杂度和编码效率之间作了折中,建立了一个基于查表得概率模型,把区间[0,0.5]的概率量化为64个值,这些概率对应于LPS(最小概率符号),则MPS(最大概率符号)的概率为1-Plps。字符的概率估计值被限制在表内,概率的刷新也从计算P(Binval/f)转变为按照某种法则在表中查找。
在CABAC建立的概率模型中,可以利用MPS出现时的刷新值都只是简单地指向当前的下一位来降低概率估计和刷新中的计算量。
图2 CABAC自适应自述编码原理
通过优化算术编码中频繁使用的乘法运算R=R*Pa亦可以大大减少计算量。CABAC首先建立起一个4*64的二维表格,存储预先计算好的乘法结果。令表格入口参数一个来自Pa另个一个来自R。P x直接以n(量化后的概率表索引值)作为参数,R的量化公式为:m=(R≫6)&3;在每次需要作乘法运算时,通过m和n进行查表操作即可得到结果。
4 结语
H.264标准中所涉及到的关键技术:帧间预测、帧内预测、DCT变换以及熵编码技术,基于上下文自适应的二进制算术熵编码(CABAC)是一种很高效的编码算法。它不仅动态地更新概率模型,而且采用新的方法对计算量和编码速度进行优化,与其他主流熵编码技术(CAVLC)相比,CABAC有着更高的编码效率。在H.264标准的发展应用中,CABAC编码算法必将应用地更加广泛。
[1]毕厚杰,王建.新一代视频压缩编码标准-H.264/AVC[M].第二版.北京:人民邮电出版社,2009
[2]余兆明,査日勇,黄磊,等.图像编码标准H.264技术[M].北京:人民邮电出版社,2006
[3]黄晁,沈燕飞,李锦涛,等.降低视频编码复杂度的算法研究[C]//AVS第四次会议文档AVS_M1056,武汉,2003
[4]H'HNEL H,YANGW Q,YORK T A.An AC2Based Capaci2tance Measuring Circuit for Tomography Systems and its SiliconChip Design[J].IEEE Colloquium:Advances in Sensors,1995,12
[5]陈志波.H.264运动估值与网络视频传输关键问题研究[D].北京:清华大学毕业论文,2002
[6]A.M.Tourapis,O.C.Au,M.L.iou.Predictive motion vectorfield adaptivesearch technique(PM VFAST)-enhancing block based motion estimation.Visual Communications and Image Processing,2001