HDTV基础知识:H.264编码技术 - [2]

Video.com.cn(视频网) 2008-04-12 13:16 来源: 高清世纪

三、H.264的具体内容

    通过上面的介绍,毋庸置疑,H.264在压缩性能上要比其他标准优越,甚至包括MPEG-4(2)(MPEG-4第2部分)。众所周知,MPEG-4(2)最大的特点就是面向对象的编码,对象概念的提出是具有先进性的,在对象已经提取出来的条件下确实能够获得很高的压缩比,但是如何提取对象成为摆在人们面前的一大难题。一个真正的对象提取算法应该是像人一样具有智能,能够像人一样进行思维并且是能够学习的,而目前的技术根本达不到这点,虽然有大量的文献介绍对象提取的方法,但我认为这些只是权宜之计,充其量只是往正确的方向上迈出的一小步。正因为如此,MPEG-4(2)面向对象编码的思想过于超前。ITU-T的VCEG放弃了对象这一不现实的概念,与目前科学技术的发展水平相适应,提出了H.264(10)(MPEG-4第10部分)(H.26L)视频编码标准,这是难能可贵的,更重要的是它同样实现了MPEG-4(2)面向对象编码的目标之一――高压缩比。

    视频信号的数据量是很大的,为了达到高效的压缩,必须充分利用各种冗余,一般来讲,视频序列里的冗余包括两类,一类是统计冗余,它包含:(1)频谱冗余,指色彩分量之间的相关性;(2)空间冗余;(3)时间冗余,这是视频压缩区别于静止图像压缩的根本点,视频压缩主要利用时间冗余来实现大的压缩比。第二类是视觉生理冗余,这是由于人类的视觉系统(HVS)特性造成的,比如人眼对色彩分量的高频分量没有对亮度分量的高频分量敏感,对图像高频(即细节)处的噪声不敏感等。

    针对这些冗余,视频压缩算法采用了不同的方法加以利用,但主要的考虑集中在空间冗余和时间冗余上。与以前的标准类似,H.264也采用了所谓的混合(hybrid)结构,即对空间冗余和时间冗余分别进行处理。对空间冗余,标准通过变换及量化达到消除的目的,这样编码的帧叫做I帧;而时间冗余则是通过帧间预测,即运动估计和补偿来去除的,这样编码的帧叫做P帧或B帧。

    与以前的标准不同的是,H.264在编码I帧时,采用了帧内预测,然后对预测误差进行编码。这样就充分利用了空间相关性,提高了编码效率。H.264的帧内编码框图(详图请参见《中国多媒体视讯》第七期)所示。 H.264帧内预测以16×16的宏块为基本单位。首先,编码器将与当前宏块同一帧的邻近像素作为参考,产生对当前宏块的预测值,然后对预测残差进行变换与量化,再对变换与量化后的结果做熵编码。熵编码的结果就可以形成码流了。由于在解码器端能够得到的参考数据都是经过反变换与反量化后的重建图像,所以为了使编解码一致,编码器端用于预测的参考数据就和解码器端一样,也是经过反变换与反量化后的重建图像。需要注意的一点是,用于帧内预测的这些参考数据不需要经过Deblocking Filter滤波,这与帧间编码的参考图像是不同的。

1、帧内预测

亮度Intra--16×16帧内预测模式如图(详图请参见《中国多媒体视讯》第七期)所示。

亮度Intra--16×16帧内预测模式

色差分量的8×8 4种帧内预测模式如图(详图请参见《中国多媒体视讯》第七期)所示。

色差分量的8×8 4种帧内预测模式

亮度分量的4×4 8种方向帧内预测模式。

图5亮度分量的4×4 8种方向帧内预测模式

2、 变换与量化

    将图像的当前像素值与预测值相减,就形成了预测残差。残差内仍然含有空间冗余,为了消除这种冗余,通常采用变换编码,即变换――量化――熵编码三步。变换并不压缩数据,它只是消除数据中的相关性,或者说将数据中的冗余(或相关性)以一种便于随后进行熵编码的方式表现出来。压缩是在量化和熵编码步骤中完成的。此外为了进一步减少数据量,编码器还对变换后的系数进行量化,它的实质是减少数据的取值范围以减少每一个符号的熵。它会造成信息的损失,是有损编码的一个重要步骤,它也是控制图像率失真(R-D)特性的一个主要手段。在H.264中,变换与量化两个步骤紧密相连。

整数DCT正变换的公式

H.264的反DCT变换公式

    图像编码中常用的变换是DCT,因为它在某种条件下近似于理论上最优的K-L变换。但是如果直接采用DCT的定义进行变换,会带来两个问题:一个是需要进行浮点数操作,从而造成系统设计上的复杂性;第二,由于变换核都是无理数,而有限精度的浮点数不可能精确地表示无理数,再加上浮点数的运算可能会引入舍入误差,这就使得在具体实现时会导致编解码的不一致(mismatch),即反变换的输出结果和正变换的输入不一样。为了克服这些问题,H.264采用整数DCT变换,使得变换操作仅用整数加减和移位操作就可以完成,这样既降低了设计复杂度,又避免了编解码mismatch,而由此带来的编码性能的减少微乎其微。需要注意的是,此时的变换已经不是真正的DCT,仍然称其为DCT变换只是为了说明它是由DCT推导而来,且为了和另一个变换(Hadamard变换)相区别罢了。

    H.264编码器的变换与量化过程见七期杂志。图中输入为预测残差,输出为准备进行熵编码的数据,一共有五类。为了更大程度地利用空间冗余,对于Intra 16×16帧内预测模式,H.264在对16×16的hma分量的16个4×4块进行DCT变换后,将每个4×4块的DC系数(还没有经过量化)提取出来,组成一个4×4的luma DC块,对其再进行4×4的哈达玛(Hadamard)变换。同样,对8×8 chroma分量的4个4×4块进行DCT变换后,也将每个4×4块的DC系数提取出来,组成一个2×2的chroma DC块,对其进行2×2的Hadamard变换,如图7所示。图中的数字显示的是所代表的块在码流中的顺序。对亮度分量直流系数的附加的(4×4)4阶Hadamard变换 对色度分量直流系数进行附加的(2×2)2阶Hadamard变换 DC系数的处理如图(详图请参见《中国多媒体视讯》第七期)所示。

    图中的输入是经过解码(CAVLC或CABAC)后的结果,输出的数据加上预测值后成为重建图像,重建图像用于帧内预测,或经过Deblocking Filter后显示并根据需要存放于缓存中,用于帧间预测。这里有一个地方需要注意,对于DC系数(无论是Intra 16×16 luma DC还是chroma DC),解码器是先反变换再反量化,这样做的原因在后面的内容中将做解释。MUX是指将DC系数按图8装配到AC系数中,形成完整的4×4块,用于后续的反DCT变换。

    目前H.264的主要不足就是复杂度大,但随着技术的不断进步,特别是半导体技术的发展,芯片的处理能力和存储器的容量都将会有很大的提高,所以今后H.264必然焕发出蓬勃的生命力,逐渐成为市场的主角。

评论】 【社区】 【 】 【关闭此页

发表评论

发表者:
内容: