首页 理论教育 视频容错编码和差错掩盖技术

视频容错编码和差错掩盖技术

时间:2023-06-21 理论教育 版权反馈
【摘要】:目前,通常采取以下的措施:1)基于编码端的容错技术,信源和信道编码使位流具有更强的抗误码能力。在最坏的情况下,没有使用再同步标记技术的视频编解码器将损失或丢弃一个宏块条的数据,这将对视频效果产生较大的负面影响;而使用该技术的视频编解码器则只损失一个像素宏块的数据。

视频容错编码和差错掩盖技术

1.误码对视频流传输的影响

经压缩编码后的视频码流对于误码是非常敏感的,这是因为:

1)视频压缩编码通常使用运动估计、运动补偿预测、帧内预测等预测技术,使得后面的数据在编码时要参考前面的数据。对它们进行解码时,要求前面的数据已经正确解码,也就是说数据之间具有依赖性。因此,在基于运动补偿预测的视频编码中,一帧数据中发生的错误不仅影响到当前帧的重建图像质量,而且会延续到随后的预测帧,产生所谓的误差漂移(Error Drift)或误差扩散(Error Propagation)现象,从而严重影响重建的视频质量。只有当下一个I帧被正确解码时,误差扩散才能得到消除。

978-7-111-34368-4-Chapter05-24.jpg

图5-19 基于运动补偿的时间域可分级编码原理框图

2)为了进一步提高编码效率,通常在熵编码中使用变字长编码(VLC)。但是由于VLC的每个码字具有不同的长度,因此若码流中的某些比特位出现错误,解码器就无法正确跳过出错码字,从而失去同步,导致后面的码流无法正确解码。

由于视频应用具有实时性,对时延很敏感,因此视频流数据出现差错后,使用自动重传请求(Automatic Repeat Request,ARQ)的差错控制机制是不合适的,这样就要求视频编解码技术本身必须对传输误码有容错(Error Resilience)和掩错(Error Concealment)的能力。目前,通常采取以下的措施:

1)基于编码端的容错技术,信源和信道编码使位流具有更强的抗误码能力。

2)基于解码端的掩错技术,利用像素值的相关性估计丢失的像素信息。

2.编码端的容错技术

编码端的容错技术可概括为数据分割(Data Partition)、再同步标记(Resynchronization Marker)、可逆的变字长编码(Reversible Variable Length Coding,RVLC)、参考帧选择(Reference Picture Selection)等方法。这些方法都是在不改变传输信道特性的前提下,通过添加尽可能少的额外冗余比特或重新调整码流中数据的相对次序来提高视频流的容错能力的。

(1)克服比特流同步丢失的方法

比特流同步丢失,是指传输差错导致解码器不能追踪到哪些比特位代表什么参数。例如,当在可变长码字中出现1比特错误时,不仅解码器不能对该码字正确解码,同时因为码字的可变长特性,在下一个再同步点到来之前,解码器不能正确理解比特流中接下来的比特位信息。因此,哪怕是单个比特的错误,也将导致丢失一连串的信息。克服比特流同步丢失问题的关键在于提供这样一套机制:在传输差错发生的时候,解码器能够快速地把问题隔离开,并及时实施“再同步”。再同步标记和数据分割是常用的两种使比特流获得再同步的方法。

1)再同步标记

使用再同步标记是使比特流实现再同步的最简单的方法,其基本原理如下:在比特流里设置唯一的而且容易找到的一个入口点,一旦解码器失去同步,它能快速地找到下一个同步点并从该点继续开始解码。MPEG-1、MPEG-2、H.261和H.263是在压缩的视频层次结构的关键位置设置再同步标记(同步码),如图像或者宏块条(Slice)的首部位置。例如,在Slice层的码流结构中,编码器在两个Slice之间插入同步标记。同步标记与码流中其他码字的任何组合都不会相同,使解码器能够唯一识别,从而使Slice构成独立可解的基本单元。当某个Slice出现错误时,解码器找到下一个同步标记继续解码,使该Slice的错误不会影响到后面Slice的解码。在Slice内部,数据按照宏块的空间顺序进行组织,这使得编码后重要的语法元素(宏块头和运动矢量等)和不重要的语法元素(DCT系数)交织排列。

