H.264/AVC——新一代视频压缩编码标准及其应用前景

H.264/AVC——新一代视频压缩编码标准及其应用前景

【摘要】本文介绍了新一代视频压缩编码标准H.264/AVC的体系结构、为提高压缩效率和网络亲和性所开发和采用的部分新技术,给出了新标准应用前景的初步展望。
【关键词】标准 视频 编码 网络

H.264/AVC是一个新的视频压缩编码标准,它是由两个国际标准化组织ITU-T和ISO/IEC的专家于2001年12月成立的联合专家组(JVT)于2003年3月起草完成的,分别被ITU-T和ISO/IEC命名为H.264和ISO/IEC 14496-10 “Advanced Video Coding”(AVC)。
H.264/AVC新标准公布后被普遍看好,业内人士誉之为“下一代视频压缩编码标准”。它最主要的特点有两个:
1.在同等图像质量条件下,视频压缩比是H.263和MPEG-4的2倍;
2.对于各种网络环境,特别是IP和无线网络具有良好的适应性。

一、H.264/AVC的体系结构
H.264/AVC提出了在视频编码层(Video Coding Layer, VCL)和网络提取层(Network Abstraction Layer, NAL)之间进行概念性分割的新思路,前者是视频内容的核心压缩内容之表述,后者是通过特定类型网络进行传输的表述,这样的结构便于信息的封装和对信息进行更好的优先级控制。
VCL中包括编码器与解码器,主要功能是视频数据压缩编码和解码,它包括运动补偿、变换编码、熵编码等单元,它处理的是块、宏块和片的数据,并尽量做到与网络层独立,这是视频编码的核心,其中包含许多实现错误恢复的工具。VCL可以传输按当前的网络情况调整的编码参数。NAL则用于为VCL提供一个与网络无关的统一接口,它负责对视频数据进行封装打包,使其在能够在基于RTP/UDP/IP、H.323/M、MPEG-2传输和H.320协议的网络中传送。
H.264/AVC定义了三个类(profile),各自支持不同的编码功能,并分别说明了对遵从该类的编码器和解码器的要求。其中,基本类(baseline profile)支持帧内和帧间编码(使用I片和P片)以及使用上下文自适应可变长度编码(CAVLC)的熵编码。主类(main profile)支持隔行视频、使用B片的帧间编码、使用加权预测的帧间编码以及使用基于上下文的算术编码(CABAC)的熵编码。扩展类(extended profile)不支持隔行视频和CABAC,但增加了能够在已编码码流(SP和SI片)之间转换的模式,并改善了错误恢复性能(数据分割)。
基本类的潜在应用领域包括视频电话、视频会议以及无线通信;主类的潜在应用领域包括电视广播和视频存储;扩展类可在流媒体应用中发挥独特的作用。不过,每个类都具有足够的灵活性支持范围广泛的各种应用,因此,上述这些应用的例子并非定论。
图 一 H.264/AVC的基本类、主类和扩展类
图一表示了三类之间的关系和标准所支持的编码工具。从图中可清楚地看出,基本类是扩展类的一个子集,但不是主类的子集。
对编解码器性能的限制是由一组级(Level)定义的,每个级的限制体现在诸如抽样率、图像尺寸、编码比特率以及内存要求等参数。

