转载:MPEG-1和MPEG-2视频编解码标准

转载自:http://houh-1984.blog.163.com/blog/static/3112783420111027115628178/

本文主要介绍MPEG-1和MPEG-2视频编解码标准,视频标准的GOP构成,支持格式(逐行,隔行)以及各种profile,对编码的技术包括双向运动补偿预测、半像素插值、变换量化方式等。

这篇文章是比较老的文章,对了解视频编码标准的发展历史了解很有帮助。

作者:Supavadee Aramvith and Ming-Ting Sun孙明廷

1.1 Introduction

      1.1.1 MPEG1标准活动的背景及结构

      介绍了MPEG-1标准建立的初衷,是为了对移动图像和相关数字存储媒体相关的音频在1.5Mbit/s时进行编码,因此一部电影就能被压缩并存储在一个CD-ROM中。MPEG-1(Moving Picture Experts Groups-Phase 1)包含五个部分:系统Systems(11172-1),视频Video(11172-2),Audio,Conformance Testing(一致性测试),及软件模拟Software Simulation。在本文中,将集中在视频部分。

     由于MPEG组织始于1988年,且是基于ISO JPEG(联合照片图像专家组)和CCITT组织H261的。因此,MPEG1标准与JPEG和H261有很多共同之处。

     MPEG的发展经过了3个阶段:需求、竞争及会聚。

     需求阶段的目的是精确的设计努力的目标,并决定竞争阶段的规则(该阶段的经典文献为参考文献四和五)。

     竞争阶段的目标是从最好的学术及工业研究中获得艺术级的技术。采纳何种技术是综合以下两个因素的结果:一、考虑技术的优点,二、视频质量与执行技术和主观测试花费之间的平衡。

      在竞争阶段后,很多ideas和技术在会聚阶段被整合至一个解决方案中,该解决方案结果文档被称之为模拟模型。这个模拟模型是用多种编程语言来执行的,也就是一个参考编码器和解码器的执行。这个模型用来执行模拟以优化编码方案的性能。随后会有一系列附有完整说明文档的实验被执行,即核心实验——core experiments。

       MPEG组织于1990年九月生成了Committee Draft(CD,也成为组织草案),该草案(CD 11172)在1991年12月被批准。针对前三部分的国际标准(IS)11172在1992年11月建立,后两部分于1994年11月完成。

       1.1.2 MPEG1的目标应用及需求条件

       MPEG标准是一个通用的标准,意味着它没有限制于某一项特别的应用。人们已经基于1.5Mbits/s的总带宽条件下能获得令人接受的视频和音频质量的假设,提出了多种MPEG数字存储媒体应用。这些典型的存储媒体应用包含CD-ROM、数字音频磁带、温切斯特硬盘记忆、和可写入文字的光学磁盘。这些目标应用都是不对称的应用,压缩过程只执行一次,解码过程重复多次。不对称应用的例子包括视频CD、视频游戏机及视频点播。编码器的数量需求特别小,但是解码器需要多个。因此,编码端的复杂度是不受关注的,但是解码端的复杂度需要尽可能的低,以得到低花费解码器。

  数字存储媒体中的压缩视频需求指定了MPEG1压缩算法的三四种重要特性。这些重要特性包括正常的回访、基于帧的随机存取、和视频编辑、倒退回放、快速前进/倒退播放、编码高分辨率静止帧,对无法修复误差的鲁棒性。 应用还需要MPEG1支持灵活的图像尺寸和帧率。其他的编码过程需求能用现有的硬件技术以令人能接受的速度执行,解码器能在低消耗下用少量的芯片执行。

       因为MPEG1的视频编码算法很大部分基于H261,在接下来的章节中将重点介绍其与H261的不同之处。

1.2 MPEG1视频编码与H261的对比

       1.2.1 双向运动补偿预测

       在H261中,只能使用先前的视频帧作为运动补偿预测的参考帧(前向预测,forward prediction)。MPEG1允许利用未来的帧作为运动补偿预测的参考帧(后向预测,backward prediction)。

    1.2.2运动补偿预测和半像素精度

     H261的运动估计被限制在整像素精度。尽管如此,一个运动的物体通常移动的位置不落在像素网格上(即整像素上),而是落在像素之间。MPEG1允许半像素精度的运动矢量。通过估计更精细分辨率的偏移量,我们能预期到提升的预测,因此,得到比整像素精度运动估计更好的性能。

