龙岩烟草公司社会招聘:H.264/MPEG-4视频编码压缩标准

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 22:48:04

H.264/MPEG-4视频编码压缩标准

摘要:

H.264/MPEG-4 AVC 是由 ITU-T VCEG 和 ISO/IEC MPEG 标准委员会最近共同研制完成的视频压缩标准。和早期的视频标准比较,它有更高的压缩性能,能在交互的和非交互的视频编码方面有更高的编码效率,尤其在高码率的情况下能够提供更好的视频效果。同时,该标准支持灵活的编码环境,即使在发生数据错误和丢失的情况下。和预期的一样,高效灵活的编码也使得它比早期的标准更加的复杂。

在这篇文章里,我们首先简短的介绍该标准支持的视频编码工具以及这些工具如何在特定的档次下使用。和早期的视频标准相比较,该标准允许用户根据需要选择特定的档次同时又能够被其他用户直接使用。接下来,我们介绍如何使用该标准不同的编码工具,以及如何使用这些工具编码的相关问题。 我们然后评估编制程序表现根据对整体改善的贡献由各自的工具、选择在这些工具之内, 和工具的重要组合提供, 在代表性套录影试验顺序和电影夹子。 其次, 我们介绍一些标准的另外的组成部分,譬如, 提供系统支持的工具,不同层次的档次以及复杂的编码器和解码器。最后, 我们通过我们的辨认以及标准实际应用的表现和众多的支持工具,总结我们分析后的结果。

 

1、介绍

早期的MPEG系列的音频和视频编码标准如MPEG-1和MPEG-2已经带来了许多人们熟悉的消费产品,如VCD和DVD等等,这些产品已经深入人心。MPEG-1方式的编码能够在互不交错的环境下以低分辨率和位率[ 23 ] 提供VHS级别的影象质量, MPEG-2方式的编码能在交错的环境下提供更高级别的分辨率和位率[ 24 ]的数字电视和HDTV。MPEG-1标准于1992年完成,MPEG-2标准于1994年完成。在MPEG-1和MPEG-2完成之时,他们代表了当时的数字编码技术的可行性和可用性,并且和这些标准一致的相对低廉的消费产品迅速冲击了市场,至少主导了市场5年以上的时间。

 

MPEG-4是最新发布的新一代多媒体应用和服务标准。虽然MPEG-4标准是通过不停的加入现有的成熟的技术逐步完善的,但它的核心部分主要是在5年内(1995-1999)完成的.预测MPEG-4后的视频编码标准应用于未来的多媒体应用和服务,如交互式TV、网络电视等等需要访问音频和视频编码对象的地方。除了传统的音频、视频编码系统以及兼容前期的MPEG系列的标准,MPEG-4系列还有许多其他组成部分。在这片文章上我们主要讨论视频编码方面的限制条件。MPEG-4视频编码标准是作为一个视频编码标准的工具箱而设计的,具有编码功能并作为独立的视频对象访问,并且该对象是可测量的,同时还可以在不稳定的网络中传输而不受影响,进一步,MPEG-4编码标准更高效的矩形编码方式而不需要将视频场景划分为一个个先后的对象再进行编码。作为MPEG-4标准第二部分的核心部分,这些非常先进的编码技术完全有能力完成不同环境下视频对象的编码,和早期的编码标准相比较,在相同的条件下毫无疑问的提高了编码的效率。 从高效编码的观点来看,MPEG-4标准是在MPEG-2和H.263标准的基础上发展起来的,同时,它又在相同的编码框架下增加了高效的/新的算法。即便如此,MPEG-4的第二部分和早期的相比,提供了一个合理的目标,仅仅适度的增加了一些算法的复杂性。由于标准的基本档次是主要的关注点,复杂性的增加对于某些特定的应用是需要的,而不是纯粹为了矩形视频的应用。

