传统视频编码标准.docx
《传统视频编码标准.docx》由会员分享,可在线阅读,更多相关《传统视频编码标准.docx(8页珍藏版)》请在冰点文库上搜索。
传统视频编码标准
传统视频编码标准
H.261
ITU编制的H.261[2]标准是第一个主流视频压缩标准。
它主要针对双工视频会议应用,是为支持40kpbs~2Mbps的ISDN网络而设计的。
H.261支持352(288(CIF)及176(144(QCIF)分辨率,色度分辨率二次采样为4:
2:
0。
由于可视电话需要同步实时编解码,因此复杂性设计得较低。
由于主要用于对延迟敏感的双向视频,因此H.261仅允许采用I与P帧,而不允许B帧。
H.261采用基于块的DCT进行残差信号的变换编码。
DCT把像素的每个8(8块映射到频域,产生64个频率成分(第一个系数称为DC,其他的称为AC)。
为了量化DCT系数,H.261在所有AC系数中采用固定的线性量化。
量化后的系数进行行程编码,其可以按非零系数描述量化的频率,后面跟随一串零系数,在最后一个非零值之后以块代码结束。
最后,可变长度编码(Huffman)将运行级别对(run-levelpair)转换成可变长度编码(VLC),其比特长度已针对典型概率分布进行过优化。
基于标准块的编码最终产生模块化视频。
H.261标准利用环路滤波避免这种现象。
在模块边缘采用的简单2DFIR滤波器用于平滑参考帧中的量化效应。
必须同时在编码器及解码器中精确地对每个比特应用上述滤波。
MPEG-1
MPEG-1[3]是ISO开发的第一个视频压缩算法。
主要应用是数字媒体上动态图像与音频的存储与检索,如速率为1.15Mbps、采用SIF分辨率(352(240-29.97fps或者352(288-25fps)的VCD。
MPEG-1与H.261相似,不过编码器一般需要更高的性能,以便支持电影内容的较高运动性而不是典型的可视电话功能。
与H.261相比,MPEG1允许采用B帧。
另外它还采用自适应感知量化,也就是说,对每个频段采用单独的量化比例因子(或等步长),以便优化人们的视觉感受。
MPEG-1仅支持逐行视频,因此新标准——MPEG2已经开始做出努力,同时支持分辨率及比特率更高的逐行与隔行视频。
MPEG-2/H.262
MPEG-2[4]专门针对数字电视而开发,很快成为了迄今最成功的视频压缩标准。
MPEG-2既能够满足标准逐行视频的需求(其中视频序列由一系列按一定时间间隔采集的帧构成),又能够满足电视领域常用的隔行视频的需求。
隔行视频交替采集及显示图像中两组交替的像素(每组称为一个场)。
这种方式尤其适合电视显示器的物理特性。
MPEG2支持标准的电视分辨率,其中包括:
针对美国和日本采用的NTSC制式隔行720(480分辨率,每秒60场,以及欧洲和其他国家采用的PAL制式的720(576分辨率,每秒50场。
MPEG-2建立在MPEG-1基础之上,并具备扩展功能,能支持隔行视频及更宽的运动补偿范围。
由于高分辨率视频是非常重要的应用,因此MPEG-2支持的搜索范围远远大于MPEG-1。
与之前的标准相比,它显着提高了运动估计的性能要求,并充分利用更宽搜索范围与更高分辨率优势的编码器需要比H.261和MPEG-1高得多的处理能力。
MPEG2中的隔行编码工具包含优化运动补偿的能力,同时支持基于场和基于帧的预测,而且同时支持基于场和基于帧的DCT/IDCT。
MPEG-2在30:
1左右的压缩比时运行良好。
MPEG-2在4-8Mbps时达到的质量适合消费类视频应用,因此它很快在许多应用中得到普及,如:
数字卫星电视、数字有线电视、DVD以及后来的高清电视等。
另外,MPEG-2增加了分级视频编码工具,以支持多层视频编码,即:
时域分级、空域分级、SNR分级以及数据分割。
尽管MPEG-2中针对分级视频应用定义了相关类别(profile),不过支持单层编码的主类(MainProfile)是当今大众市场中得到广泛应用的唯一MPEG-2类。
MPEG-2通常称为MPEG-2主类。
MPEG-2解码最初对于通用处理器及DSP具有很高的处理要求。
优化的固定功能MPEG-2解码器开发已问世,由于使用量较高,成本已逐渐降低。
MPEG2证明低成本芯片解决方案的供应是视频编解码标准成功和普及的关键。
H.263
H.263[5]在H.261之后得到开发,主要是为了以更低的比特率实现更高的质量。
其主要目标之一是基于普通28.8Kbps电话调制解调器的视频。
目标分辨率是SQCIF(128(96)~CIF(352(288)。
其基本原理与H.261大同小异。
H.263的运动矢量在两个方向上允许是1/2的倍数(“半像素”),参考图像以数字方式内插到更高的分辨率。
这种方法可以提高MC精度及压缩比。
MV可采用更大的范围。
为不同方案提供许多新的选项,包括:
*4个运动矢量——每个块采用一个运动矢量,而非整个MB采用单个运动矢量。
*3DVLC:
Huffman编码——将块结束(EOB)指示符与每个运行级别对结合在一起。
这种功能主要用于低比特率,这时大多时候只有一、两个编码系数。
尽管存在这些功能,但是仍然很难在普通电话线上实现理想的视频质量,而且目前基于标准调制解调器的可视电话仍然是一个难题。
不过,由于H.263一般情况下可提供优于H.261的效率,它成为了电视会议首选的算法,但是,为了兼容旧系统,仍然需要支持H.261。
H.263逐渐发展成为了H.263+,其增加了可选的附件,为提高压缩并实现分组网的鲁棒性提供支持。
H.263及其附件构成了MPEG-4中许多编码工具的核心。
MPEG-4
MPEG-4[6]由ISO提出,以延续MPEG-2的成功。
一些早期的目标包括:
提高容错能力以支持无线网、对低比特率应用进行更好的支持、实现各种新工具以支持图形对象及视频之间的融合。
大部分图形功能并未在产品中受到重视,相关实施主要集中在改善低比特率压缩及提高容错性上。
.
MPEG-4简化类(SP)以H.263为基础,为改善压缩增加了新的工具,包括:
*无限制的运动矢量:
支持对象部分超出帧边界时的预测。
*可变块大小运动补偿:
可以在16(16或8(8粒度下进行运动补偿。
*上下文自适应帧内DCTDC/AC预测:
可以通过当前块的左右相邻块预测DC/ACDCT系数。
*扩展量化AC系数的动态范围,支持高清视频:
从H.263的[-127:
127]到[-2047,2047]。
增加了容错功能,以支持丢包情况下的恢复,包括:
*片断重同步(SliceResynchronization):
在图像内建立片断(slice),以便在出现错误后更快速的进行重新同步。
与MPEG-2数据包大小不同,MPEG4数据包大小与用于描述MB的比特数量脱离了联系。
因此,不管每个MB的信息量多少,都可以在位流中按相同间隔进行重新同步。
*数据分割:
这种模式允许利用唯一的运动边界标记将视频数据包中的数据分割成运动部分和DCT数据部分。
这样就可以实现对运动矢量数据更严格的检查。
如果出现错误,我们可以更清楚地了解错误之处,从而避免在发现错误情况下抛弃所有运动数据。
*可逆VLC:
VLC编码表允许后向及前向解码。
在遇到错误时,可以在下一个slice进行同步,或者开始编码并且返回到出现错误之处。
*新预测(NEWPRED):
主要用于在实时应用中实现快速错误恢复,这些应用中的解码器在出现丢包情况下采用逆向通道向解码器请求补充信息。
MPEG-4高级简化类(ASP)以简化类为基础,增加了与MPEG-2类似的B帧及隔行工具(用于Level4及以上级别)。
另外它还增加了四分之一像素运动补偿及用于全局运动补偿的选项。
MPEG-4高级简化类比简化类的处理性能要求更高,而且复杂性与编码效率都高于MPEG-2。
MPEG-4最初用于因特网数据流,例如,已经被Apple的QuickTime播放器采用。
MPEG-4简化类目前在移动数据流中得到广泛应用。
MPEG-4ASP是已经流行的专有DivX编解码器的基石。
工具与压缩增益
当我们查看H.261、MPEG1、MPEG2与H.263视频编解码技术中引入的功能时,明显可以发现几种基本技巧提供了大部分压缩增益。
图4说明这些技巧及其相关效果。
与4个运动矢量以及四分之一像素运动补偿等工具相比,运动补偿(整数像素与半像素)的效果显然更为突出。
图4:
基本技巧的效果:
1)无MC;2)增加Skip模式构成CR编码器;3)仅允许零MV;4)允许整数像素MC;5)允许半像素MC;6)允许4-MV;7)允许四分之一像素MC。
如欲了解有关详细说明,敬请参见[7]。
7.H.264/MPEG4-AVC
视频编码技术在过去几年最重要的发展之一是由ITU和ISO/IEC的联合视频小组(JVT)开发了H.264/MPEG-4AVC[8]标准。
在发展过程中,业界为这种新标准取了许多不同的名称。
ITU在1997年开始利用重要的新编码工具处理H.26L(长期),结果令人鼓舞,于是ISO决定联手ITU组建JVT并采用一个通用的标准。
因此,大家有时会听到有人将这项标准称为JVT,尽管它并非正式名称。
ITU在2003年5月批准了新的H.264标准。
ISO在2003年10月以MPEG-4Part10、高级视频编码或AVC的名称批准了该标准。
H.264/AVC在压缩效率方面取得了巨大突破,一般情况下达到MPEG-2及MPEG-4简化类压缩效率的大约2倍。
在JVT进行的正式测试中[9],H.264在85个测试案例中有78%的案例实现1.5倍以上的编码效率提高,77%的案例中达到2倍以上,部分案例甚至高达4倍。
H.264实现的改进创造了新的市场机遇,如:
*600Kbps的VHS品质视频。
可以通过ADSL线路实现视频点播。
*高清晰电影无需新的激光头即可适应普通DVD。
H.264标准化时支持三个类别:
基本类、主类及扩展类。
后来一项称为高保真范围扩展(FRExt)的修订引入了称为高级类的4个附加类。
在初期主要是基本类和主类引起了大家的兴趣。
基本类降低了计算及系统内存需求,而且针对低时延进行了优化。
由于B帧的内在时延以及CABAC的计算复杂性,因此它不包括这两者。
基本类非常适合可视电话应用以及其他需要低成本实时编码的应用。
主类提供的压缩效率最高,但其要求的处理能力也比基本类高许多,因此使其难以用于低成本实时编码和低时延应用。
广播与内容存储应用对主类最感兴趣,它们是为了尽可能以最低的比特率获得最高的视频质量。
尽管H.264采用与旧标准相同的主要编码功能,不过它还具有许多与旧标准不同的新功能,它们一起实现了编码效率的提高。
图5的编码器框图总结了其主要差别,概述如下:
帧内预测与编码:
H.264采用空域帧内预测技术来预测相邻块邻近像素的Intra-MB中的像素。
它对预测残差信号和预测模式进行编码,而不是编码块中的实际像素。
这样可以显着提高帧内编码效率。
帧间预测与编码:
H.264中的帧间编码采用了旧标准的主要功能,同时也增加了灵活性及可操作性,包括适用于多种功能的几种块大小选项,如:
运动补偿、四分之一像素运动补偿、多参考帧、通用(generalized)双向预测和自适应环路去块。
可变矢量块大小:
允许采用不同块大小执行运动补偿。
可以为小至4(4的块传输单个运动矢量,因此在双向预测情况下可以为单个MB传输多达32个运动矢量。
另外还支持16(8、8(16、8(8、8(4和4(8的块大小。
降低块大小可以提高运动细节的处理能力,因而提高主观质量感受,包括消除较大的块化失真。
四分之一像素运动估计:
通过允许半像素和四分之一像素运动矢量分辨率可以改善运动补偿。
多参考帧预测:
16个不同的参考帧可以用于帧间编码,从而可以改善视频质量的主观感受并提高编码效率。
提供多个参考帧还有助于提高H.264位流的容错能力。
值得注意的是,这种特性会增加编码器与解码器的内存需求,因为必须在内存中保存多个参考帧。
自适应环路去块滤波器:
H.264采用一种自适应解块滤波器,它会在预测回路内
对水平和垂直区块边缘进行处理,用于消除块预测误差造成的失真。
这种滤波通常是基于4(4块边界为运算基础,其中边界各边的3个像素可通过4级滤波器进行更新。
整数变换:
采用DCT的早期标准必须为逆变换的固点实施来定义舍入误差的容差范围。
编码器与解码器之间的IDCT精度失配造成的漂移是质量损失的根源。
H.264利用整数4(4空域变换解决了这一问题——这种变换是DCT的近似值。
4(4的小区块还有助于减少阻塞与振铃失真。
量化与变换系数扫描:
变换系数通过标量量化方式得到量化,不产生加大的死区。
与之前的标准类似,每个MB都可选择不同的量化步长,不过步长以大约12.5%的复合速率增加,而不是固定递增。
同时,更精细的量化步长还可以用于色度成分,尤其是在粗劣量化亮度系数的情况下。
熵编码:
与根据所涉及的数据类型提供多个静态VLC表的先前标准不同,H.264针对变换系数采用上下文自适应VLC,同时针对所有其他符号采用统一的VLC(UniversalVLC)方法。
主类还支持新的上下文自适应二进制算术编码器(CABAC)。
CAVLC优于以前的VLC实施,不过成本却比VLC高。
CABAC利用编码器和译码器的机率模型来处理所有语法元素(syntaxelements),包括:
变换系数和运动矢量。
为了提高算术编码的编码效率,基本概率模型通过一种称为上下文建模的方法对视频帧内不断变换的统计进行适应。
上下文建模分析提供编码符号的条件概率估计值。
只要利用适当的上下文模型,就能根据待编码符号周围的已编码符号,在不同的概率模型间进行切换,进而充份利用符号间的冗余性。
每个语法元素都可以保持不同的模型(例如,运动矢量和变换系数具有不同的模型)。
相较于VLC熵编码方法(UVLC/CAVLC),CABAC能多节省10%bit速率。
加权预测:
它利用前向和后向预测的加权总和建立对双向内插宏模块的预测,这样可以提高场景变化时的编码效率,尤其是在衰落情况下。
表1概述我们介绍的视频标准采用的主要压缩功能与工具。