MPEG-4关键技术

原文地址:http://lxmpanther.blog.163.com/blog/static/1000580320072279854153/

一、MPEG-4关键技术

  在MPEG-4制定之前,MPEG-1、MPEG-2、H.261、H.263都是采用第一代压缩编码技术,着眼于图像信号的统计特性来设计编码器,属于波形编码的范畴。第一代压缩编码方案把视频序列按时间先后分为一系列帧,每一帧图像又分成宏块以进行运动补偿和编码,这种编码方案存在以下缺陷。

(1)将图像固定地分成相同大小的块,在高压缩比的情况下会出现严重的块效应,即马赛克效应;

(2)不能对图像内容进行访问、编辑和回放等操作;

(3)未充分利用人类视觉系统(HVS,Human Visual System)的特性。

  MPEG-4除采用第一代视频编码的核心技术,如变换编码、运动估计与运动补偿、量化、熵编码外,还提出了一些新的有创见性的关键技术,充分利用了人眼视觉特性,抓住了图像信息传输的本质,从轮廓、纹理思路出发,支持基于视觉内容的交互功能,这适应了多媒体信息的应用由播放型转向基于内容的访问、检索及操作的发展趋势。

1、视频对象提取技术

  MPEG-4实现基于内容交互的首要任务就是把视频/图像分割成不同对象或者把运动对象从背景中分离出来,然后针对不同对象采用相应编码方法,以实现高效压缩。尽管MPEG-4 框架已经制定,但至今仍没有通用的有效方法去根本解决视频对象分割问题,视频对象分割被认为是一个具有挑战性的难题。

  目前进行视频对象分割的一般步骤是:先对原始视频/图像数据进行简化以利于分割,这可通过低通滤波、中值滤波、形态滤波来完成;然后对视频/图像数据进行特征提取,可以是颜色、纹理、运动、帧差、位移帧差乃至语义等特征;再基于某种均匀性标准来确定分割决策,根据所提取特征将视频数据归类;最后是进行相关后处理,以实现滤除噪声及准确提取边界。

2、VOP视频编码技术

  视频对象平面(VOP,Video Object Plane)是视频对象(VO)在某一时刻的采样,VOP是MPEG-4视频编码的核心概念。MPEG-4在编码过程中针对不同VO采用不同的编码策略,即对前景VO的压缩编码尽可能保留细节和平滑;对背景VO则采用高压缩率的编码策略,甚至不予传输而在解码端由其他背景拼接而成。这种基于对象的视频编码不仅克服了第一代视频编码中高压缩率编码所产生的方块效应,而且使用户可与场景交互,从而既提高了压缩比,又实现了基于内容的交互,为视频编码提供了广阔的发展空间。

3、视频编码可伸缩性技术

  视频编码的可伸缩性(scalability)是指码率的可调整性,即视频数据只压缩一次,却能以多个帧率、空间分辨率或视频质量进行解码,从而可支持多种类型用户的各种不同应用要求。

  MPEG-4通过视频对象层(VOL,Video Object Layer)数据结构来实现分级编码。MPEG-4提供了两种基本分级工具,即时域分级(Temporal Scalability)和空域分级(Spatial Scalability),此外还支持时域和空域的混合分级。每一种分级编码都至少有两层VOL,低层称为基本层,高层称为增强层。基本层提供了视频序列的基本信息,增强层提供了视频序列更高的分辨率和细节

  在随后增补的视频流应用框架中,MPEG-4提出了FGS(Fine Granularity Scalable,精细可伸缩性)视频编码算法,FGS编码实现简单,可在编码速率、显示分辨率、内容、解码复杂度等方面提供灵活的自适应和可扩展性,且具有很强的带宽自适应能力和抗误码性能。但还存在编码效率低于非可扩展编码及接收端视频质量非最优两个不足。

二、MPEG-4误码弹性(error resilience)工具

  MPEG4视频标准也包含几个差错恢复工具,来提高信道差错下的性能。

1、数据分割

  由于视频数据参数的差错敏感度不同,可将视频数据分成两部分来提高MPEG-4的差错健壮性。每个视频分组(VOP)的轮廓和运动数据放在第一部分,相对敏感度较低的纹理数据(AC TCOEFF)放在第二部分。分割两个部分的再生同步码,在INTER VOP中称为运动标志,在INTRA VOP中称为DC标志。当差错不敏感的第二部分纹理数据发生一些比特差错时,视频解码器可存储视频分组中无差错的运动和轮廓数据。也就是说,可成功隐藏第二部分的差错,仅会有轻微的视觉失真。由于纹理数据组成了VOP的主要部分,数据分割允许分组的主要部分出错,仅对视频质量有轻微影响。

  运动矢量比纹理数据对差错更敏感,轮廓数据对面向对象视频编码差错健壮性的影响还需确定。当纹理差错隐蔽较好时,运动和轮廓数据的隐蔽会使得图像失真较大。当序列运动量大,帧间的视频内容会变化较大,也使得在解码端很难实现隐藏。若比特流误码率不高,纹理数据的损伤对可视失真影响很小。