另一个方面,高效的交互式的多媒体应用比预期的要求更高,一些实际应用比如网络多媒体,无线视频,个性化的视频收音机,网络电视等等,这看上去对高性能的视频压缩同时保持高质量的视频性能似乎有无穷无尽的要求。H.264/ MPEG-4 AVC标准是前面提到的新一代的视频编码标准。这个标准的核心部分是在2003年6月份的最终草案国际标准会议上完成的,当时专业的视频扩展应用已经提上日程。它的注意点就是在压缩方面要远远好于早期的标准。这个标准最初是由ITU-T VCEG组织在1999–2001年间最初从事的很有前途的H.26L项目发展而来,为了共同合作开发着这个标准,又由于2001年年末MPEG组织的加入,ITU-T VCEG联合委员会和ISO MPEG专家委员会从此诞生。VCEG组织称这个最终的联合标准为H.264,而MPEG组织称它是MPEG-4的第十部分。这个标准的另一个名字为MPEG-4,先进视频编码标准。另外,该标准还有一个非正式的说法,视频联合工作组标准,因为它是由视频编码专家标准委员会和运动图像专家标准委员会共同合作完成的。不管怎么命名,该标准的具有高效的压缩性能,是MPEG-2标准的2倍压缩效果。和预期的期望那样,高效的压缩性能是由于算法复杂度的大幅度提高。在解码器方面,该标准是MPEG-2标准的4倍复杂度,而编码器竟高达9倍。

这个标准和早期的相比,有很多相同之处。比如运动矢量补偿技术、算法框架以及优化思想等等。同样,那些相对独立的工具可以根据场景和位率而调整编码的效果。现在很多优秀的文章中都介绍过该标准,我们这篇文章主要涉及实际的视频编码技术,以便帮助编码设计人员选择不同的编码工具/档次和参数。文章的后面部分包含了这些介绍。

 

文章的第二部分是对H.264/MPEG-4 AVC标准的总体介绍。我们将把AVC标准的编码结构和算法等等和早期的标准进行比较的方式向大家介绍。文章的第三部分介绍了预测模式,如帧内预测, 多帧和多种宏块类型的运动补偿预测。文章的第四部分介绍一些关键的概念。如变换、量化以及环路滤波。文章的第五部分,主要关注熵编码技术,如上下文相关的自适应的变长编码算法和上下文相关的算术编码算法。文章的第六部分,主要关注的是和早期的标准相比较,该标准的一些新颖的地方是如何确保实现高效的编码目的,尽管两者有许多相似的地方。文章的第七部分根据实际的测试数据评估和分析标准包含的相关的工具。文章的第八部分讨论一些特殊的工具,虽然并不影响编码的效率,但是提供了很好的支持使得该标准可以支持不同的应用。文章的第九部分介绍当前档次和层次下的框架以及该档次下的主要应用。文章的第十部分提出总结。2. H.264/MPEG-4

 

2. H.264/MPEG-4 AVC 编码概况

我们现在介绍H.264/AVC标准的编码过程的大体概况。

2.1. 编码框架

AVC标准的基本编码框架和早期的标准相似,一般也包括运动矢量补偿-变换模块。视频编码是由一幅一幅图像构成的,每一幅被编码的图像首先被分割成许多的条带(每幅图像至少由一个条带组成)。在标准中,条带是独立编码的单元,和早期的标准中每个条带独立编码是类似的。在早期的标准中,每个条带由许多的宏块组成,每个宏块由一个16x16大小的亮度宏块和两个色度宏块共同组成。在文章的后面部分,macroblock和MB将会交替使用,表示宏块。每个16x16的亮度宏块被分割成16x16, 16x8, 8x16, 和8x8类型甚至更小,每个8x8色度宏块分割成8x8, 8x4, 4x8 和4x4类型。4x4子宏块称为基本块。视频数据的组织层次关系如下:

图像[条带{宏块(子宏块(块(像素点)))}]

目前,该标准只支持4:2:0色度格式以及亮度和色度的样本精度是0~255范围。在4:2:0色度格式下,每个宏块由两个8x8色块和一个16x16宏块组成。该标准正在扩展4:2:2和4:4:4色度格式已及更高的样本精度。

前面提到,条带是作为独立编码的单元,就像图像是数据访问单元一样。

标准中有三种基本的条带类型:ARTICLE IN PRESS

 

I—(帧内类型), P—(前向预测类型也称帧间类型), 和B—(双向预测类型)条带。

 

这些基本的术语和功能和早期扩展标准I-, P-, and B-图像概念类似[9–11].最初的双向预测类型是基于MPEG标准的想法提炼出来的。在H.264/MPEG-4 AVC标准里面,帧内条带宏块是指根据当前帧图像的特定关系(没有参考其它帧图像)而压缩的。具有某些特殊特点的帧内图像被称为关键帧图像。任何在该关键帧图像后面的图像不需要参考关键帧前面的任何图像。所以在关键帧解码后的所有的后续编码图像(按照编码的序列)在解码的时候不需要参考该关键帧前面的图像。并且在解码的序列中,关键帧可以作为随机访问的起始图像或者解码的入口图像。帧内编码图像也被称为关键帧图像。