1.3 MPEG1的视频结构

      1.3.1原始输入格式

      CCIR601(一个世界级的数字电视工作室标准)规定原始输入是YCbCr的,即YUV。亮度采样频率用的是13.5MHz。有三四种YCbCr的采样格式,如下图所示,4:4:4格式的Y、Cb和Cr是相同的采样率;4:2:2格式的Cb和Cr是Y采样率的一半;4:1:1及4:2:0格式的Cb和Cr都是Y采样率的四分之一。

   转换模拟电视信号至数字电视视频,采用13.5MHz的CCIR601采样率,导致了每行720个像素(对于PAL来说为576行有效行,对于NTSC来说是480行有效行)。针对NTSC来说是740*480的分辨率,对于PAL来说是720×576。

   针对4:2:2的格式,未压缩的比特率在30帧每秒的CCIR601传输时大约为166Mbits/s。因此,很难压缩一个CCIR601的视频至15Mbits/s时还能保持好的视频质量。在MPEG1中,典型的原始视频分辨率都利用滤波和下采样的方法降为四分之一的CCIR601分辨率。这种结果的格式被称为原始视频格式(SIF,Source Input Format),它的分辨率为360×240(NTSC)和360×288(PAL)。

   因为在视频编码算法中,16×16的块尺寸用来进行运动补偿预测,像素在水平和竖直方向上的个数都应该是16的整数倍。最终,舍弃了每行最左边和最右边的四个像素,分辨率变为352×240(NTSC,30frames/s)和352×288(PAL系统,25frames/s).色度信号是上述亮度分辨率水平和竖直方向上的各一半(4:2:0,对于NTSC是176×120,对于PAL是176×144)。未压缩的SIF(NTSC,30frames/s)的比特率是30.4Mbits/s。

  1.3.2 图像组GOP 和I-B-P图像

         在MPEG中,每一个视频序列被分割成一个或多个图像组(GOPs)。在MPEG1中定义了4种类型的图像:I、P、B和D图像。每一个GOP包含一帧或多帧图像;其中必须有一帧是I图像。通常,两个anchor帧(I或者P图像)之间的间距被设置为M,而两个连续I图像之间的间距被设为N。在下图中,M=3,N=9。

        I图像被独立编码,不利用其它图像作为参考帧。I图像提供了压缩视频数据中的随机存取点,因为I图像可以被独立解码,不依赖于其他参考图像。利用I图像,MPEG码流更易于编辑。同样地,先前图像中的传输错误导致的错误繁殖也将被I图像终止,因为I图像不利用先前帧作为预测。因此,I图像仅仅利用变换编码,而不利用运动补偿预测编码,它将提供中等的压缩。

       P图像利用前向运动补偿预测法从先前的I和P图像编码(类似于H261)。P图像借助运动补偿预测的优点比I图像提供了更高的压缩效率。它同样可以用做B图像和未来P图像的参考。I图像和P图像中的传输错误能繁殖到连续的图像中,因为I图像和P图像都用于预测连续图像(注意连续图像指的是上图中GOPs中的那些pictures)。

      B图像允许宏块利用以前或将来的I和P参考图像来进行双向运动补偿预测。在B图像中,每一个双向运动补偿宏块都能用两个运动矢量:一个是前向运动矢量,能参考先前I或P图像中的最匹配块;一个是后向运动矢量能参考下一个I或P图像中的最匹配块。运动补偿预测能通过平均这两个参考运动补偿块来形成。通过平均先前和将来的参考块,噪声的效果能减弱。B图像对比I和P图像来说拥有最好的压缩效果。I和P图像都用作B图像的参考图像。为了保证结构简单,利用B图像作为B图像的参考并没有什么益处,B图像并不用来作参考图像。因此,B图像也不会繁殖错误。

    D图像(DC-Pictures,这里的DC指的是DCT系数中的直流分量)是低分辨率图像,通过解码每一个宏块的DCT系数中的DC系数得到。它们不用来与I、P和B图像合并。D图像很少用到,但是它有助于在序列数字存储媒体中快速搜索。

     经常用B图像的平衡是它减少了先前I或P图像和下一个I或P图像之间的联系,它同样导致了编码延迟且增加了编码器的复杂度。在figure6 中的例子说明,在编码器中,如果进来的图像是1,2,3,4,5,6,7等,在编码器中编码图像的顺序是:1,4,2,3,7,5,6,等,在解码端,解码图像的顺序将是1,4,2,3,7,5,6,但是解码后的显示顺序还是1,2,3,4,5,6,7。因此,帧内存必须用于存放正确顺序的图像。图像重新排序导致了延时。双向运动矢量的计算和图像重排序帧内存增加了编码器的复杂度。在figure6 中,对两种类型的GOPs进行了描述。GOP1能在解码是不参考其他的GOPs。它被称为Closed-GOPs。在GOP2中,为了解码第8和第9个B图像,需要参考P图像7,所以GOPsNR被称为Open-GOPs,它意味着解码该GOP时需要参考其他的GOps。

    1.3.3 Slice条带,Macroblock宏块和块结构

    一个MPEG图像包括Slices。一个Slice包含一连串的光栅扫描顺序中的宏块(从左到右,从上到下)。在MPEG的编码码流中,每一个Slice以一个Slice头开始,Slice头是一个清晰的码字(清晰的码字指的是独一无二的bit模式,不需要从可变长编码的比特流中的解码就能识别)。由于这些清晰码字的Slice头,slices是低级的单元,不需要解码可变长的编码就能从MPEG编码码流中存取得到。Slices在处理频道错误时是很重要的。如果一个比特流包含了一个bit错误,这个错误可能由于可变长编码导致错误扩散。解码器能在下一个slice的开头恢复同步。在一个码流中有更多的slices带来了更好的错误终止性,但是花销会增加。

    一个宏块包含一个16*16的亮度采样块和两个8*8的相应色度采样块。在figure 7中显示,一个宏块包含四个8*8的Y块,一个8*8的Cb块和一个8*8的Cr块。每一个编码的宏块包含运动补偿预测信息(编码运动矢量和预测残差)。有四种类型的宏块:帧内、前向预测、后向预测和平均宏块。运动信息包含一个针对前向和后向预测宏块的运动矢量,以及针对双向预测宏块的两个运动矢量。P图像能有帧内和前向预测宏块。B图像能有所有的四种类型宏块。Slice中的第一个和最后一个宏块都必须编码。当一个宏块的运动矢量为0时,且它的所有量化DCT系数都是0时,它被设置为skipped宏块。skipped宏块在I图像中不被允许。P和B图像中的非帧内编码宏块能够skipped。针对一个skipped宏块,解码器仅仅复制先前图像的宏块即可。