二、H.264/AVC对视频压缩效率的改进
为了提高视频压缩比,H.264/AVC开发和采用了一系列新的技术,主要有:
1. 运动补偿采用小块和可变块。
小块变换:以往的视频压缩编码中常用单位为8×8像素的块。在H.264/AVC中却采用小尺寸的4×4块,由于变换块的尺寸变小了,运动物体的分割就更为精确。这样,图像变换过程中的计算量小了,而且在运动物体边缘的衔接误差也大为减少。当图像中有较大面积的平滑区域时,为了不产生因小尺寸变换带来的块间灰度差异,H.264/AVC可对帧内宏块亮度数据的16个4×4块的DCT系数进行第二次4×4块的变换,对色度数据的4个4×4块的DC系数(每个小块一个,共4个DC系数)进行2×2块的变换。
整数变换:H.264/AVC不仅使图像变换块尺寸变小,而且这个变换是整数操作,而不是实数运算,即编码器和解码器的变换和反变换的精度相同,没有“反变换误差”。此外,整数变换减小了运算量和复杂度,有利于向定点DSP移植。
可变块变换:在H.264/AVC中,每个16×16的宏块(MB)可分割成7种不同尺寸的块,在图像的平坦区可采用16×16的块,而细节区则采用尺寸较小的块。这种灵活、精细的宏块分割,更切合图像中的实际运动物体的形状,于是,在每个宏块中可包含有1、2、4、8或16个运动矢量。
2. 四分之一样本精度的运动补偿。
在H.264/AVC中采用了1/4像素甚至1/8像素的运动估值,即真正的运动矢量的位移可能是以1/4甚至1/8像素为基本单位的。显然,运动矢量位移的精度越高,则帧间运动补偿后的残差越小,传输码率越低,即压缩比越高。
在H.264/AVC中采用了6阶FIR滤波器的内插获得1/2像素位置的值。当1/2像素值获得后,1/4像素值可通过线性内插获得。
对于4:1:1的视频格式,亮度信号的1/4 像素精度对应于色度部分的1/8像素的运动矢量,因此需要对色度信号进行1/8像素的内插运算。
理论上,如果将运动补偿的精度增加一倍(例如从整像素精度提高到1/2像素精度),可有0.5bit/Sample的编码增益,但实际验证发现在运动矢量精度超过1/8像素后,系统基本上就没有明显增益了,因此,在H.264/AVC中,只采用了1/4像素精度的运动矢量模式,而不是采用1/8像素的精度。
3. 多个参考图像运动补偿: 在H.264/AVC中,可采用5个最多达15个参考帧进行运动补偿,即在编码器的缓存中存有多个已编码的参考帧,编码器从中选择一个编码效果更好的作为参考帧,并指出是哪个帧被用于预测,这样就可获得比只用前一个已编码帧作为预测帧更好的编码效果,最终有效地改善视频图像质量。
4. 帧内编码的方向性空间预测,即参照已解码域的方向性空间预测,而不采用变换域的预测,从而提高了预测质量。
5. 环内去块滤波:H.264/AVC定义了自适应消除块效应的滤波器,对预测环路内的水平和垂直块边缘进行处理,大大减小了方块效应。
除此之外,H.264/AVC开发和引入的新技术还有:分级块变换,短字长变换,精确匹配变换,加权预测,算术熵编码,上下文自适应熵编码,图像边界上的运动矢量,图像表示法与基准使用图像的能力退耦,基准序列与显示序列退耦等等,本文就不详述了。