前向预测图像由运动补偿预测的宏块压缩组成,当然,该类型图像也可包含帧内编码宏块类型。但是同一个宏块只能够使用一个运动预测矢量(和双向预测可以具有两个运动预测矢量加权计算不同)。不像早期的标准,作为运动补偿参考的像素在显示次序上既可以是先显示的,也可以是后显示的,该类型的图像只能参考先显示的图像。并且,帧内图像和前向参考图像可以作为或则不作为参考图像而标记。双向参考图像同样也由运动预测宏块组成,和前向预测图像一样,也可以包含帧内预测宏块。

双向预测图像的宏块可以使用两个运动预测矢量(通过加权平衡计算最优运动矢量)。和早期标准相似,其中的一个运动预测矢量在显示序列上可以是已显示的或则后显示的,但不同之处,两个运动预测矢量都可以是根据同一个参考帧计算出来的。不像早期的标准,双向预测图像还可以作为参考图像被后续编码图像参考。所以和传统的B-slices不同,该标准中B-slices不被用作运动预测矢量参考,一般被称为存储类型图像,是由于这种类型的图像需要用来存储。此外,帧内图像和前向预测图像,双向预测图像,前两者被另称为起源图像。同时这两者可在多个编码的数据流中切换,比如同一内容在不同的比特率下编码,比如一些流媒体应用。

      

2.2. 编码方法纵览

H.264/MPEG-4 AVC标准,虽然使用了新的编码算法和概念,但是仍然是在早期标准的运动矢量补偿等算法的框架下建立起来的。所以,虽然在预测/编码模式,变换或者熵编码的实现细节方面是有所不同的,但是总体结构和思想是相同的。该标准最初的目标是极高的编码效率,同时在编码的某些应用方面具备错误掩盖等功能。

和MPEG-2, MPEG-4 part 2及H.263不同,H.264暂时不支持分层编码。

和MPEG-4弟2部分不同的是,H.264不支持基于对象的视频编码或者自适应的基于对象的编码。

AVC标准主要关注于达到高效的编码效率,不仅仅是压缩,同时也为了更好的适应交互情况下的视频编码。该标准设计了许多高效的编码算法应用于不同的环境和场合。和MPEG-2及MPEG-4第二部分类似,该标准也包括了档次和级别的概念。但是,这些不同的算法只会在它们支持的相应的档次和级别下启用。为了更好的介绍该标准,我们将H.264和MPEG-2以及MPEG-4的第二部分做了对比,结果在表1中。

2.3. 档次介绍

AVC标准是一个丰富的视频编码工具集合,但是实际应用并不需要全部使用这些算法。例如错误隐藏就不需要应用在本地视频存储以及网络非常好的情况下。如果每个解码器集成所有的实现算法,将会使解码器变得十分的复杂并且非常不利于使用。因为目前很多嵌入式环境根本无法提供超强的计算功能。

另一方面,实际应用只需要特定的比特流,这些比特流能够以较低的存储量表示大量的视频信息。为了更好的适应不同的应用环境,标准定义了相应的算法子集,这些算法子集完全能够应付特定的应用。这些子集在标准里面被称为档次。每个解码器需要选择一个算法子集来执行。目前AVC标准定义了三个档次,如果需要,将会有更多的档次。

*基本档次

*主要档次

*扩展档次

图1对这三个档次给出了相应的图示。

基本档次

自适应宏块编码

任意条带顺序

冗余的条带

扩展档次

+ SI, SP slices

数据分割

主要档次

帧内、帧间编码  双向预测编码

上下文自适应变  交互图像编码

长编码          交互场编码                                          上下

帧/场自适应编码         文算术编码  

                               宏块自适应帧/场编码

图1 H.264档次结构图

基本档次包含了帧内预测、前向预测,增强的错误隐藏算法以及上下文相关的自适应的变长编码。但不包含B-slices、SI- slices、SP-slices、隔行扫描以及上下文算术编码。基本档次主要是为低延时的嵌入式或者移动应用设计的,比如移动通信,芯片处理能力相对不高,经常发生数据丢包现象。所以算法复杂性相对不能够太高,并且强烈需要抗容错方面的能力。在3个档次中,该档次的压缩效果相对最差。