1.4 MPEG1和H261之间的主要差异概要

     与H261相比,MPEG1视频的差异在如下几方面:

     1、MPEG1用半像素精度的双向运动补偿预测编码,而H261没有双向预测(B 图像),且运动矢量通常是整像素精度的。

     2、MPEG1支持最大的运动矢量范围针对半像素运动矢量是-512到+511.5像素,针对整像素运动矢量是-1024到+1023,而H261的最大范围仅仅是-15到+15像素。

     3、MPEG1基于人眼对低频量化残差比对高频量化残差更敏感的事实,利用视觉加权量化。MPEG1定义了一个默认的64元素量化矩阵,但是同样针对不同的应用允许恰当的特定的矩阵。H261仅仅有一个针对帧内DC系数的量化器,和针对其他系数的31个量化器。

     4、H261仅仅指定了两种源格式:CIF(普通中间格式Common Intermediate formate,352*288像素)和QCIF(四分之一普通中间格式,176*144)。在MPEG1中,典型的源格式是SIF(Source input formate,352*240 for NTSC,和352*288 for PAL)。尽管如此,用户能指定其他的格式。图像尺寸能达到4k*4k像素。在码流中有很多参数是灵活的,例如每幅图像的行数(小于4096),每行的像素个数(小于4096),图像帧率(24,25,和30帧每秒),和十四种像素宽高比。

     5、在MPEG1中,I、P和B图像被设置为灵活的图像组(GOP)

     6、MPEG1利用灵活的slice结构来代替H261中定义的块组(Group of blocks,GOB)

     7、MPEG1有D图像允许快速搜索选择

     8、为了允许用户终端的高效操作,MPEG1定义了一个限制参数集,制定了特别的限制,如table 1所列:

