三、
H.264的视频编码层的错误恢复[1,4]
在H.261、H.263、MPEG-1、MPEG-2、MPEG-4中,许多错误恢复工具已经得到了很好的应用:图像分割的不同形式(片、块组),I模式宏块,片和图像的内插,参考图像选择(带有和不带反馈、图像级别、GOB/SLICE或MB级别),数据分割等。
H.264标准继承了以前视频编码标准中某些优秀的错误恢复工具,同时也改进和创新了多种错误恢复工具。这里主要介绍H.264的错误恢复工具,包括参数集、灵活的宏块排序和冗余片RS等。
1. 参数集
参数集是H.264标准的一个新概念,是一种通过改进视频码流结构增强错误恢复能力的方法。H.264的参数集又分为序列参数集和图像参数集。其中,序列参数集包括一个图像序列的所有信息,即两个IDR图像间的所有图像信息。图像参数集包括一个图像的所有分片的所有相关信息,包括图像类型、序列号等,解码时某些序列号的丢失可用来检验信息包的丢失与否。多个不同的序列和图像参数集存储在解码器中,编码器依据每个编码分片的头部的存储位置来选择适当的参数集,图像参数集本身也包括使用的序列参数集参考信息。
众所周知,一些关键信息比特的丢失(如序列和图像的头信息)会造成解码的严重负面效应,而H.264把这些关键信息分离出来,凭借参数集的设计,确保在易出错的环境中能正确地传输。这种码流结构的设计无疑增强了码流传输的错误恢复能力。
参数集具体实现的方法也是多样化的:
(1)通过带外传输,这种方式要求参数集通过可靠的协议,在首个片编码到达之前传输到解码器;
(2)通过带内传输,这需要为参数集提供更高级别的保护,例如发送复制包来保证至少有一个到达目标;
(3)在编码器和解码器采用硬件处理参数集。
2. 片、片组和FMO
一幅图像由若干片组成,每片包含一系列的宏块(MB)。MB的排列可按光栅扫描顺序,也可不按扫描顺序。每个片独立解码,不同片的宏块不能用于自身片中作预测参考。因此,片的设置不会造成误码扩散。
灵活的宏块排序FMO是H.264的一大特色,适用于H.264的基本档次和扩展档次的应用。
图像内部预测机制,例如帧内预测或运动矢量预测,仅允许用同一片组里的空间相邻的宏块。FMO通过宏块分配映射技术,把每个宏块分配到不按扫描顺序的片中。FMO模式划分图像的模式各种各样,重要的有棋盘模式、矩形模式等。当然FMO模式也可以使一帧中的宏块顺序分割,使得分割后的片的大小小于无线网络的MTU尺寸,经过FMO模式分割后的图像数据分开进行传输。
所有的MB被分成了片组0和片组1,相应地分别采用黄色和白色表示。当白片丢失时,因为其周围的宏块都属于其他片的宏块,利用邻域相关性,黄片宏块的某种加权可用来代替白片相应宏块。这种错误隐藏机制可以明显提高抗误码性能。实验证明,在CIF图像的视频会议中,在丢包率达10%时,视频失真低到需要训练有素的眼睛才能识别。使用FMO的代价是稍微降低了编码效率(因为它打破了原先非邻居MB之间的预测),而且在高度优化的环境中,有较高的时延。
3. 数据分割
通常情况下,一个宏块的数据是存放在一起而组成片的,数据划分使得一个片中的宏块数据重新组合,把宏块语义相关的数据组成一个划分,由划分来组装片。H.264视频编码标准使用了三种不同类型的数据分割。
(1)A型分割
A型分割是头信息划分,包括宏块类型、量化参数和运动矢量,这个信息是最重要的。
(2)B型分割
B型分割是帧内信息划分,包括帧内CBPs和帧内系数。帧内信息可以阻止错误的传播,该型数据分割要求给定分片的A型分割有效,相对于帧间信息,帧内信息能更好地阻止漂移效应,因此它比帧间分割更为重要。
(3)C型分割
C型分割是帧间信息划分,包括帧间CBPs和帧间系数,一般情况下它是编码分片的最大分区。帧间分割是最不重要的,它的使用要求A型分割有效。
当使用数据分割时,源编码器把不同类型的分割安排在3个不同的缓冲器中,同时分片的尺寸必须进行调整以保证小于MTU长度,因此是编码器而不是NAL来实现数据分割。在解码器上,所有分割用于信息重建。这样,如果帧内或帧间信息丢失了,有效的帧头信息仍然能用来提高错误隐藏效率,即有效的宏块类型和运动矢量,保留了宏块的基本特征,从而仍可获得一个相当高的信息重构质量,而仅仅丢失了细节信息。
4. 冗余片方法
H.264中参考图像的选择与以前在H.263中的一样,在基于反馈的系统中,解码器接收到丢失或被破坏的图像信息时,选择参考图像序列中正确的参考宏块,来进行错误恢复;而对于无反馈的系统,H.264提出了冗余分片编码。
冗余分片允许编码器把在同一个码流中添加同一MB的一个或更多冗余表示。需要注意的是这些冗余片的编码参数与非冗余片的编码参数不同,例如主片可用低QP(高质量)来编码,而冗余信息中能用一个高QP(低质量)的方式来编码,这样质量粗糙一些但码率更低。解码器在重构时,首先使用主片,如果它可用就抛弃冗余片;而如主片丢失(比如因为包的丢失)冗余片也能被用于重构。冗余片主要用于支持高误码的移动环境。
5. 帧内编码
H.264中帧内编码大体上类似于以往的视频编码标准,但也进行了重要的改进,主要体现在:
(1)H.264中帧内预测宏块的参考宏块可以是帧间编码宏块,帧内预测宏块并不像H.263中的帧内编码一样,而采用预测的帧内编码比非预测的帧内编码有更好的编码效率,但降低了帧内编码的重同步性能,可以通过设置限制帧内预测标记来恢复这一性能。
(2)只包含帧内宏块的片有两种,一种是帧内片(I Slice),一种是立即刷新片(IDR Slice)。立即刷新片需存在于立即刷新图像(IDR Picture)中。与短期参考图像相比,立即刷新图像有更强壮的重同步性能。
为了更适用无线IP网络环境中的应用,H.264通过采用率失真优化编码和设置帧内预测标志,来提高帧内图像的重同步性能
相关文档:《关于H.264视频编码传输的QoS特性分析(一)》
《关于H.264视频编码传输的QoS特性分析(二)》
《关于H.264视频编码传输的QoS特性分析(三)》