可伸缩视频编码标准中的差错控制

2010-10-29 08:36
通信技术 2010年3期
关键词:宏块关键帧解码

贺 词

(中国科学技术大学 电子工程与信息科学系,安徽 合肥 230027)

0 引言

可伸缩视频编码,也可说是分层视频编码,是从视频服务器中一段视频流里提取出不同的子码流,从而满足在不同终端用户、不同网络框架和不同服务质量(QoS)下的各种不同的用户需求。编码有多个层,包括一个基本层和多个增强层。增强层通过提高帧率、空间分辨率和图像质量等方式来提高用户的体验感觉。这些方式分别被称为时间、空间和信噪比SNR的可伸缩性,同时它们也可以组合起来使用。基于数据包的视频传输方式正得到越来越广泛的应用,其中一个固有问题就是信道错误。网络拥塞使得路由丢弃了部分数据包,或是包经过了太长的时间才到达目的地,还可能传输链路上的物理干扰导致的比特错误。很多视频传输系统采用的都是UDP协议,任何比特错误都将导致整个包被丢弃,导致一部分图像区域甚至整个图像被破坏。加上目前为提高压缩效率采用了复杂的视频预测编码,使得错误在空间上和时间上都会传播,从而视频序列的主客观质量在出现一个 IDR(Instant Decoder Refresh)帧把错误截断前可能受到很大损害。在信源层面的错误弹性编码和错误隐藏两种方法是对抗这一问题的方法。错误弹性编码指的是信源在码流中加入特定的冗余信息来检测数据丢失、阻止错误传播、指导错误隐藏以帮助解码端恢复或者隐藏由信道出错造成的错误,在某一特定的信道情况下达到最小的端到端失真。错误隐藏则是在已知正确解码的区域和任何有帮助的信息的基础上对出错丢失的图像区域进行估计修复。错误隐藏只在解码端进行,它不像其它差错控制方法那样需要编码端参与。

SVC继承了H.264/AVC中几乎所有的标准错误弹性和错误隐藏编码工具,针对自身特点,利用层之间的相关性 SVC还提出几种新的方法,提高了性能。

1 SVC中的错误弹性编码

1.1 从H.264/AVC中继承的错误弹性工具

错误弹性除了早期视频编码的帧内编码宏块/帧刷新、条带编码、参考帧确认、参考帧选择、数据分割、头信息扩展码和头信息重复、冗余帧技术外,H.264/AVC还增加了新的标准工具:参数集,可变宏块顺序 FMO(Flexible MB Order),渐进解码刷新GDR(Gradual Decoding Refresh),场景信息标识, SP/SI帧,受限帧内预测和参考帧标记重复。这些都在SVC中得到了继承。

1.2 SVC中提出的错误弹性工具

可伸缩视频编码种提出了新的错误弹性工具:

① 质量层完整性校验:质量层完整性的校验补充增强信息(SEI)包含了由所有同一依赖层中(dependency_id)的质量增强层中的网络抽象层单元(NAL)计算得到的 CRC码。此信息用来检验解码端是否接收到了某个依赖层中所有增强层NAL单元。当检测到丢失,可以通知编码端,让其用没有丢失的质量基本层作为参考来编后续单元,从而消除由于使用有错质量增强层做参考产生的错误传播;

② 第0个时间层索引:第0个时间层索引SEI消息可以提供一种机制来检测当传输有可能出错时,是否需要第 0个时间层(最低的时间层)才能正确解码当前单元。解码端根据这一信息来决定当所依赖的最低时间层丢失时是否发送反馈信息要求编码端重传;

③ SVC中基于LA-RDO(Loss Aware – Rate Distortion Optimized Macroblock Mode Decision)的帧内编码宏块刷新:与单层编码时一样,SVC中宏块模式选择也会影响码流的错误弹性性能。在给定一个目标丢包率后,每帧都计算出基于4x4块的错误传播图,作为后续帧编码的模式选择时的考量因素。遍历所有的候选模式后对每个模式都估算出对应编码方法和一定丢包率下宏块重建时的失真和所需的比特数。根据以下公式选择代价最小的模式进行编码:

其中C代表代价,D代表失真,R代表编码码率,λ代表拉格朗日系数。多层编码时对基本层的模式选择与单层时完全相同。对增强层,如果没有层间预测,也直接使用单层的方法。如果使用了层间预测, 要考虑层间预测所依赖的上一层直到最低层的失真情况;

④ SVC中的冗余帧编码(Redundant Picture):因为传输中对于基本层的非对称保护,所以SVC标准是对增强层添加冗余帧,并且是针对每个 GOP(Group Of Pictures)中的关键帧(Key Picture)。即可以是简单的完全复制原帧数据,也可以是采用比原帧更大量化参数编码得到,后者帧质量较原帧低但是减小了冗余帧带来的码率增加。冗余帧可以使用与原帧参考帧不同的多个参考帧,阻止时间上的错误传播。原帧和冗余帧是同时通过冗余帧补充增强信息(Redundant Picture SEI)来指示一个冗余层表达和其对应的主层表达之间的相关性:在一个主帧丢失后,冗余表达是否可以完全代替主表达中的帧间预测,或者层间模式、运动、残差以及纹理预测。

当原帧丢失时如果存在冗余帧,可以对冗余帧进行解码。如果原帧没有丢失而是正常解码,冗余帧会被丢弃而不被解码。冗余帧可以大大减小丢帧的影响,假设原帧有一个冗余帧,并且是原帧的简单重复,那么原帧和冗余帧都丢失的概率则是原丢失率的平方。对标准测试序列 foreman和football的相关统计实验结果显示,试验中基本层为 QCIF大小,还有一个CIF大小的增强层,冗余帧是原帧的简单复制,相比没有冗余帧时有很明显的性能 提升。

2 SVC中的错误隐藏编码

错误隐藏是只在解码端使用的技术,如果一帧图像分成了多个条带,只有一部分丢失,可以采用空间的错误隐藏方法。对于一帧图像通常只用一个包来传输的低码率情况,只能根据已经解码的相邻帧来恢复实际上已经整个丢失的帧。较简单的方法是直接拷贝前一帧,在运动平滑的情况下也可采用运动拷贝的方法。

SVC中提出了几种基于层间预测的错误隐藏算法。通过组合使用这些错误隐藏方法,取得了比单层编码错误隐藏算法明显PSNR的增益:

① 丢失帧的参考帧管理:当检测到关键帧丢失后,将会把它当成 P帧来做错误隐藏,所需的参考帧列表重排序(RPLR)命令将保证当前帧用前一个关键帧来预测而内存管理控制操作(MMCO)命令将标记上一个GOP中不需要用到的帧,使得丢帧之后依然保证最小的解码图像缓冲 DPB(Decoded Picture Buffer)。如果丢失的不是关键帧,RPLR命令将根据前一个GOP中的帧的情况来构造,或者当丢失的帧在增强层时用基本层的帧来构造;

② 层内错误隐藏算法:指的是只用于丢失帧处于同一个空间或质量层的帧来做错误隐藏,帧拷贝FC(Frame Copy):待恢复的帧的每个像素都直接用参考帧列表中的第一帧同位置像素拷贝而来。基本层和增强层都可以使用此算法。B帧的时间直接TD(Temporal Direct)模式:宏块的运动矢量直接从其相邻的参考帧推导而来。例如,当参考帧列表1(后向列表)中的参考帧的同位置块使用其参考帧列表0(前向列表)中的一帧做参考,而这一帧也处在当前B帧的列表0中,那么这两帧将被用来对当前 B帧的该宏块进行双向预测。运动矢量将直接用列表 1中的参考帧的运动矢量根据帧的显示顺序的差值进行缩放得到。SVC中,空间和质量增强层不能使用TD模式进行编码,不过我们可以在对B帧做错误隐藏的时候使用上述算法。用上述算法得到的运动矢量来进行运动补偿预测出丢失的帧中的宏块,只不过此时假设残差为0。SVC框架设计中,每一层中需要用到的运动矢量都被保存了下来,因此使用 TD算法不需要增加额外的内存空间。运动拷贝 MC(Motion Copy):不论关键帧原本是I帧还是P帧,都将被当做P帧进行错误隐藏。因此TD算法无法使用,而两个关键帧之间的距离一般比较大,帧拷贝算法的性能会比较差。为了更准确的恢复出当前帧,前一个关键帧的运动矢量将被拷贝过来作为当前帧的运动矢量来进行运动补偿。