1.5 Simulation model

        与H261类似,MPEG1仅仅制定了语法和解码器。很多细节编码选择,如码率控制策略、量化决定级、运动估计方法以及针对每一个宏块的编码模式没有限定。这带来了未来技术的改进和产品的不同。为了有一个参考的MPEG1视频质量,simulation model在MPEG1中被开发。一个simulation model(后面简称SM)包含了MPEG1编解码器的特别参考操作,包含标准中没有指定的所有细节。MPEG1的SM最终版本是"SM3"【7】。在SM3中,运动估计技术对每个宏块用一个半像素精度的前向或后向运动矢量。一个两步搜索方案包含了-7到+7整像素精度的全搜索,随后利用相邻8个半像素位置的搜索。每一个宏块的编码模式决定(不管他是否用到运动补偿预测和帧内/帧间编码),量化决定级,和码率控制算法都是指定的。

1.6 MPEG-1的视频码流结构

        如图8所示,在MPEG1视频码流中有6层:视频序列、图像组、图像、slice、宏块和块层。

        

        视频序列层包含一个序列头,一个或多个图像组,一个序列尾编码。他包含如下的参数集:图像尺寸(水平和竖直尺寸),像素宽高比,图像率,比特率,最小解码器缓存尺寸(video buffer verifier size),限制参数标识(该标识仅仅在图像尺寸、图像帧率、解码缓存尺寸、比特率和运动矢量满足table 1的限制时才被设置为有效),针对帧内和非帧内量化表的64权重bit值负担的控制,以及用户数据。

        GOP层包含了一系列在连续播放顺序中的图像。他包含以下的参数:从序列开始就给定时分秒时间间隔的time code,closed GOP标识表示解码操作是否需要先前GOP中的图像用于运动补偿,broken link flag表示先前的GOP是否能用来解码当前的 GOP,以及用户数据。

        图像层作为最主要的编码单元。他包含了以下参数:时域参考在序列中的图像序号,用于决定播放顺序;图像类型(I或P或B或D);解码缓冲初始占有,给出了在MPEG解码图像定义的理想解码模型之前压缩视频缓冲中必须有的bit数目(它用来避免解码器缓存溢出和下溢);前向运动矢量分辨率和P、B图像的范围;后向运动矢量分辨率和B图像的范围;用户数据。

        Slice层表现为再同步单元,他包含了slice开始的slice竖直位置,和用于编码当前slice的量化尺度。

        宏块层表现为运动补偿单元,他包含以下的参数集:可选的填充bit,宏块地址增量,宏块类型,量化尺度,运动矢量和定义宏块中6个块编码博士的编码块模式。

        块层是视频序列的最低层,她包含了已编码的8*8DCT系数。当一个宏块以帧内模式被编码,DC系数与JPEG中的编码类似(当前宏块的DC系数从先前宏块的DC系数进行预测)。在每个slice的开始,针对亮度和色度块的DC系数预测被重新设置为1024。不同的DC值依据他们的独立值被分类,且分类信息利用可变长编码(VLC,variable-length code)。分类信息标识了随后VLC表达预测残差的额外比特数目。AC系数与H261中的编码方法类似,用VLC来表达zero-run-length和非零系数的值。当一个宏块用非帧内模式进行编码时,DC和AC系数的编码方法与H261中类似。

         在视频序列层之上,有视频序列被打包的系统层。视频和音频比特流随后多路传输至一个整体的数据流中,他们被定义为系统部分。

1.7 Summary

         MPEG1主要是针对存储媒体应用。由于利用了B图像,它可能导致长时间的点到点延迟。MPEG1编码器比解码器花费更多,因为更大的搜索范围、半像素精度的运动估计、和双向运动估计的使用。MPEG1语法能针对多种存储媒体应用支持大量的帧率和格式。类似于其他视频编码标准,MPEG1没有指定每一个编码选项(如运功估计、码率控制、编码模式、量化、前处理和后处理等等)。这允许了连续的技术进步和产品差异。

                                                                      

                                          MPEG-2 视频编码标准