扩展档次是基本档次的父集。该档次除了包含基本档次所有的算法以外,还包含B-, SP- and SI-slices,数据分割和隔行扫描等算法。但仍然不包含上下文算术编码算法。该档次不仅复杂,编码效率也很好。该档次主要是是为了流媒体应用设计的。

主要档次除了错误隐藏,数据分割以及SI和SP以外,其它的都包含。既包含基本档次和扩展档次共有的部分,如帧内预测、前向预测、上下文自适应熵编码。也包含扩展档次才有的双向预测和隔行扫描算法等等。主要档次是为了提供更加高效的编码效率。应用于高清电视等方面。

关于档次的详细语意定义参考9.1。

 

2.4. H.264/MPEG-4 AVC 编码器

和早期的标准相似,AVC也详细定义了比特流的语法,就好像一个解码语义集,描述了如何将比特流内特定的语法元素解码后变成一幅幅图像。所以解码器因该是一个全集,但不一定全部启用,而编码器相对比较灵活。视频处理永远有一个接不开的矛盾:为了使图像质量好,编码器就要使用复杂的算法,而这就使得应用要求大为提高;而为了提高编码速度,就要使用折中的快速算法降低性能来实现。

实际上,视频联合工作组在H.264/MPEG-4 AVC标准里做了大量的相当有意义的工作,提出了许多有价值的预测模式,这些预测模式在高质量的视频编码方面具有重要的意义。AVC虽然和早期的标准在编码结构和流程上相似,但是增加了许多重要的改进,这必将大幅度提高算法的复杂性,使得应用变得相应困难些。

变换

-

量化、扫描

码率控制

变长编码/上下文自适应编码/上下文算术编码和比特流格式数据

输出缓冲区

逆扫描,反量化

反变换

+

环路滤波

一宏块编码完成/参考图像数据存储

运动补偿

运动估计

确定帧内/帧间宏块模式

帧内预测

原始数据

计算预测数据

图2 H.264/MPEG-4编码流程图

图表2给出了每个宏块编码的流程图。这个经典的编码流程图给出了编码的详细过程,和早期的相比,有些不同。H.264/MPEG-4 AVC中的运动补偿预测和帧内预测一样包含很多的预测模式,这需要多参考帧以及许多可变的块类型[20,32]。同时,每个条带被分割成宏块一一编码。预测模式是通过预测数据和原始数据相减后,并在众多的预测模式候选集中选择出来的。通过原始数据和预测数据相差得到的剩余的残差以4X4矩阵大小进入变换、量化、扫描并熵编码或者算术编码。图表的其他部分描述了一个编码器内的解码器部分,该部分包括逆扫描、反量化、反变换,环路滤波以及运动预测补偿和帧内预测。在整个编码过程中,关键部分是运动估计,宏块类型的选择,以及码率控制。和早期标准比较,很多方面是相似的,但在原理方面却更加的复杂。下面逐一介绍相应的算法功能和使用条件:

运动补偿预测需要使用许多的宏块类型,如16X16, 16X8, 8X16, 8X8, 8X4, 4X8,和4X4类型宏块。另外,在1/4像素的运动补偿中,1/2像素插值点使用6抽头的水平和垂直滤波器,1/4像素插值点使用2抽头的水平和垂直滤波器。

帧内预测只针对特定的16X16和4X4类型的宏块,并且只使用当前帧解码后的像素点作为参考像素点。

参考帧的数量是根据特定的档次和级别而决定的。

预测后的残差信号以4X4块类型进入变换。

为了避免块之间出现不连续,循环中加入了环路滤波,这意味着解码器也必须使用相同的滤波器。

熵编码使用3种不同的编码方法:哥伦布编码,自适应上下文变常编码,自适应上下文算术编码。

交互式编码和早期的标准有些不同,有4种可能的编码方式:帧编码,场编码,自适应的帧/场编码,宏块自适应的帧/场编码。

编码最后过程的结果就是AVC标准的比特码流。这个比特流就是用来存储的形式化的图像数据格式或者通过特定的网络发布出去的编码最终结果,最后送到解码器里还原成视频图像供人们观看。

变长码/上下文相关变长码/上下文算术码解析及比特流解析

输入

逆扫描、反量化

反变换

+

环路滤波

一宏块编码完成/参考图像数据存储

运动补偿

帧内预测

计算预测数据

图3 H.264/MPEG-4解码流程图