③ 层间错误隐藏算法:下面会介绍两种算法,一种用于单回路解码,另一种用于多回路解码。

基本层跳过模式 BLSkip(Base Layer Skip):对于增强层中丢失的帧的每个宏块,如果其在基本层中的对应宏块是帧内编码,则使用纹理预测;如果基本层中的对应宏块是帧间编码的,则使用运动预测和残差预测,运动补偿使用上采样后的运动矢量进行。如果基本层没有丢失,这一算法可以直接使用。如果基本层中的帧也丢了,则基本层的帧首先使用TD算法生成运动矢量,然后再恢复增强层,即BLSkip与TD结合使用。

基本层重建及上采样(RU):用此方法时,要先把基本层的帧重建出来,然后根据其与增强层的分辨率比例进行上采样。由于需要把基本层完全解码,这就需要多回路解码。这一方法在只有增强层发生连续丢帧时会比较有效,并且对于低运动量的视频序列其性能有可能与BLSkip不相上下。

改进的错误隐藏算法:一种改进的错误隐藏方法是将BLSkip与MC算法结合使用。用MC算法修复基本层中丢失的关键帧或者是对应的基本层帧丢失了的增强层中的关键帧。然后用BLSkip算法恢复出其它丢失的帧。

上述方法FC算法可以用于所有的帧;TD算法可用于所有非关键帧;BLSkip算法和RU算法只可用于增强层中的帧;MC算法用于关键帧。RU算法只在解码端采用多回路解码时才可使用。

3 结语

本文介绍了可伸缩视频编码标准(SVC)中用于的错误弹性编码和错误隐藏技术以及他们各自的特点,并且给出了其中一些方法相关的实验结果和推导。在现有的很多方法不断扩展和提升的同时,更多更有效的方法工具还在不断被提出来。如何提高对抗信道传输中衰减、误码和数据丢失的鲁棒性是视频编解码研究中一个重要和富有挑战性的工作。

[1]Wang Y, Zhu Q.Error Control and Concealment for Video Communication: A Review[J].Proc.of the IEEE, 1998(86):974-997.

[2]Wang Y, Ostermann J, Zhang Y Q.Video Processing and Communications[M].USA: Prentice Hall, 2002.

[3]Wiegand T,Sullivan G, Reichel J, et al.Joint Draft 11 of SVC Amendment[M].USA:[s.n.],2007.

[4]Schwarz H, Marpe D, Wiegand T.Overview of Scalable Video Coding Extension of H.264/AVC Standard[J].IEEE Trans.on Circuits and Syst.for Video Technol., 2007(17):1103-1120.

[5]He C, Liu H, Li H Q,et al.Redundant Picture for SVC[M].USA:[s.n.],2007.

[6]Guo Y, Wang Y K, Li H Q.Error Resilience Mode Decision in Scalable Video Coding[C].USA:[s.n.],2006:2225-2228.

[7]Chen Y, Xie K, Zhang F, et al.Frame Loss Error Concealment for SVC[C].China:Zhejiang University Press,2006:1862-1775.

[8]Wang Y K, Zhu C, Li H Q.Error Resilient Video Coding Using Flexible Reference Frames[C].USA:[s.n.],2005:691-702.

猜你喜欢
宏块关键帧解码
《解码万吨站》
基于计算机视觉的视频图像关键帧提取及修复方法
自适应无监督聚类算法的运动图像关键帧跟踪
基于运动估计与补偿的雷达拼图预测分析*
解码eUCP2.0
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
基于改进关键帧选择的RGB-D SLAM算法
基于聚散熵及运动目标检测的监控视频关键帧提取
基于KVM视频的H.264预测模式选择算法