2、FEC中的RCPC(速率兼容的收缩卷积码)

  速率兼容的收缩卷积码(RCPC码)用于多速率信道的差控。此技术必须伴随高速反馈信道指示机制,根据网络状态动态更新编码器。卷积编码器以仅发送母码开始而不加保护位。如果FEC解码器由于出错不能解释母码,那么就通过反向信道通知编码器,从而相应提高保护率。四个寄存器的卷积编码器可提供四种不同速率,编码器先设定的速率为1作为起始,再按需要来降低速率。对降级的信道条件,信道编码器必须为输出信号分配较大数目的保护比特,以增强信道解码器的纠错能力,然后速率保持逐渐降级,直到解码器能维持无检测差错重构母码比特为止。当已达最后速率而解码器仍未能纠正差错信号时,解码器就剔除当前像块而转向下一个像块。因此,卷积编码器的速率依据纠正损坏比特的能力而变化,所需速率越高,为获得较好的差错保护而对输出信号添加的冗余比特就越多。这种多速率的差错保护编码被称作截断码。RCPC技术主要用于延迟敏感的视频应用,由于反馈信息和对损伤信号的重传可能会引入过多的时延,对实时应用不是很适合。RCPC和反向信道指示经常组合使用,来实现MPEG-4标准的差错弹性恢复。

3、AIR(自适应INTRA帧更新技术)

  AIR是MPEG-4标准中Annex E所规定的技术,与对VOP中所有MB进行统一的INTRA编码的循环INTRA更新(CIR)截然不同,它包括在每个VOP中发送限定数目的INTRA宏块。AIR进行INTRA编码的宏块数远远少于每VOP或每帧的总宏块数。根据通过标记运动宏块位置得到的更新映射图,AIR对每帧中固定和预定的宏块数目,有选择地进行INTRA编码。通过对MB的绝对误差和(SAD)与其门限值(SADth)进行比较,来得到运动估值,SAD是通过MB和在先前VOP中空间相应的MB间计算得到,SADth是先前VOP中全部宏块的平均SAD值,如果某一宏块的SAD超过了SADth,编码器就判定该MB属于高运动区域,也就是对传输差错敏感的区域,从而标志该MB要进行INTRA编码如果标志INTRA编码的宏块数超过了设定的数目,那么视频编码器就以垂直扫描方向下移帧来编码INTRA MB,直到预定数目的MB被INTRA编码。对于下一帧,编码器从相同的地方开始,并对INTRA宏块开始编码,包括在先前帧中标志要进行INTRA编码的宏块。编码宏块的数目要基于视频应用需求的比特率和帧率来确定。然而,为了提高差错健壮性,宏块的数目可以根据每个视频帧运动特征来动态调整。由于图像运动区域通常以INTRA模式编码,就可能快速更新损坏的运动区域。

  显然,增加每帧中更新的宏块数目可以加速差错恢复,但在给定目标比特率时,会降低无差错时的视频质量。这是由于为了获得目标比特率,而采用了粗量化过程。然而,在相同的目标比特率下,AIR比常规INTRA更新技术能提供更好更持久的客观无差错质量,因此,要进行INTRA编码的宏块数目是在健壮性和比特速率、无差错视频质量间的权衡。

4、双向解码及RVLC

  双向解码是来降低视频流中有效误码率的差错弹性技术,比特差错对感觉视频质量损伤最大,也导致了解码器端丢失同步。在这种情况下,会忽略数据流中该差错之后的部分,直到检测到无差错的同步码字。然而,抛弃的视频数据可无差错接收,从而明显增强感觉质量,抛弃的比特数是差错位置和下一个无差错同步字位置间距离的函数。结果,实际误码率的数量级远远高于实际信道比特差错率。为了仅将损伤限制在受影响区域,并节省无差错接收的比特,双向解码还可进行反向解码。基于前向检测到的差错,解码器会停止其搜索下一个同步字。当解码器在同步码字处恢复了同步时,再由反向恢复操作,对前向操作中跳过的数据段解码

  为了实现双向路解码,须采用可逆VLC(即RVLC)。可逆码字是变长编码,可以前向和后向解码,产生同样的输出。可采用以下几个技术产生可逆VLC码(Takashima,Wada and Murakami,1995;Watanabe,1996):其一是生成恒重码(二进制序列中1的数目),另一种生成恒重RVLC码表的方法是,利用一个码字第一符号的固定数目,或者说,如果解码器从0开始解码,则在码字中搜索固定长度的0,反之亦然。

  由于在每个码字中第一个被检测到的符号数目可以确定,这些码字都能双向解码,除了恒定码重策略,其他生成RVLC表的方法是在每个码字中分配固定数目的0、1。在这种情况下,RVLC码可能的设定由01、10、0011、1100、001011、000111、110100等组成。相比于优化的Huffman码,双向可解码的编码比特率增加2~3个百分点。