我们现在讨论解码器,有些内容前面已经简要的介绍了。图表3 介绍了AVC解码器的一个大概的流程。 它包含了所有的必须的解码信息,如图像和条带的类型,宏块类型,子宏块类型,参考帧索引,宏块运动矢量,环路滤波控制,量化及反变换等等。图3 和编码器中的解码流程有些类似。下面简单介绍解码流程:

在熵编码解析完成后,得到的变换系数将被反扫描,接下来是反量化和反变换。在反变换后得到4x4块大小的残差数据后,将根据宏快的类型(或者子块类型)、参考帧、运动矢量和已解码地图像数据得到相应的预测数据(帧内预测数据或者帧间运动补偿预测数据),再进行相加(补偿)得到重构图像数据。重构图像帧再经过环路滤波得到最后显示图像,这就是我们在显示平台看到的视频图像。但是,经过环路滤波后的帧图像数据还要经过相应的排序才能够恢复成最终的顺序显示图像数据。到此为止,解码过程基本完成。

2.5.编码器的组成

我们现在详细介绍在图2和图3中的各个组成部分。

2.5.1.变换

AVC标准明确指定使用4X4整数变换(MPEG-2和MPEG-4标准使用8X8浮点变换),这个变换很完美。在AVC标准里面,变换过程总是利用预测数据构建残差,即使是帧内宏块类型。也就是说,宏块像素点的值通过预测,不管是根据当前图像内相邻宏块像素点值(帧内编码情况)还是根据已解码的2个参考图像的像素点值(帧间编码情况)。变换的目的主要是为了能量上的聚集,达到一个接近的上三角矩阵类型,使得相应的位置出现不为“0”的概率较大。

 

2.5.2. 量化和扫描

标准为量化过程制定了精确的数学公式,和MPEG-2标准不一样,当前版本的AVC不支持复数形式的量化因子。在标准里,量化的同义词就是数据有损压缩。每个不同的子压缩因子作为量化参数是和包含子块的相应宏块联系在一起的。编码器里的码率控制算法调整量化参数的数值。同时标准里为4X4块定义了两种量化扫描顺序,一个是为了帧编码方式,一个是为了场编码方式。

量化实际上是一个多对一的映射关系,将一个范围内的相应数据对应一个特定的数据,该数据有利于占用较小的存储空间而表示更多的信息量。扫描就是将量化后的数据,按照一定的顺序读入,使之成为一个(RUN/LEVER)对,和游程编码有些类似。

 

2.5.3. 上下文相关变长编码和上下文算术编码

为了达到压缩的目的,AVC标准里的语法元素使用哥伦布编码方式进行编码。编码的对象是扫描后的结果--变换系数。针对变换系数的编码,AVC采用了两种不同的熵编码方法来编码变换后的量化系数。

在主要档次中,这两种编码方式都被使用。这两种不同的熵编码方法可以在每幅图像内自适应的选择。这些编码方法就是上下文相关变长编码和上下文算术编码。

 

2.5.4. 环路滤波

AVC循环滤波也被称为环路滤波。宏块运动补偿后的残差(帧间)或者帧内宏块经过预测补偿后得到的残差(帧内)经过熵编码后,根据宏块类型是帧内还是帧间图像进行相应的环路滤波处理。环路滤波的次序和光栅扫描的次序有关。滤波操作后的数据将被作为后续宏块的参考数据而存储(除非该图像将不被作为后续宏块的参考数据)。滤波器的对象是宏块和4X4块的边界像素点。滤波中,同一水平方向或者垂直方向上不同的像素点的滤波处理是不相同的。同时滤波器可以根据不同的滤波因子自适应调整,这些因子和当前宏块及相邻宏块的量化参数有关系,和运动矢量的大小有关系,和宏块类型有关系,和当前宏块及相邻宏块的滤波的像素点值的大小有关系。

环路滤波主要是为了解决这种按照宏块单位编码后的图像,在边界处出现不连续的情况,使宏块与宏块之间能够更好的平滑。

 

2.5.5. 模式选择

由于AVC标准里有许多宏块类型,模式选择就是决定每个宏块在编码时使用哪种类型进行编码。

为了达到高效的编码效率,模式选择算法根据最优的 码率/率失真 值来选择最优的宏块编码模式,这个过程是相当的复杂。一般情况下,模式选择算法经常和码率控制算法一起使用。

       模式选择是AVC标准的特点之一,它能够极大的提高压缩的效果,但是复杂度太高。

 

