为了克服
误码及防止误码的扩散,在视频编码中要应用各种抗误码(Error Resilience)技术。抗误码技术又称“差错控制方法”。其实质在于:无论何时检测到误码,都使丢弃的数据量为最小,或者说使因误码所造成的伤害影响最小。传统的抗误码方法有自动重传请求(ARQ)、前向错误纠正编码(FEC)和数据交错(Interleaving)等技术;近几年来,对视频抗误码提出了很多新的技术,包括误码检测技术、传输层的差错控制技术、比特流变换技术、解码端的误码掩盖技术和防误码扩散技术等。
背景
由于实际的无线和IP信道是不可靠的,如①不可靠的有线/无线信道在传输比特流中会引入随机误码;②无线信道因多径衰减会产生突发误码;③而在尽力型的网络传输中,IP信道上的拥塞会引发丢包现象等。正是由于信道带宽的限制,视频通信的数据一般需要采用低速率的视频压缩技术处理后再传输。而压缩后的视频比特流对信道的干扰是非常敏感的,这对于视频解码,造成误码环境下恢复图像质量差,轻则使解码重建图像出现令人讨厌的方块效应,重则根本无法解码播放。另外,在MPEG-1、MPEG-2、H.261和H.263等国际图像编码标准中,块编码算法使用了运动补偿和可变长编码技术。如果视频编码数据在传送时出现误码,就会影响与该误码数据有时间相关性的数据恢复,即误码扩散,它会给后续的视频信号造成不可恢复的损失。为了减少由于信道误码引起的图像失真,人们提出了各种抗误码的方法,如自动重传请求(ARQ)、前向错误纠正编码(FEC)、数据交错(Interleaving)、误码检测技术、传输层的差错控制技术、比特流变换技术、解码端的误码掩盖技术和防误码扩散技术等。
传输信道产生的误码可分为:不可靠的有线/无线信道将在传输比特流中引入随机误码;由于网络阻塞,有线PI网络中的“尽力”传输将引入包丢失;在无线信道或移动无线网中,多径传播会导致突发误码。针对这三类误码,要采用不同的抗误码策略。视频抗误码可以在视频编码、传输、解码恢复的不同环节采用相应的抗误码技术,以及多个环节综合的抗误码技术。
检测技术
传输解码层
传输解码层上的误码检测是指在信道解码环节上检测传输误码。在传输层添加头信息是常用的一种误码检测方法。如在基于包交换的网络中,视频编码器输出的比特流被打成一定大小的数据包,每个数据包都包含一数据包头。其中包含有数据包的顺序信息等,该信息在解码时就可用来检测是否存在丢包现象。如RTP协议就使用了这种方法。前向纠错(FEC)是在传输层常用的另一种误码检测方法。
视频解码层
视频解码层上检测误码是指在视频解码环节上检测传输误码。由于信源编码协议对比特流的结构作了详细规定,所以可通过检查比特流是否符合语法结构来检测是否发生误码。例如,量化步长不应该为零,DCT系数的个数存在一个最大可能值(对8X8的DCT变换,该值为64),运动矢量也应在一定的范围内取值等。当解码器检测到这些规则遭到破坏时,就可以断定发生了误码。
其次,如果信源编码器使用可变长编码(VLC),即使出现1比特的误码,也可能会因丢失解码同步字而导致后面的比特无法解码。一般情况下,编码器所使用的VLC码表是不完全码表,即不是所有码字都是合法的。因此,解码器一旦检测出一个不属于码表的码字,那么就可以确定发生了误码。
另外,还可以根据视频信号的自然特征来检测误码。如平滑特征是视频信号的重要特征。在脉冲编码和差分脉冲编码中,如果相邻两行像素的差值大于一定阈值,就可以认为当前图像块遭到了误码破坏。
最新的方法是对视频图像宏块在空域或时域上加入某种强制关系构成脆弱水印。如果在解码端发现水印信息遭到破坏,也可以断定发生了误码。
总结
在传输层添加头信息、或利用FEC技术,均是较为可靠的方法,其缺点是要牺牲一定的网络带宽。利用视频信号本身的属性及比特流语法结构进行误码检测,不会增加额外的传输负担,但会增加计算量,且有可能会发生误检。在比特流中添加同步标志,利用VLC编码表的不完整性,则以较小的冗余换取了更高的误码检测效率,是一种较好的方法。而使用脆弱水印来检测误码,其最大的问题是当没有误码发生时,水印本身引入了噪声。这些方法并不互相冲突,在实际系统中可以结合使用。
隐藏技术
误码隐藏技术是利用人体视觉能忍受一定程度视频失真的原理,将客户端接收的数据错误实行隐藏的技术。空间内插和时间内插是错误隐藏的两种基本方式。空间内插利用相邻空间信息来重建发生错误位置的像素,而时间内插是利用前面视频帧的信息来重构发生错误位置的信息。由于误码隐藏技术是在接收端完成的,因此不会出现网络拥塞和网络延迟问题。
时间预测
基于运动补偿的时间预测的原理是把前一帧中相应空间位置的图像块直接用来填补当前帧中受损伤的图像块。然而,当画面存在较大运动时,会出现非常明显的方块效应。当运动矢量被正确传输时,使用运动补偿块代替同样位置的图像块,可以有效的弥补上述缺点。
平滑最优恢复
这种方法主要利用了大多数视频信号的平滑特征来估计受损块数据,即通过最小化块内相邻像素之间的空间和时间偏差,使估计得到的视频信号最平滑。
空频域插值法
视频信号的
平滑特征还意味着受损图像块中的系数与相邻图像块中的对应系数比较接近。如果受损块只是损失了个别系数,可以利用四个相邻块系数的插值估计这些受损系数。如果受损块的所有系数都已丢失,这种频域插值的方法相当于用相邻块对应像素的插值估计受损块的像素值,而不是利用空间距离最近的像素来插值。由于四个方向上用来做插值的像素点与被插值的像素点相距8个点,它们之间的相关性较小,因此估计精度较差。因此,提出了一种新的插值方法:利用受损块周围四条单像素宽的边界线做插值。其有两种具体的实现方法:一种方法是使用距离最近的两条边界上的像素做插值,另一种方法是使用四条边界上的对应像素做插值。
该方法仅利用了空间平滑属性,主要针对的是静止图像或者视频中使用帧内编码的图像块。对于使用帧间编码的视频图像块,因为预测误差的DCT系数相关性不强,频域插值方法并不适用。此外,也可以用空域插值来直接估计像素的原始值。
自然图像的平滑特征仅表现在低频系数部分,高频系数的相关性不强,因此,频域的插值往往只需要对低频部分有限的几个系数进行,其余高频系数往往强制设为零。
运动矢量恢复
同样基于视频信号的平滑属性,运动矢量也可以用类似的插值方法加以恢复。常用的运动矢量恢复方法有:
①直接将受损运动矢量置零,适用于运动较少的视频信号。
②用上一帧对应图像块的运动矢量代替。
③使用空间相邻图像块的运动矢量的平均值代替。
总结
上述所有的误码隐藏技术都利用了若干关于视频图像的先验知识,如时域空域中的平滑特征等,以平滑特征为最优目标的恢复技术强化了这一性质。插值法被认为是能量最小化的一种特例,直接利用空间插值法的缺陷在于完全忽略了受损块中完好的系数,并且只利用了图像的空间相关性;而以平滑特征为最优目标的平滑最优恢复方法,将空域和时域的相关性都利用了。
传输层技术
传输层的差错控制技术是一种在视频传输中非常典型的差错控制技术,其包括:前向纠错、利于错误恢复的包化技术和多路复用技术、有延时限制的自动重传技术和不等的错误保护技术等。该方法被应用于己经编码的视频流,通过误码检测和纠正,并在可能的情况下通过请求重传损伤数据的方法来达到抗误码的目的。
前向纠错
FEC的基本思想为:在信源数据的基础上,增加一定的冗余数据,形成信道编码。信道编码通过高误码率的信道(如无线),可能会发生数据丢失或差错等问题。然而,由于在接收到的数据中包含了冗余数据,因此在一定的差错范围内,接收端仍可利用冗余数据来修复被破坏的数据。根据所加冗余信息的类型不同FEC编码主要可以分为信道编码、基于信源编码的FEC、结合前两者的编码三种。
信道编码是将k个源信息包和n-k个冗余包编码后传输,客户端只要收到任意m个包( )就可以还原源信息,即重建k个源信息包(如图1所示)。这种编码纠错能力很强,而且纠错完全在客户端进行,且发送端可以向任意多的用户传送信道编码的数据,因此,适用于多播。然而信道编码牺牲了编码效率,增加了延迟,并且难以适应网络突发、短期的拥塞现象。
基于信源编码的FEC是将源数据包以相差很大的压缩率进行分别编码,一般让压缩率高的数据作为压缩率低的冗余信息。若压缩率低的包丢失了可利用压缩率高的包中的信息来恢复,只是效果有所下降罢了。同样,该方法编码效率也不高,但是其延迟较小,并且可以通过引火反馈来提高编码效率。
将信道编码和基于信源编码的FEC相结合,在两者之间寻找最优的速率分配点。
有效的FEC应该是用尽可能少的冗余信息就能够消除丢包或误码所造成的不良影响。FEC要求较多的校验位来进行检错和纠错,从而引起码率和计算量的增大,并且FEC方法对突发误码性不太适合,这是因为大多时候没有误码发生,FEC方法浪费了很多可用带宽,而一旦发生突发性误码时,FEC方法又没有太大的用处。
延时限制重传
当多媒体的重要数据发生错误时,最理想的错误控制是重传。尤其当关键数据在重传后如果能在播放时刻之前到达客户端,就应采用重发策略。而传统的重传机制(ARQ),不考虑媒体的实时播放要求,其请求重传的数据可能会超过数据的解码或播放时限而被接收方丢弃。因此,只有当数据传输时间明显小于媒体的播放延时要求时,才采用重传机制来重新发送丢失的数据,这就是有延时限制的重传技术。有时延限制的重传策略可以分成接收方控制的重传、发送方控制的重传、混合重传三种。
在非实时的视频传输,如果传输控制器可以及时的获得有效的反馈信息,即能及时的知道哪些信息发生了错误,利用重传技术也是十分有效的。
对于实时视频传输,传统的观点一般认为它会引入延时而不适用,然而这种观点正在逐渐发生转变。传统观点还认为重传技术会加大信道负载,进而增加重传请求,造成“网络风暴”。而实际上,当发生重传时,只要视频编码器适当降低输出码率,就可以缓解信道负载。所以重传技术在视频传输中的应用己经越来越广泛,尤其是在高误码率的信道环境,如对无线网络环境是非常有用的。
不等错误保护
对于无线信道,由于其有限的带宽,信道编码(如FEC编码)引入的数据冗余会增加本身就有限的带宽消耗,这将导致媒体流中的可传送的有效码率进一步降低。对于给定的无线信道带宽资源,则信道编码的冗余量的选择问题,实际上就是差错恢复能力与压缩效率之间的一个平衡问题,这也是UEP的出发点。其通常与信源编码和FEC结合来达到抗误码的目的。其主要有如下三类方法:
①结合传输优先级的可扩展编码FCE保护。FCE在具有传输优先级的可扩展编码方面较为常用。如MPEG-4的可扩展编码的比特流,对不同视频层采取不同冗余程度的差错保护。视频的基本层对媒体质量的影响最大,则增加冗余保护的力度;视频的扩展层对媒体质量的影响较小,则给予较低的冗余保护甚至不予冗余保护。由于不同媒体层的信道编码策略不同,既保护了对媒体质量贡献最大的基本层数据,又降低了信道编码中冗余数据对有限传输带宽的消耗,提高了媒体流的有效比特率。
②基于视频主观质量的不等FEC保护方法指在给定的信道速率和误码环境下,利用生理学的研究成果,即生物视觉具有选择注意的能力这一特性,对主观质量影响较大的区域的宏块比特流给予较强FEC的保护,而其它宏块比特流则给予较弱的FEC保护。
③联合信源/信道编码不等FCE控制技术是一种非常有效的抗误码技术。因对于压缩后的视频比特流,其重要性是不等的,如视频比特流中的分辨率、帧类型、量化参数和其它与视频数据的有关描述信息,当其在传输时由于信道干扰被破坏或丢失,则该视频帧将是不可解的;并且,对于帧间编码宏块的运动矢量比DCT残差数据、帧内编码宏块的DCT直流分量比交流分量数据要重要得多。因此,可以根据数据的重要程度给予不等的FEC保护。采用这样的方法,视频包的重要部分发生误码的概率可以变得非常小,从而有利于保证重建图像质量不受误码大的影响。
仅仅采用传输级的差错控制技术并不能完全纠正所有的视频比特流中的错误,因此,在实际应用中,其通常与其它的控误码方法一起联合使用,以弥补其不足。
联合编解码
如果在编解码器之间存在一条可靠的反馈通道,交互式抗误码技术就可以得以应用。
选择性编码
如果编码器不使用预测编码方法,那么误码隐藏技术将没有如此重要,因为误码的影响只局限于当前一帧图像,而且单帧图像中的瑕疵很容易被后续帧掩盖。不过,由于相邻帧之间的信息冗余非常的高,帧间预测方法又不能弃之不用。因此,如果解码器能够提供受损图像块的位置信息,编码器可以立即采用帧内编码模式对相应位置的图像块编码,这样误码对图像造成的损害可以有效地控制在有限的几帧之内。但是这种简单使用帧内编码方式的策略会明显降低图像压缩比。因此,可以使用下面经过改进的编码策略。
假设编码器正在对第i帧编码时,解码器通知编码器第i-n帧某个位置出现了误码(n取决于信道延迟时间和编码器的编码帧速率),编码器可以根据运动补偿的依赖关系,迅速计算出从i-n+l帧到i-1帧图像中受到影响的宏块位置。然后,对第i帧进行预测编码时,只要避免使用受损宏块作为预测参考,这样就可以把误码造成的影响限制在i-n帧到i-1帧之间。在这种策略下,仅仅是限制了可用来预测图像的区域,对第i 帧的处理仍然采用帧间预测编码,所以编码压缩效率受到的影响相对较小。
自适应传输
如果传输控制器可以从传输目标获得及时有效的反馈信息,从而可以及时知道哪些重要信息发生了误传。这对视频重建时非常有帮助的。如当解码器发现视频数据受损时,则立即向编码器发出重传请求,同时用某种误码隐藏技术恢复受损的图像块,然后继续解码,整个过程并不等待重传数据的到达。解码器需要记录下受损像素和相关编码信息,这里受损像素是指因误码扩散而受影响的所有像素,其包括当前帧中和后续帧中的像素。当重传数据一到,受损像素将被纠正过来,就好象没有发生过传输误码一样。但如果运动补偿的精度在半像素级,那么受损像素的跟踪及纠正过程将较为复杂。
防扩散技术
由于误码扩散不仅使出错帧的重建图像质量下降,而且可能使后续帧造成不可恢复的损失,所以使要尽可能避免的。一般的抗误码策略有:
(1) 对受误码影响的宏块实施帧内编码,该方法与标准兼容,非常适合于实时系统中使用。
(2) 在编码端标识受误码影响的宏块,以避免下一帧继续参考该宏块,该方法在没有增加运算复杂度和信道负担的情况下,将误码的影响仅仅限制在出错帧内。
(3) 自适应帧内宏块刷新方法,该方法减少了解码端纠正大量错误的时间,特别适用于反馈信道延时较长或广播环境的无线视频通信系统中使用。
(4) 交互式防误码扩散技术,该方法能够有效的抑制误码扩散,且与标准兼容,可应用于实际视频通信系统中。