三、H.264/AVC对传输环境适应性的改进
为了提高数据错误/丢失的鲁棒性和各种网络环境下操作的灵活性,H.264/AVC采用的一些关键设计包括:
1. 参数集结构:H.264/AVG引入了参数集(parameter set)的概念,每个参数集包含的信息可以用于大量的编码图像。一个序列参数集(sequence parameter set)包含用于一个完整的视频序列(一个连续的已编码图像的集合)的参数。序列参数集中的参数包括一个标识符(序列参数集标识符),帧数的限制和图像顺序计数,用于解码的参考帧的数目(包括短和长参考帧),已解码图像的宽度和高度以及逐行或隔行(帧或帧/场)编码的选择。一个图像参数集(picture parameter set)包含用于一个序列中的一个或多个解码图像的参数。每个图像参数集包括一个标识符(图像参数集标识符),一个选择的序列参数集标识符,一个选择VLC或CABAC熵编码的标记,所用片组的数目(和片组图类型的定义),可用于预测的在表0和表1中的参考图像的数目,初始量化参数和一个指示默认的解块滤波器参数是否可修改的标记。
典型情况下,一个或多个序列参数集和图像参数集在解码片头和片数据之前送给解码器。一个编码的片头引用一个图像参数集标识符和这个“活动的”图像参数集。这个“活动的”图像参数集保持活动直到另一个图像参数集被另一个片头引用而激活。图像参数集以类似的方式引用一个序列参数集标识符而“激活”该序列参数集。被激活的参数集保持有效(即它的参数被用于全部连续编码图像)直到不同的序列参数集被激活。
2. 灵活的宏块顺序:灵活的宏块次序是H.264/AVC的一大特色,通过设置宏块次序映射表(MBAmap)来任意地指配宏块到不同的片组,FMO模式打乱了原宏块顺序,降低了编码效率,增加了时延,但增强了抗误码性能。FMO模式分割图像的模式各种各样,重要的有棋盘模式、矩形模式等。当然FMO模式也可以使一帧中的宏块顺序分割,使得分割后的片的大小小于无线网络的MTU尺寸。经过FMO模式分割后的图像数据分开进行传输,以棋盘模式为例,当一个片组的数据丢失时可用另一个片组的数据(包含丢失宏块的相邻宏块信息)进行错误掩盖。实验数据显示,当丢失率为(视频会议应用时)10%时,经错误掩盖后的图像仍然有很高的质量。
3. 任意的片顺序(ASO):基本类支持任意的片顺序(ASO),也就是说,一个编码帧中的片可以遵循任一解码顺序。如果在解码帧中任一片中的第一个宏块与同一图像中此前解码的片相比具有较小的宏块地址,这时将使用ASO。
4. 数据分割:通常情况下,一个宏块的数据是存放在一起而组成片的,数据分割使得一个片中的宏块数据重新组合,把宏块语义相关的数据组成一个分割,由分割来组装片。在H.264/AVC中有三种不同的数据分割。 (1)头信息分割:包含片中宏块的类型,量化参数和运动矢量,是片中最重要的信息。 (2)帧内信息分割:包含帧内CBPs和帧内系数,帧内信息可以阻止错误的蔓延。 (3)帧间信息分割:包含帧间CBPs和帧间系数,通常比前两个分割要大得多。
帧内信息分割结合头信息解出帧内宏块,帧间信息分割结合头信息解出帧间宏块。帧间信息分割的重要性最低,对重同步没有贡献。当使用数据分割时,片中的数据根据其类型被保存到不同的缓存,同时片的大小也要调整,使得片中最大的分割小于MTU尺寸。
解码端若获得所有的分割,就可以完整重构片;解码端若发现帧内信息或帧间信息分割丢失,可用的头信息仍然有很好的错误恢复性能。这是因为宏块类型和宏块的运动矢量含有宏块的基本特征。
5. SP/SI同步切换图像。SP和SI片是特殊编码的片,它使视频解码器能够有效地在两个视频流之间切换和有效的随机存取。流媒体应用的共同需求是视频解码器要在几个编码流之间切换。例如,同一视频素材以多种码率编码,通过因特网传输,解码器试图以接收到的最高码率流进行解码,但是如果数据流量降低了又需要自动切换到低码率流。
SP片用于支持相似编码序列之间的切换(例如,以不同码率编码的同源序列),它不像I片那样增加码率。在切换点,有三个SP片,各用运动补偿预测编码(比I片更有效)。SP片A2可用参考图像A1解码,SP片B2可用参考图像B1解码。切换过程的关键是SP片AB2(称为切换SP片),它可用解码运动补偿参考图像A1的方式生成,去产生解码帧B2(即解码器输出帧是相同的,无论解码是从B1到B2,还是从A1到AB2)。在每一切换点需要一个额外的SP片(事实上以另一方向切换将需要另一个SP片BA2),但这可能比把帧A2和B2编码为I片更有效。

图 二 用SP片切换码流
图三是SP片A2编码过程的简图,它是通过从A2帧减去A1”(已解码的A1帧)的运动补偿版然后对残差进行编码而产生。与“标准的”P片不同,减法在变换域(在块变换之后)中进行。SP片B2以同样的方式编码。此前已解码A1帧的解码器可对SP片A2解码。

图 三 SP片A2的编码
SP片AB2的编码如图四所示。B2帧(我们要切入的帧)被变换,从A1”(我们从中切出的那一帧的解码)完成运动补偿预测。使用已解码的图像A1作为参考,“MC”块试图寻找B2帧的每个MB的最佳匹配。运动补偿预测被变换,然后从已变换的B2(即在切换SP片的情况下,减法发生在变换域)中减去。减去后的残差被量化、编码和传输。