2.5.6. 帧内预测

在AVC标准中,帧内图像内的宏块预测被称为帧内预测,该预测主要是在像素范围内做的。在MPEG-2标准中,帧内预测只有简单的直流系数预测,而在MPEG-4中,既有直流系数预测,也有交流系数预测,也包含8x8矩阵的预测。这两种预测和变换都有关系[29,34,33]。

AVC标准内,帧内预测主要根据和当前宏块邻近的并且已经完成解码的宏块(或者块)的边缘像素点的值,通过线性插值而得到。这些宏块要么是邻近的左边宏块,要么是邻近的上方宏块。插值是在多个方向上根据空间上的相关性而实现的。

帧内亮度像素点的4X4矩阵类型定义了9种帧内预测模式。

亮度像素点16X16矩阵类型定义了4种帧内预测模式。

色度像素点定义了4种预测模式,和亮度16X16矩阵类型的预测过程相似。两种色度块,Cb和Cr使用相同的预测模式。

 

2.5.7. 帧间预测

帧间预测包含运动估计和运动补偿两个方面。运动估计/运动补偿的过程就是帧间预测的过程。这个过程通过在已经解码的参考图像内选择和编码过程接近的相同矩形队列的像素点的集合经过相应的插值后作为当前解码宏块的预测数据,和从比特流中解码出来的相应的残差数据相加,得到重构数据。在AVC标准里,预测数据的矩形和编码宏块的类型是一致的,有以下几种类型:4X4, 4X8, 8X4, 8X8, 16X8, 8X16, 16X16。参考图像内相应位置的矩形像素点按照1/4像素精度译码。译码过程中的环路滤波阶段,首先采用6抽头的滤波器对水平和垂直方向的相应像素点滤波,接下来采用2抽头的滤波器对相应位置的像素点滤波。滤波的过程和亮度的值的大小有关系;色度的运动补偿和亮度的运动补偿略有不同,色度采用1/8像素点的插值,并且在环路滤波方面比亮度稍微简单一些。

 

2.6. 编码过程

接下来,图4对编码的过程从一次访问单元开始,描述了其功能及选择。编码过程中具体每一步的实现则在图5–7有详细的说明。

访问单元最后一个条带

条带头和宏块语法元素编码

码率控制和模式选择

宏块编码

宏块重构

环路滤波

环路滤波

图像缓冲区

条带最后一个宏块

YES

YES

NO

NO

图4 访问单元的编码流程图

2.6.1. 条带头和宏快语法编码

条带头和宏块头不同的组成元素有不同的编码方式。图5(a)显示出了编码器在编码语法对象的时候何时选择哥伦布变长编码何时选择固定长度编码。图5(b)显示在宏块级别主要是何时选择帧内编码,何时选择帧间编码。

哥伦布编码

哥伦布编码

固定长度编码

结束元素

YSE

YSE

NO

NO

帧内宏块编码

帧内宏块编码

帧间宏块编码

YSE

NO

宏块编码

图5 (a)条带头、宏块头编码流程图

图5 (b)宏块编码流程图

2.6.2. 码率控制和模式选择

这一部分主要取决于每个编码宏块的比特分配和比特率的控制。详细说明在这篇文章的第6部分。

 

2.6.3. 帧内宏块和帧间宏块编码

图6(a)详细的介绍了帧内宏块编码的过程。I-PCM选项是否被执行,直接决定帧内编码任务是否被启动。果I-PCM选项被执行,宏块不需进行编码就被直接输出。如果不执行,宏块编码将顺序经过帧内预测、变换、量化操作,然后再选择是上下文相关变长编码或者上下文算术编码来得到压缩的比特流输出。

图6(b) 详细的介绍了帧间宏块编码的过程。帧间编码的第一步是决定是否启用跳过宏块模式。如果是跳过宏块模式,首先计算宏块的运动矢量当然只能够是16X16宏块的运动矢量或者是直接模式的运动矢量。如果不是跳过宏块模式,首先计算直接模式是否被启用。如果启用,将计算直接模式的运动矢量。如果还不是,将对宏块的运动矢量进行编码。接着是运动补偿和帧间预测,然后是变换和量化。接下来是根据前面编码的情况判断当前宏块是否需要进入编码阶段。如果不需要,就直接进行宏块重构。如果当前宏块需要进行编码,这时选择是上下文相关变长编码或者上下文算术编码进行编码,最后进行宏块重构。

 