5、EREC(差错弹性的熵编码)

  尽管双向解码算法提高了抑制同步丢失的效率,但是相关联的可逆VLC码字在编码比特流中引入了不必要的开销,EREC通过在各种视频参数的连续传输间提供转换,显著提高了编码视频流的差错弹性。视频通信中差错最具破坏性的作用是使解码器丢失同步,这源于视频参数的变长码和两个连续同步字之间参数的可变数目。EREC试图使用定长的时隙结构来重组变长码,使得每个VLC码的起始总是跟定长时隙起始位置相一致。定长时隙长短由编码器决定,并在传送该时隙之前,放在视频块首发送给解码器。如果解码器检测到VLC码中有比特差错,同步总在下一个时隙开始时恢复,因此限制了受损时隙中的比特差错损伤。

三、组合的误码弹性工具

  除了前述独立的差错弹性机制,在视频编码算法中还可以使用组合技术来优化差错弹性。弹性技术具有多种选择,为了获得拟选的优化视频质量,我们应选择特定分组段。例如,分组的第一部分是由所包含宏块的轮廓和运动编码数据组成的,尚包含有关的管理数据,如COD标志和MCBPC。第二部分包含变长的DCT数据和某些符合标准的控制数据,如CBPY和差分量化步长(DQUANT)。为了在差错发生时,解码器能在重要的第一部分中自动恢复同步,采用EREC将编码的运动矢量放入定长时隙。使用HEC(信头扩展码)标志,对每个视频帧中重要的头部数据,在视频分组中被复制,来减少在视频序列中剔除的帧数。进一步说,第二部分的TCOEFF系数(DCT数据)采用RVLC码字而便于后向解码,减少了由于同步丢失而抛弃的DCT数据。第一部分的运动矢量也可采用可双向解码的编码方式,但是EREC则取消了可逆VLC码介入的开销。实验表明组合差错弹性技术所改善的客观质量(以110kbit/s和25f/s的速率采用MPEG-4编码的Suzie序列)。首先,应用数据分割将帧中编码的运动矢量(第一部分)和纹理数据(第二部分)分开,对第一部分的运动数据应用EREC;而当解码器标志第二部分出错时,DCT数据采用可逆的VLC码,可对DCT系数双向解码;进而,采用半码率的Turbo码来保护第一部分的头部数据。

四、结束语

  差控策略用来减轻传输差错对解码视频质量的影响,策略的选择依赖于很多因素,如在双向和多点通信中介入的延迟、误码恢复技术带来的比特率开销、处理过程的复杂度等,这是任何系统应用需要设计的问题。

  信道差错对感觉视频质量有着决定性影响,可以有各种形式。然而,最有破坏性的信道差错会导致解码端的同步丢失。由于在视频编码算法中应用了时间和空间预测,差错会在视频序列范围内从时间和空间上迅速传播。为了限制这种差错传播并减轻其影响,采用了差控机制来满足用户需求和期望。最简单的差控技术是当受到传输差错影响,需要隐蔽出现在视频内容中的“马赛克”。这些技术基于解码器,则在压缩视频流中不必增加开销。另一类差控技术包含一些力图阻止差错在时空间累积的机制。这类技术中最典型的代表是INTRA更新,该技术以规则的时间间隔发送INTRA帧。改进后的自适应INTRA更新(AIR)是以INTRA模式发送预定数目的运动宏块,每帧发送一次。由于AIR在更规则的间隔上更新视频场景中最活跃的部分,比INTRA更新获得更稳定的视频质量。再一类差控机制是致力于检测到差错时恢复同步的机制,这类差错弹性机制的例子有EREC和双向解码。EREC将变长码放到预置的定长时隙中,当解码器不能完成对当前VLC码解码时,其能在下一时隙起始处恢复同步。这样就减少了由于丢失同步而抛掉的比特数目。当编码视频流遇到传输差错时,双向解码是最小化有效误码率的高效算法。双向解码是解码器能对比特流双向解码,来恢复全部或部分在前向解码中扔掉的比特流。为了使解码器能反向解码,在比特流中采用了可逆码字。

你可能感兴趣的:(算法,优化,object,工具,AIR,Scalability)