这种方法是在间隔固定数目块的位置设置再同步标记,它对应的是不同数目的比特位。由于在活动区域需要更多的比特位,再同步标记会间隔太远,而在许多情况下这些活动区域更有可能受到损坏。为了解决这一问题,MPEG-4采用了间隔固定数目的比特位(编码块的数目是变化的)周期性地设置再同步标记的方法,这种方法的优点在于它减少了活动区域被损坏的可能性,简化了搜寻再同步标记的程序。在解码端,解码器可由下列情况判断误码的发生:变字长编码的码字不存在,运动矢量超出预测范围,DCT超过精度范围,以及DCT系数的个数超过像素块的容量。在最坏的情况下,没有使用再同步标记技术的视频编解码器将损失或丢弃一个宏块条的数据,这将对视频效果产生较大的负面影响;而使用该技术的视频编解码器则只损失一个像素宏块的数据。当然使用再同步标记技术需要增加额外的冗余比特,从而降低了编码效率,增加了网络的额外载荷。

2)数据分割

由于误码可能导致同步标记的丢失,这样跟随于误码后面的码流也将变得无法解析。

数据分割(Data Partition)是按照语法元素将码流重新组织的一种技术。视频码流各语法元素具有不同的重要性,在出现传输错误时对解码质量的影响程度不同。比如,对一个由帧间模式编码的宏块而言,其运动矢量信息与预测误差(残差)的DCT系数对重建该宏块的作用是大不相同的,运动矢量的丢失将会严重影响该宏块的解码图像质量,而DCT系数对于解码来说则没有那么重要。因此,重要的运动矢量信息应与非重要的残差信息放在码流中的不同位置传输。视频的重要信息包括各层次的头信息、运动矢量、DCT的直流系数、MPEG-4中的形状信息等,应该把这些重要的信息放置在紧靠再同步标记之后,接着再放置其他不太重要的信息(如DCT的交流系数)。

在MPEG-4标准中,数据被分成两个部分:一部分为形状和运动信息,另一部分为纹理信息。

在H.264/AVC数据分割中,组成一个Slice的码流被分成三个单独的部分:A类、B类和C类。其中,A类包含Slice头信息、宏块类型、量化参数、运动矢量等信息;B类包含所有Intra宏块的CBP(Coded Block Pattern)和DCT系数;C类包含所有Inter宏块的CBP和DCT系数。

在这种组织方式下,A类数据包含了正确解码图像所需的最重要要的信息;B类数据包含了次重要的信息,因为其对图像质量的影响程度较高,而且可以用来消除误差扩散;C类数据包含了重要性最小的信息,一些Slice的C类数据即使不被正确收到,重建图像的质量也几乎没有影响,但是C类的数据量却通常是三类中最大的。这三类数据的解码有这样的依赖关系:A类独立可解,B类和C类各自独立,但是它们的解码都必须依赖于A类数据。当应用数据分割后,不同类的数据被编码器放入不同的NAL单元,并分别进行传输,这样信道编码容易对不同数据进行非均等差错保护(Unequal Error Protection,UEP)。

数据分割技术需要与非均等差错保护(UEP)策略相结合,才能真正起到保护重要数据的作用。在非均等差错保护策略中,信道编码为重要的数据添加较多的冗余,为不重要的数据添加较少的冗余,使它们具有不同的抗误码能力。

数据分割技术与再同步标记应联合使用,即使用再同步标记将重要的视频数据与非重要的数据隔离开来。这样一来,视频的容错能力可以从两方面得到加强,一方面,所检测出的误码的影响被局限于同一分割区;另一方面,若再同步标记未被找出,则意味着误码已经发生。由此可见,再同步标记技术可有效地限制误码在空间域的传播。

(2)可逆变字长编码与双向解码

由于哈夫曼编码等常规的变字长编码(VLC)只能进行前向解码,信道传输差错使得解码器无法确定比特流中正确码字的边界,丢失与编码器的同步,无法继续正确地对变字长编码进行解码。这种情况下解码器就需要采取一些重同步策略以重新获得与编码器的同步,常用的重同步策略就是在码流中定期插入唯一的再同步标记。检测出差错后,解码器在码流中搜索再同步标记以重新获得同步。在解码器获得重同步后,差错发生的位置被限制在相邻的两个再同步标记之间,但解码器仍无法准确地指出差错发生的位置,因此两个再同步标记之间的数据不得不被丢弃,造成相对大量无差错的数据丢失,从而加剧了差错对重建视频质量的影响。

而可逆的变字长编码(RVLC)则使用编码前缀与后缀技术,这样,一个可逆变字长编码的码字不仅可以前向解码,也可以后向解码,即具备双向解码的特性。在差错发生后,解码器可分别由两个重同步点进行解码,并通过比较前向和后向解码的数据可以更精确地确定差错发生的位置,这样就可以恢复部分数据,而不是全部丢弃,如图5-20所示。因此,RVLC技术有效地提高了压缩视频流的抗差错能力。RVLC联合同步标识的编码方法被MPEG-4和H.263编码标准采用。不过,RVLC的编码效率要低于VLC。