2.6.4. 重构宏块

一个宏块可以分为需要解码的和不需要解码的。就像图7所示的那样,这两种类型的宏块都需要利用预测块来完成重构。前者需要首先对量化后的变换系数进行反量化,接着进行反变换,结果加上预测块数据就得到了重构宏块。后者因为已知量化后的数据全部为“0”,因此,预测数据就是重构数据。

 

2.7. 解码过程中的残差块

我们现在根据图8介绍残差块的解码流程。

首先,我们需要知道是采用变长编码还是算术编码并且根据相应的熵信息正确解码残差数据。

接下来我们需要确定被解码的块是帧内4X4亮度直流系数编码还是色度2X2直流系数编码还是其他的编码方式。

然后根据相应的结果,通过相应的反量化、反变换得到最后重构需要的残差块。

这个过程对于宏块中的每个子块,图像中的每个宏块重复进行。


I-PCM

哥伦布编码

帧内预测

上下文相关变长编码

YSE

YSE

NO

NO

图6 (a)帧内宏块编码流程图

变换

量化

上下文相关变长编码

 

上下文算术编码

 

比特流

 

跳过宏块编码

帧间计算16X16的运动矢量,双向预测计算直接模式16X16运动矢量

YSE

NO

图6 (b)帧间宏块编码流程

直接编码模式

直接运动矢量

编码运动矢量

运动补偿/预测

变换

量化

宏块编码否?

YSE

NO

上下文相关自适应变长编码

上下文相关变长编码

上下文算术编码

帧内宏块像素重构


表 1  MPEG-2, MPEG-4 Part 2, 和 H.264/MPEG-4 AVC 主要编码工具对比

工具

MPEG-2

MPEG-4 Part 2

H.264/MPEG-4 AVC

I-, P- and B-帧

是, 还有, I-, P- 和 B-条带

灵活的帧预测以及B帧

基本,没有B帧

基本,没有B帧

是,允许

变换

8×8浮点离散余弦变换

8×8浮点离散余弦变换

4×4整数变换,编解码端都需要归一化

帧内预测

只有直流系数预测

自适应的直流和交流预测

4x4 or 16x16块自适应交流直流预测

16_16,16_8宏块预测

16_16;

隔行只支持 16_8

16_16;

隔行只支持 16_8

是, 支持16_16, 16_8, 8_16

8_8 块预测

 

8_8子块预测

是, 支持8_4, 4_8, 4_4

1/4 象素宏块预测

不, 只有 1/2 象素

是, 1/2 和 1/4 象素

是, 只有 1/4 象素

多参考帧预测

B帧支持直接预测模式

1种模式:时域直接模式,并有运动矢量

1种模式:时域直接模式,并有运动矢量,空域直接模式,

全局宏块

运动矢量大小限制

运动矢量预测

简单

复杂

更加复杂

帧内支流非线性量化,

帧内交流方向扫描,

改进的色度量化

 

色数非线性量化,

宏块级自适应交流方向扫描,

改进的色度量化

直流非线性量化,

水平和垂直方向扫描,

改进的色度量化

 

量化权重矩阵

 

高效量化

块减少

后处理经常使用,但是没有推荐的滤波器

有可供选择的滤波器用于后处理

Mandatory in-loop filter,

postprocessing may also be used

 

自适应变长编码

是,两个表

是,内容自适应

自适应算术编码

不, 不适用 DCT 系数

是,内容自适应

P/B帧加权预测

一般位 (1/2; 1/2)

在B帧的前向后向预测

一般位 (1/2; 1/2)

在B帧的前向后向预测

是,非常灵活

任意的条带次序和灵活的宏块排序

错误隐藏

帧内宏块有隐藏运动矢量,很基本的数据分割

表示头,可逆变长编码,新预测

预测选择,数据分割,任意的条带次序和灵活的宏块排序

任意对象形状编码

是,灰度,形状相关运动,纹理编码

多尺度编码

是,空间图像分层,SNR,时域多尺度

是,图像对象分层,空域和时域多尺度

 

在时域和SNR支持多尺度

视频隔行编码

是,场图像,宏块自适应帧和场扫描

是,场图像,宏块自适应帧和场扫描

是,帧图像,场图像,图像自适应帧和场扫描,宏块自适应帧和场扫描

流转换,叠加和随机存取

基本,帧内

基本,帧内

帧内图像/条带, SI/SP

转换图像/条带

分割解码能力