2.1 Introduction 

        2.1 背景及MPEG2标准活动的结构

        MPEG2标准代表了MPEG组织继MPEG1发展之后,在发展普通视频和音频编码标准方面的不断努力。MPEG工作的第二阶段的思想主要来自于MPEG1是针对输入为SIF格式的资源且带宽为1.5Mb/s的应用下的最优化,而SIF格式是相对低分辨率的逐行格式。很多高质量高比特率的应用需要高分辨率的数字视频资源,如CCIR601,它是一种隔行格式。新技术用于更好地编码隔行视频。

        在完成了MPEG1的技术工作后,MPEG2组织在1990年晚期开始工作。视频算法的竞争测试在1991年十一月举行,随后就是合作阶段。针对视频部分的组织草案(Committee Draft,CD)在1993年十一月完成。MPEG2标准现在包含9个部分。前五部分与MPEG1的安排方式一样:系统,视频,音频,符合性测试以及模拟软件技术部分。MPEG2的前三个部分在1994年十一月成为了国际标准(International Standard,IS)。第四和第五部分在1996年三月被批准。第六部分制定了一系列的数字存储媒体控制命令(DSM-CC)。第七部分制定了非后向兼容的音频。第八部分开始计划作为10-bit的视频编码,但是没有继续。第九部分是传输码流解码器的实时交互,能应用于所有携带MPEG2传输码流的合适网络。第六和第九部分已经在1996年7月批准为国际标准IS。像MPEG1标准一样,MPEG2视频编码标准制定的仅仅是解码过程的比特流语法和语义。留下很多编码选项未被限定,以利于连续技术改进和产品差异。

        MPEG3原本是为了更高比特率下的高清数字电视做准备的,被融合进了MPEG2中。所以没有MPEG3。MPEG2(ISO/IEC 13818-2)视频编码标准被ITU-T作为H262采纳了【9】。

        2.1.2 目标应用和需求条件

        MPEG2的主要目标是针对视频点播、数字直播电视和数字存储媒体(如DVD,Digital Versatile Disc)编码4-15Mb/s带宽下的高质量视频。它也用于编码高清电视、电缆/卫星数字电视、多种网络中的视频服务、2路通信和其他高质量数字电视应用。

      来自于MPEG2应用的需求命令了压缩算法的三四种重要特征。考虑到图像质量,MPEG2需要能在约4-6Mbits/s的比特率下提供很好的NTSC质量视频,在约8-10Mbits/s的比特率下提供清晰的NTSC质量视频。它也需要提供随机存取的能力且通过周期性插入I图像的方式实现快速频道转换。MPEG2语法同样需要支持trick(花样)模式,例如快速前向和快速方向播放,类似于MPEG1。低延时模式是针对延时敏感视觉通信应用的。为了针对多种应用支持多级视频质量、视频格式和帧率MPEG2有可伸缩视频模式。容错选项包含了帧内运动矢量、数据分割和可伸缩编码。现在与最新标准编码器之间的兼容性是另一个由MPEG2提供的主要特征。例如,MPEG2解码器应该能解码MPEG1比特流。如果利用可伸缩编码,MPEG2信号的基本层能被MPEG1解码器解码。最终,他应该允许用成熟的技术构建合理复杂度的编码器和最低消耗的解码器。因为MPEG2主要是基于MPEG1的,在接下来的章节,我们将集中于与MPEG1视频的不同特征。

 2.2 MPEG2的Profiles和levels(档次和级)

       MPEG2标准的设计覆盖了广泛的应用。尽管如此,针对很多应用所需的特征可能对于其他应用来说不是必须的。如果我们把所有的特征放进一个单独的标准中,他可能导致一个针对很多应用都花费过多的系统。人们需要针对一种应用只执行必须的特征以达到系统的最低消耗。为了满足该需求,MPEG2针对重要的应用区分了特征组至Profiles中。一个Profile被定义为MPEG2比特率语法的特定子集,和支持一类应用的功能(如低延时视频会议应用,或存储媒体应用)。在每一个Profile中,定义了levels支持不同质量需求的应用(如不同的分辨率)。levels被指定为一些参数(或参数合并)的限制集,如采样率、帧尺寸和一个proflie中的比特率。实际应用在特定profile的特定level值的允许范围内执行。

        Table2描述了MPEG2定义的Profiles和Levels的合并。MPEG2定义了其中不同的Profiles:简单、主要、SNR可伸缩、空域可伸缩、高的、4:2:2和多视点。最后两个Profiles在1994年十月MPEG2 视频部分的最终批准后得到了发展。简单profile针对低延时视频会议应用被定义。主要profile是针对高质量视频应用(例如VOD,DVD,数字电视和高清电视)最重要且应用最广泛的profile。SNR(Signal-to-Noise Ratio,信噪比)可伸缩profile支持多级视频质量。空域可伸缩profile支持多级分辨率。高级支持多级质量、分辨率和色度格式。在profiles中定义了四个级别(level,级别):低(针对SIF分辨率图像),主要(针对CCIR601分辨率图像),高-1440(针对欧洲高清电视分辨率图像)和高(针对北美高清电视分辨率图像)。Table2中的Profiles和Levels的11种组合定义了MPEG2一致点能覆盖最实用的MPEG2目标应用。每一个一致点中的数目表明了参数的最大界限。在第一条线中的数字指明了采样率(每秒的采样数)中的亮度率。第二行的数字表示bits/s中的比特率。每一个一致点是右边和上边一致点的子集。例如,主要profile主要level的解码器应该同样解码简单profile主要level和主要profile低level的比特率。在定义的profiles和levels中,主要profile主要level(MP@ML)用于CCIR601分辨率和DVD视频的数字电视直播。主要Profile高Level(MP@HL)用于高清电视。4:2:2profile定义为支持4:2:2彩色分辨率的高比特率工作室(摄影等)应用。尽管高profile同样支持4:2:2,一个高profile编解码器需要支持SNR可伸缩profile和空域可伸缩profile。这使得高profile编解码器的花费很大。4:2:2profile不需要支持可伸缩性,因此它的实现便宜的多。多视点profile被定义于支持有效的应用编码,包含两个来自于对同一场景拍摄且有很小角度摄像机的视频序列。