978-7-111-34368-4-Chapter05-25.jpg

图5-20 RVLC码字能够从前向和后向两个方向解码

(3)时间域内的容错编码技术

如果有传输差错发生,即使对比特流实施再同步标记,仍然会出现另一个至关重要的问题:解码器表示出的状态同编码器的状态不相同,尤其是当采用运动预测和补偿技术的时候,这种不匹配会导致预测错误以至出现显著的差错蔓延,严重损害后续的很多帧。下面讨论时间域内的容错编码技术。

1)随机帧内编码(www.xing528.com)

限制传输差错蔓延最简单的方法是只采用帧内编码帧(即I帧)。由于I帧没有采用任何的时间域预测,因此避免了传输差错的蔓延,然而它的压缩效率却十分低。另一个方法就是周期性地采用I帧,如MPEG-1、MPEG-2视频流层次结构中就采用了图像组(GOP)结构,每个GOP的起始帧就是I帧。这种周期性地重新初始化预测环的方式,可以把传输差错蔓延的范围限制在最多一个GOP的范围内。然而,周期性地使用I帧限制了压缩效率的提高,在比特率很低的视频应用场合,如无线信道上的视频传输或因特网上的视频传输,这种方式不合适。因此,可以对每一帧采用局部的帧内编码,即只对独立的宏块而不是整个帧实施帧内编码,其中最简单的方法就是对不同位置的宏块实施周期性的帧内编码,也可以根据宏块的内容、信道丢失模型以及对易于丢失的宏块的估算,决定最优化的帧内编码模式。

2)独立分段预测

另一种限制误扩散的方法是将数据域分成几个独立可解的段,并在段内执行时空预测。通过这种方法,在某个段内的错误将不会影响其他的段数据。这种方法的一种做法是按照奇偶序号将所有的帧分成两个段,这样奇帧通过奇帧预测,偶帧通过偶帧预测。这种方法被称为视频冗余编码(Video Redundancy Coding,VRC)。另一种方法是将一帧分成若干区域(比如GOB或者Slice),并且一个区域只能从上一帧的同样区域预测,这在H.263标准中被称为独立分段编码(Independent Segment Encoding)。

3)参考帧选择

在编码器和解码器端都有多个帧存储器,编码器端应保存最近编码的n帧重建图像,根据一定的编码策略,由用于预测的时间参考(Temporal Reference for Prediction,TRP)指示确定采用哪一帧作为帧间编码的参考帧;解码器端也保存最近正确解码的n帧重建图像,通过选择TRP所指示的参考帧进行解码,当TRP所指示的帧在本地存储中不存在时,则通过反馈信息指示编码器强制做帧内编码。该模式使用一个反向通道将解码器端的反馈信息,如哪帧图像的哪些部分已正确解码,传送给编码器。当出现数据包丢失时,解码器就通知编码器,它在什么时候已经正确地(或错误地)接收到哪些帧,于是由编码器决定哪一帧应当作为下一次预测编码用的参考帧。

由于这种方法需保存一定数量的重建图像,因此编/解码端都需要设立大量的存储器,反馈信息的传输延时,使得该方法不能满足实时处理的需求。对于非实时系统,可以很好地抑制误码的传播。

3.解码端的掩错技术

与编码端的容错技术一样,解码端的掩错技术也是增强视频编/解码器鲁棒性的关键技术。编码端的容错技术属于前处理过程,即如何预防误码的发生;解码端的掩错技术属于后处理技术,即在误码发生后如何消除其影响。掩错技术就是要补救因误码而产生的差错信息,以缓解因误码而造成的视频失真。由于掩错技术工作在解码端,并不需要增加额外的码流开销,不会引起网络的拥塞和延时问题,所以在视频数据的差错恢复中,差错掩盖技术得到了广泛的应用。

掩错技术的工作原理主要依据以下两个特性:

●视频信号在空间域、时间域具有极强的相关性。

●人眼视觉系统容忍一定程度的视频失真。

一般说来,掩错技术可以归纳为三类:空间域的掩错技术、频率域的掩错技术和时间域的掩错技术。

(1)空间域的掩错技术

空间域的掩错技术主要利用了视频序列的空间域相关性,通过有效邻域的空间插值算法来估计出当前出错或丢失的数据块。该掩错技术依赖于帧内仅有局部数据损失的假设,即出错数据块周边的其他数据块应是完好的。例如,若一帧图像中的一个宏块的数据出错,而其周边的4个宏块数据是完好的,则出错宏块的数据可用其周边的4个宏块数据的线性插值来代替。然而该技术的计算复杂度过高,因为每一个像素都需要插值计算。

