在1995年ITU-T完成了用于视频电话的H.263标准之后,该组织ITU-T视频编码专家组VCEG着手在两方面开始进一步的研究:一是短期研究,努力在H.263中增加许多额外的特征,这就形成H.263的第二版本H.263+和第三版本H.263++;二是长期研究,着手制定低比特率的视频通信新标准,这就是H
新的视频编码标准H.264与H.261/H.263和MPEG-X的视频编码标准有很大改进,它不仅含有一个规定视频编码算法的视频编码层(VCL,Video Coding Layer),还包括一个规定网络传输规范的网络提取层(NAL,Network Abstraction Layer)。H.264的视频编码层采取的编码框架仍然是传统的混合编码框架,H.264编码效率的提高也不只是其中某一项新的编码技术所产生的决定性的结果,而是多种新技术所产生的细微的效果积累而致。这些新技术包括:多种新的帧内预测方法、可变尺寸块的运动补偿技术、多参考帧的运动补偿技术、4×4整数变换技术、新的环路滤波技术等。与先前的标准相比较,H.264的应用前景更为广泛。例如它允许在Internet中以1Mbit/s的速率传送电视质量的视频信号,它可以使8 MHz的模拟带宽中容纳两倍于MPEG-2编码的数字电视频道,它使无线视频通信成为可能,它对传统的数字媒体存储技术也将产生巨大的影响。可以肯定,H.264标准的制定标志着有限失真数字视频编码技术开始走向成熟。H.264的主要功能目标如下:
●高压缩率,在所有的速率上,比H.263节省约50%的比特率,在高比特率时有优秀的图像质量;
●采用简洁的设计方式,简单的语法描述,避免过多的选项和配置,尽量利用现有的编码模块;
●低时延,对不同的业务灵活地采用相应的时延限制;
●加强对误码和丢包的处理,增强解码器的差错恢复能力;
●在编解码器中采用复杂度可分级设计,即在图像质量和编码处理之间可分级处理,以适应高或低复杂性的具体应用;
●提高网络适应性,采用“网络友好(Network friendliness)”的结构和语法,以适应IP网络、移动网络的应用;
●基本档次(Baseline profile)的使用无需版权。
H.264建议的特点可以归纳为三个方面:一是注重实用,采用成熟的技术,追求更高的编码效率,简洁的表现形式;二是注重对移动和IP网络的适应,采用分层技术,从形式上将编码和信道隔离开来,实质上是在源编码器算法中更多地考虑到信道的特点;三是在混合编码器的基本框架下,对其主要关键部件都做了重大改进,如多模式运动估计、帧内预测、多帧预测、统一VLC、4×4二维整数变换等。
最后,必须说明的是,H.264优越性能的获得不是没有代价的,其代价是计算复杂度的大大增加,据估计,编码的计算复杂度大约相当于H.263的3倍,解码复杂度大约相当于H.263的2倍。H.264的主要特征表现为:
1、H.264的分层处理
与早期的标准(如H.261 /H.263、MPEG-1/MPEG-2)一样,H.264标准并没有明确定义编解码器算法,而是定义了编码视频码流的结构和这个视频码流的解码方法。H.264编解码结构功能框图如图1所示。H.264算法在概念上可以分为两层:视频编码层(VCL)负责高效的视频内容表示;网络提取层(NAL)负责按照网络所要求的适当方式对数据进行打包和传送,H.264编码器分层结构图中的H. 324/M表示用于移动的H.324系统。
1)H.264的视频编码层
由H.264所定义的编码方案表面上类似于已获得成功应用的视频编码标准(如H.263和MPEG-2)。也包括了基于块的运动补偿,基于DCT变换的残差编码,因比特率控制而引入的可变量化步长,Zig-Zag扫描和系数的VLC编码等。然而,H.264草案的VCL层除了通用的基于块运动补偿的混合编码之外,还具有一些其它视频编码建议所没有的新特性。为了增加标准应用的灵活性,H.264建议与以前的建议一样,没有考虑视频的前处理和后处理功能。
在VCL中,运动补偿的过程不同于先前标准,一个16×16的宏块可以具有7种不同形状和尺寸的块运动预测,最小的块尺寸可以是4×4,因此每个宏块可以有1、2、4、8或16个运动矢量,缺省的运动矢量精度通常为1/4像素,最初草案中H.264选项也支持运动矢量1/8像素精度(后来不考虑1/8像素精度)。支持小数取样内插滤波、支持多参考帧图像,除了I帧、P帧和B帧外还支持两种类型的S帧,即SP帧和SI帧。SP帧类似于P帧,是一种充分利用运动预测编码来去除时间相关性的方法,它与P帧区别在于即使采用几个不同参考帧预测时,也可以允许有相同的重建帧。这种S帧的引入,对于在比特流中进行帧切换、拼接、随机存取、快进、快退等功能的实现更为方便。在编码器预测环路采用了去方块效应滤波。
2)H.264的网络提取层
网络提取层(NAL)负责使用下层网络的分段格式来封装数据,包括组帧、逻辑信道的信令、定时信息的利用或发序列结束信号等。例如,NAL支持视频在电路交换信道上的传输格式,支持视频在Internet上利用RTP/UDP/IP传输的格式、NAL包括网络提取层的头信息、段结构信息和实际载荷信息,即上层的VCL数据(如果采用数据分割技术,数据可能由几个部分组成)。NAL提供适当的映射方法将头部信息和数据映射到传输协议层上,可以减少在分组交换传输中组帧和重同步所需要的资源开销。
为了提高在不同特性的网络上定制VCL数据格式的能力,H.264的网络提取层在VCL和NAL之间定义了基于分组的接口规范、打包方式等(即上述NAL对VCL数据的承载过程),也包括了相应的信令内容。这样,高效率编码任务和网络友好性任务就由VCL和NAL分别来完成。
2、H.264的档次和级别
H.264标准规定了三个档次,它们是基本档次(Baseline Profile)、主档次(Main Profile)和扩展档次(Extended Profile),分别对应于不同场合的应用。后来又增加了一个新的扩展档次,即专业扩展档次(Extended Professional Profile),其主要应用为超高质量的视频图像、数字影院等。属于某个档次的H.264解码器必须支持这个档次所包括的所有内容,而编码器则不需要支持这个档次的所有内容,但是要符合标准规定的码流结构。H.264三个主要档次所规定的内容如下:
1)基本档次:基本档次包含除了下述两部分之外的所有H.264标准所规定的内容。这两部分是:
●B帧、加权预测(Weighted Prediction)、自适应算术编码(CABAC,Context-based Adaptive Binary Arithmetic Coding)、场编码(Field Coding)及其视频图像宏块自适应切换场和帧编码(MB-AFF,Macroblock Adaptive Field/Frame Coding)。
●SP/SI片(slice)和片的数据分割(Data Partitioning)。
2)主档次:首先主档次包含了基本档次中不包括的上述第一个部分,同时主档次不包含基本档次中所包括的灵活宏块顺序(FMO,Flexible Macroblock Ordering)、任意片顺序(ASO,Arbitrary Slice Ordering)和可冗余的图片数据(Redundant Pictures Features)这些内容。
3)扩展档次:扩展档次包含了除自适应算术编码之外的所有H.264标准所规定的内容。H.264三个主要档次所采用的技术分类如图2所示。
3、多种帧内预测模式
在以往的视频编码标准中,帧内图像编码是直接对宏块进行DCT变换、量化和熵编码生成输出比特流的,帧内编码的数据量往往要比帧间编码图像大很多,在强制刷新、码流控制以及增加抗误码性能时引入的帧内编码往往造成码率的不平稳现象。H.264在帧内编码作了进一步改进,类似于帧间编码引入了帧内预测方法,即对编码宏块进行不同模式的帧内预测,然后对预测误差信号进行DCT变换,避免了以往帧内编码的缺陷。帧内4×4亮度块共有9种可选帧内预测模式,帧内16×16亮度块共有4种可选帧内预测模式。而帧内8×8色度块有4种预测模式。
4、多模式高精度帧间预测
在视频编码标准中,帧间预测是一种充分利用时间相关性去除时间冗余数据的有效编码方法。宏块通常是进行预测的基本单元,一个宏块对应一个运动矢量。在高级预测模式下,一个宏块的四个8×8亮度块各自对应一个运动矢量。然而在H.264编码器中,块的划分要复杂得多,它支持范围从16×16到4×4大小的运动补偿亮度块尺寸,也就是说每个宏块可以划分成16×16、16×8、8×16或8×8四种子块模式。如果选择8×8模式,则每个8×8块可以进一步划分成以下四种子块模式:8×8、8×4、4×8、4×4。由此可见,H.264帧间编码是一种多模式帧间预测编码。对于宏块中的每一个块或子块都有一个独立的运动矢量,每个运动矢量必须进行编码并通过码流来发送。
在一个宏块中残差数据以图3顺序进行编码发送。如果一个宏块以16×16的帧内模式编码,则首先发送标志为“-1”的块,它是由每个4×4亮度块的DC系数组成,接着发送编号为0~15的16个4×4亮度残差编码块(在16×16帧内宏块模式下,标号为0~15的这些4×4亮度残差块DC系数设为0),再接着发送标号为16和17的2个2×2色度块,它分别由4×4的Cb和Cr系数的DC系数组成,最后发送标号为18~25的8个4×4色度残差编码块。另外,对于H.264标准,缺省的运动补偿是1/4像素精度,比MPEG-1、MPEG-2、MPEG-4以及H.261、H.263的整像素或半像素相比具有更高的精度。从而使得块的匹配更加精确,运动补偿后要进行变换编码的残差数据更少。
5、多参考帧预测
在H.264中,允许编码器使用多于一帧的先前帧进行运动估计,这就是所谓的多帧参考技术。例如选用2帧或3帧刚刚编码好的参考帧,编码器将选择对每个目标宏块能给出更好的预测帧,并为每一个宏块指示是哪一帧被用于预测的。
6、4×4块的整数变换
与以往的视频编码标准相似,H.264对残差采用基于块的变换编码,而且这种变换是整数操作而不是实数运算,其过程和DCT基本相似。这种方法的优点在于:在编码器和解码器中可以得到精度相同的正变换和反变换,便于使用简单的定点运算方式。也就是说,这种变换不会出现“反变换误差”,从而消除因变换精度所引起的图像失真。变换的最小单位是4×4块,而不是以往常用的8×8块。由于用于变换块的尺寸的缩小,运动物体的划分更精确,这样,不但变换计算量比较小,而且在运动物体边缘处的衔接误差也大为减小。为了使小尺寸块的变换方式对图像中较大面积的平滑区域不产生块之间的灰度差异,可对帧内宏块亮度数据的16个4×4块的DC系数(每个小块一个DC系数,共
7、统一的熵编码
H.264建议中熵编码有两种方法:一种是对所有的语法单元采用统一的UVLC(Universal Variable-Length Coding),另一种是采用内容自适应的二进制算术编码器(CABAC)。CABAC是可选项,其编码性能比UVLC要好,主要体现在三个方面。首先,基于内容的编码利用了编码符号的条件概率特性;其次,算术编码允许分配给每个符号非整数个比特;第三,自适应算法允许熵编码器自适应非稳定概率分布的符号特性。但计算复杂度要比UVLC高。UVLC使用一个长度无限的码字集,采用规则的码表,很容易产生一个码字,解码器也很容易识别码字的前缀,当发生比特错误时ULVC能快速获得重同步,它是H.264的基本编码方法。