2.3 MPEG2视频输入分辨率和格式

           尽管MPEG2组织的主要关注点是支持数字电视的CCIR601分辨率,它同样允许16k*16k像素的最大图像尺寸。和MPEG1一样它也支持23.97624,24,25,29.97,30,50,59.94和60Hz的帧率。MPEG2适用于编码逐行和隔行视频格式。和针对颜色子采样格式一样,MPEG2支持4:2:0,4:2:2和4:4:4。MPEG2用与MPEG1中一样的4:2:0格式,不同的是色度采样的位置,如figure9(a)和9(b)所示。

               

          在MPEG1中,一个slice能跨过宏块行边界。因此MPEG1中的单个slice能定义为覆盖整幅图像。另一方面,MPEG2中的slice开始和结尾都在同一水平宏块行。在MPEG2中有两类slice结构:普通和限制的slice结构。在普通slice结构中,MPEG2需要不覆盖整幅图像。因此,在slice中只有封闭的区域被编码。在限制的slice结构中,图像中的每一个宏块在slice中都应该是封闭的。

          2.4 MPEG2视频编码标准与MPEG1的比较

         2.4.1 隔行与逐行的视频比较

         Figure 10显示了逐行和隔行视频扫描。在隔行视频中,每一个显示的帧包含两个隔行场。例如,帧1包含场1和场2,包含场1中位于场2中线段中间的扫描线。相反的,逐行视频有一帧图像中的所有线。在逐行视频中没有场或半幅隔行扫描的图像。因此,逐行视频比隔行视频需要更高的图像率,以避免闪烁的显示。隔行格式的主要缺点是,如果有物体移动,当我们融合两个场至一帧图像时,运动物体可能出现失真。例如,Figure 10显示了一个移动的球。在隔行格式中,由于移动球在两个场中处于不同位置,当我们把两个场置于一帧中时,球看起来是失真的。用MPEG1编码隔行视频帧中的失真物体时,将不会得到最优结果。隔行视频同样趋于产生水平图像细节颤抖,因此引入了更多的高频噪声。

            2.4.2 隔行视频编码

            Figure 11显示了隔行视频格式。之前也解释过,隔行帧包含两个场。从figure,顶场(场1)比底场(场2)出现的更早。两个场一起组成了一帧。在MPEG2中,图像被编码为与MPEG1中一样的I、P、B图像。为了优化编码隔行视频,MPEG2能编码一幅图像为场图像或帧图像。在场图像模式,一帧中的两个场分开编码。如果图像中的第一个场是I图像,图像中的第二个场可以是I或者P图像,因此第二个场能用第一个场作为参考图像。尽管如此,如果图像中的第一个场是P或者B场图像,第二个场必定是同种类型的图像。在帧图像中,两个场被隔行扫描至一幅图像中,并作为一幅图像同时编码,与传统的逐行视频图像编码更相似。在MPEG2中,一个视频序列是一个帧图像和场图像的整合。

            

2.4.2.1 基于帧和基于场的运动补偿预测