(2)频率域的掩错技术

帧内编码模式把视频的空间域信号转换成频率域信号,且变换后像素块内数据的相关性被大大地削弱。由于同一帧内像素块间存在着相关性,因而相邻像素块的频率域系数也存在着相关性,且频率越低的系数其相关性越强。频率域的掩错技术要求出错数据块周边的其他数据块是完好的,且编码模式也是帧内的,因此该技术只对帧内编码模式适用,而对帧间编码模式则无效,缺损数据块的频率域系数将由完好的相邻块的频率域系数经插值来恢复。由于相邻数据块的频率域系数的相关性只存在于低频率系数中,对高频系数则相关性很低,因而对频率域系数的恢复,只适用于前10个最低的频率系数。在频率域系数恢复后,只需对其进行逆变换就可获得整块像素的恢复。就计算复杂度而言,频率域掩错要优于空间域掩错技术。

由于空间域掩错技术和频率域掩错技术依赖于出错数据是局部的,即其相邻数据块是完好的假设,为了避免突发误码造成大面积数据出错,而使掩错技术失效,如何打包数据就变得尤为重要。数据的打包要与视频编码技术的特点相结合,从而使数据误码对视频重建的影响尽可能小。不相邻的数据块的信息被打在同一个数据包内,当该数据包丢失或出错时,因为该数据包所包含的数据块的相邻块不在同一包中,因此该数据包所包含的信息可通过其相邻块的数据信息得以恢复,这种技术叫做交织打包(Interleaved Packetization)。在数据打包中,要尽量使每个包中的各数据单元的相关性小。

(3)时间域的掩错技术

按照丢失块运动矢量重构方法的不同,时间域的掩错技术可以分为以下几类:时间域替换法、利用运动的时间连续性重构运动矢量法、利用运动的空间连续性重构运动矢量法、重新估计运动矢量法。这些方法有一个共同点,就是首先通过某种准则重构出丢失块的运动矢量,然后用此运动矢量所指的内容填补到丢失块中,从而达到掩错的目的。

1)时间域替换法

当一帧图像中的某部分数据(像素)出错后,最简单的修补方法就是利用视频信号在时间域中的相关性,用前一帧相应位置的像素来替换本帧中出错的像素,这种方法就是时间域替换法,也称为零运动掩错技术。这种方法的优点是简单,对于实时差错掩盖非常简便易行。但从它的恢复原理来看,只适用于静止图像序列,比如新闻联播的背景画面,视频会议的发言场面等。对于运动变化较为剧烈一些的图像,由于参考帧与当前帧之间有物体移动过程,因此效果不佳。有效利用视频信号在时间域的相关性,重建出错数据块的运动矢量是恢复出错数据的关键。

2)利用运动的时间连续性重构运动矢量

在大部分情况下,视频序列中物体的运动都具有时间连续性。当摄像机在匀速运动情况下进行拍摄时,画面中的人物缓慢移动,此时视频序列中物体的运动就具有可预知性,这种特性在进行错误隐藏时可以被用来预测丢失块的内容。如图5-21所示,由于假设运动具有连续性,因此若第n-1帧的块B2由第n-2帧的块B0运动而来,那么第n帧的丢失块B3就应该由n-1帧的块B1运动而来。从运动矢量重构角度来说,就是块B1的运动矢量应该与第n-2帧的对应位置块B0的运动矢量相同,即MVB1=MVB0

978-7-111-34368-4-Chapter05-26.jpg

图5-21 利用运动的时间连续性重构运动矢量示意图

这种方法的优点也是简便,并且效果要比时间域替换法好,因为时间域替换法可以看做是它的一种特殊情况。但它的缺点是当运动速度有变化或物体运动方向不一致时,效果不佳。

3)利用运动的空间连续性重构运动矢量

在图像序列中,一个物体可能包括很多块,或者当整个画面做全局运动时,这些块的运动应该是一致的。换句话说,就是这些块的运动矢量在空间上应该是连续的。因此当一个块丢失时,可以使用其空间上相邻块的运动矢量来重建该丢失块的运动矢量。

4)重新估计运动矢量

在上述的方法中,都只是通过运动矢量的时间域、空间域相关性进行重构的,但当一个块的运动矢量与其他块的运动矢量相关性不强时,则效果不佳。比如当使用中值法时,如果这个块与大多数邻块的运动矢量不一致而仅与某个邻块一致,则重构的结果一定不是最好的。重新估计运动矢量的方法是将丢失块及其邻块(或其一部分)作为一个整体,并保持相对位置不变,在参考帧中重新进行搜索,以找到最佳的运动矢量。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