视频编码标准H.264的核心技术分析
下一页:3.3 整数DCT变换
3.3 整数DCT变换
H.264标准中使用4×4的整数DCT变换作为残差宏块的基本变换,这种变换的对象是经过运动补偿预测或者帧内预测后的包含残差数据的4×4块。这类变换是基于DCT变换,但又不同于DCT。
由于DCT变换是实数,量化时需对系数进行四舍五入,从而影响了运算的精度。同时,传统的DCT存在不匹配问题,产生参考帧的偏移,直接影响到重建图像的质量。
H.264建议的整数DCT变换的所有操作都使用整数算法,变换的核心部分主要是加法和移位。在整个变换和量化的过程中,只执行16bit的整数算法和一次乘法操作。只要在H.264建议基础上正确使用相应的反变化,编码器和解码器就不会出现不匹配现象。它的正反变换矩阵分别为
其中的系数基本上都是整数,1/2可以用移位代替。在变换中由于乘法均可由移位运算代替,因此,复杂度降低的同时,也解决了精度问题。
H.264中的宏块大小为16×16,对其中每个4×4大小的块进行上述4×4的DCT变换后,得到16个4×4的变换矩阵。为了进一步提高压缩效率,该建议还允许把每个4×4的变换矩阵中的直流分量DC,单独取出组成一新的4×4矩阵,对此矩阵进行Hardamard变换。宏块的数据传送顺序如图5所示。
3.4 熵编码
H.264建议同时采用了两种熵编码模式:基于上下文的二进制算术编码CABAC,以及可变长编码VLC。VLC编码又包括基于上下文的自适应可变长编码CAVLC。
CABAC方式利用了算术编码的方法,一个符号可以用少于1bit来表示。根据无误码的假设条件下的试验所得的数据可知,在所有码率下,CABAC的表现都强于CAVLC。但是CAVLC的抗误码性要强于CABAC,且运算的复杂度也远远低于CABAC。因此,H.264规定在Baseline Profile 中采用CAVLC,而在Main Profile 中采用CABAC进行熵编码。
4 小结
与以往的视频编码标准相比,H.264建议在其系统结构、运动估计和运动补偿、宏块的变换和量化以及熵编码等各方面都有明显的提高,具有更高的编码效率和更强的网络适应性。在相同的图象质量下,H.264/AVC的算法比以前的标准如H.263或MPEG-4节约了50%左右的码率。H.264的不同Profile既可以应用于实时通信,也可应用于对时延要求不高的其他应用中。此外,该建议增加了NAL层,负责将编码器的输出码流适配到各种类型的网络中,从而对网络传输具有更好的支持功能。同时,它具有较强的抗误码特性,可适应丢包率高、干扰严重的无线信道中的视频传输。因此,H.264支持不同网络资源下的分级编码传输,从而获得平稳的图像质量,能适应于不同网络中的视频传输,网络亲和性好。
在今天的Internet,对多媒体服务的需求呈现快速增长的趋势。由于受无线网络有限的带宽资源和传输能力的限制,目前市场上最终用户大部分是按照流量付费的方式来使用无线网络数据服务的,提高压缩效率是无线视频和多媒体应用的主要目标。 所以H.264/ AVC编码标准成为在多媒体信息服务(MMS)、包交换流服务(PSS)和会话应用方面最有竞争力的候选标准。同时,H.264/AVC没有任何对所有权的限制,是一个公共的开放的标准。因此,增强了各个生产商在制造工艺中对低成本的竞争,使得产品价格迅速下降,让这项技术可以为更多的人服务。
作者:刘頔 罗代升