在MPEG2中,一副隔行图像能作帧或场进行编码。MPEG2定义了两种不同的运动补偿预测类型:基于帧和基于场的运动补偿预测。基于帧的预测形成了基于帧参考的预测。基于场的预测是基于场参考的预测。针对简单的profile,不能用双向预测,MPEG2引入了一个双重运动补偿预测来有效的探索两场之间的时域冗余。Figure12 给出了三类运动补偿预测。注意,在MPEG2中的运动矢量都规定为半像素精度的。

帧图像中的帧预测:

针对帧图像的基于帧预测中,figure12(a)显示,整个隔行帧被当做一个单独图像。它的运动补偿预测编码方法与MPEG1中一样。每一个16*16宏块针对前向和后向预测都只有一个运动矢量。在双向预测中允许有两个运动矢量。

帧图像中的场编

帧图像中的基于场预测把每帧图像当做两个单独的场图像。针对每个宏块的16*8块,形成了单独的预测,如图13中所示。因此,帧图像中的基于场预测需要两个运动矢量集。在双向预测中,一共允许四个运动矢量。每一个场预测可能选择参考帧的场1或场2。

场图像中的场预测

针对场图像的基于场的预测,预测由两个最近的解码场形成。预测由参考场形成,针对每个场独立,每个场被当做一个独立的图像。预测块的大小为16*16;尽管如此,应该注意的是,场图像中的16*16块对应帧图像中的16*32像素区域。在场图像中基于场的预测针对前向或后向预测,仅仅需要一个运动矢量。在双向预测情况下,需要两个运动矢量。

场图像中的16*8预测

每个宏块用两个运动矢量。第一个运动矢量用于场1中的16*8,第二个运动矢量应用于场2中的16*8块。在双向预测中允许4个运动矢量。

双重运动补偿预测仅仅用在P图像中。一旦给定类似场(场1或场2)中的宏块的运动矢量"V",被看做是与相同场的参考场相关,利用外推或插值来得到相反参考场的运动矢量预测。另外,一个简单的矫正同样用于运动矢量的竖直分量,来反映场1和场2线条之间的竖直偏移。得到的运动矢量用dv1和dv2来表示,在figure12(c)中用虚线表示。下一步,一个简单的精炼差异运动矢量,称作dmv,被加入。由编码器决定dmv值的选择(-1,0,+1)。运动矢量"v"和相关的"dmv"值包含在比特流中,使得解码器能推导出dv1和dv2。在计算预测的像素值时,来自于两个参考场的运动补偿预测被平均,以减少数据中的噪声。双重预测主要针对低延时编码,例如视频手机和视频会议。针对利用简单profile的低延时编码,不应该用B图像。不利用双向预测,而是针对P图像研究双重预测来提供比前向预测更好的预测。

2.4.2.2帧/场DCT

MPEG2有两种DCT模式:在figure14中,介绍了基于帧和基于场的DCT。在基于帧的DCT模式中,一个16*16的的宏块被分割为4个8*8块。这种模式是适合于背景或静态图像(来自于相邻扫描行的像素值之间的高相关性造成了静止图像的微小运动)的。在基于场的DCT模式中,宏块被分为4个DCT块,块中来自于相同场的像素被聚类到了一个块中。根据解释,这种模式适用于有运动的块,运动导致了失真,可能引入高频噪声至隔行帧中。

2.4.2.3交替扫描

MPEG2定义了两种不同的zigzag扫描顺序:在figure15中给出了zigzag和交替扫描。用于MPEG1中的zigzag扫描是适用于逐行图像的,逐行图像中每一个水平及竖直方向上的频率分量都是一样重要的。在MPEG2中,基于隔行图像在竖直方向上的频率分量更高的趋势引入了交替扫描。因此扫描顺序在更高的竖直频率上的权重比在相同的水平频率上更高。在MPEG2中,两个zigzag扫描顺序能在图像基础上做选择。

2.5可伸缩编码  

 Reference:

http://www.blog.163.com/houh-1984/

http://en.wikipedia.org/wiki/MPEG-2

http://www.bbc.co.uk/rd/pubs/papers/paper_14/paper_14.shtml

http://en.wikipedia.org/wiki/DVD

http://en.wikipedia.org/wiki/MPEG-1

http://www.digitalpreservation.gov/formats/fdd/fdd000035.shtml

本文主要介绍MPEG-1和MPEG-2视频编解码标准,视频标准的GOP构成,支持格式(逐行,隔行)以及各种profile,对编码的技术包括双向运动补偿预测、半像素插值、变换量化方式等。

转载于:https://www.cnblogs.com/samyboy/p/5478458.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值