图 四 SP片AB2的编码
此前已解码A1”的解码器可解码SP片AB2以产生B2”。对A1”作运动补偿(用运动矢量数据编码作为AB2的部分),变换并加上已解码和已标度(反量化)的残差,然后对结果做反变换以产生B2。

图 五 SP片AB2的解码
如果流A和B是同一原始序列以不同比特率编码的不同版本,从A1”(SP片AB2)得出的B2的运动补偿预测将是完全有效的。结果表明,用SP片在同一序列的不同版本之间作切换比在切换点插入I片显著的更有效。
SP片的另一个应用是提供随机存取和类似VCR的功能。例如,一个SP片和切换SP片放在帧10的位置,解码器可以通过解码A0从A0直接快进到A10,然后解码切换SP片A0-10通过从A0预测去产生A10。

图 六 用SP片快进
SI片是扩展类支持的具有更进一步交换功能的片。它的应用与SP片类似,不同的是预测是从此前解码的重构帧样本用4×4帧内预测方式形成的。SI片可用于从一个序列到另一个完全不同的序列的切换,在这种情况下,运动补偿预测无效,因为两个序列之间不存在相关性。
6. 设置NAL单元:每个NAL单元是一个数据包,它采用统一的数据格式,包括单个字节的包头信息、多个字节的视频数据与组帧、逻辑信道信令、定时信息、序列结束信号等。包头中包含存储标志和类型标志。存储标志用于指示当前数据不属于被参考的帧。类型标志用于指示图像数据的类型。在NAL单元中插入了冗余编码图像,可自适应地增强了抗误码能力。

四、应用前景
面对网络与多媒体日益广泛的应用,人们对媒体信息的消费需求不断增加,统一的国际标准是使多媒体信息和技术产品在全球范围内通用的必要基础。
目前,在信息资源中对视频信息的开发和利用是很不够的。众所周知,视频信息具有直观性、确定性、高效性等特点。在话音、数据和视频构成的多媒体信息流中视频流将逐步成为主要组成部分。只要看看目前数字电视、网络电视、手机电视、移动电视、会议电视、可视电话、网上教育、网上医疗、网上游戏、视频点播、彩信等多种视频业务的蓬勃发展,就可以知道下一代网络中信息流的主角定将是多媒体视讯流。
H.264/AVC标准的开发目标是实现多媒体业务在各个领域的应用,涉及面非常广泛,不同的应用对应的码率、分辨率、质量和服务也不同。
H.264/AVC标准使运动图像压缩技术上升到了一个更高的阶段,在较低带宽上提供高质量的图像传输是H.264/AVC的应用亮点,因此,H.264/AVC将对诸如数字卫星广播、数字视频存储以及互联网传播等一系列技术进行改进,以提高视频质量,扩展多媒体业务的应用范围。
H.264/AVC的基本类无需使用版权,具有开放的性质。它不仅比H.263和MPEG-4节约了50%的码率,而且对IP和无线网络传输具有更好的支持功能。它引入了面向IP包的编码机制,有利于网络中的分组传输,支持网络中视频的流媒体传输。这对目前因特网传输多媒体信息、移动网中传输宽带信息等都具有重要意义。
H.264/AVC提供包传输网络中处理包丢失所需的工具,以及在易误码的无线网中处理比特误码的工具, 能够更好地处理信息包和数据丢失,具有较强的抗误码特性,可适应丢包率高、干扰严重的无线信道中的视频传输。
H.264/AVC支持不同网络资源下的分级编码传输,在所有码率下都能持续提供较高的视频质量。既能工作在低延时模式以适应实时通信的应用(如视频会议),又能很好地工作在没有延时限制的应用,如视频存储和以服务器为基础的视频流式应用。
H.264/AVC可满足多种应用的需求,目前主要应用在以下领域:基于电缆、卫星、Modem、DSL、无线及移动网络等信道的数字电视广播、可视电话、视频会议、实时监控、流式多媒体业务、低比特率下的移动多媒体通信如彩信、手机电视等,以及视频数据在光学或磁性设备上的存储等。有关专家认为,H.264/AVC最终将取代目前已获得广泛应用的MPEG-2标准。

参考文献
Iain E. G. Richardson, H.264 and MPEG-4 Video Compression, John Wiley & Sons Ltd, 2003