许晓中,毛 振,郑萧桢,郑建桦,梅顺良
(1.清华大学 电子工程系,北京 100084;2.海思半导体有限公司,广东 深圳 518129)
视频传输是一个重要的研究领域[1],在现有视频编码标准的编码层中,图像层和宏块层之间引入了条带这一高层语法。条带的引入打断了帧内预测机制,起到重同步的作用,因而增强了抗误码能力。另外,可以通过调整条带编码长度大小,使得条带数据包长度适应不同的信道最大传输单元 (Maximum Transmission Unit,MTU)大小的限制,有利于在系统层实现有效的抗误码策略。
H.264/AVC[2]中,一个条带由按光栅扫描顺序的若干连续宏块组成,宏块的数目不受限制,即一个条带可以只包含一个宏块或者包含整个图像的所有宏块。条带的编码长度可以灵活地做调整。另外,H.264/AVC还采用了条带组技术[3],图像中的每个宏块按照宏块配置图固定地分配给一个条带组,也就是说条带组可由图像中任意位置的若干宏块组成。这一技术的主要作用是在易发生误码的环境中有利于解码端实现有效的错误隐藏来提高重建图像主观质量,另一方面可以实现基于区域的编码,并对关键区域实施特别的抗误码措施以增强关键区域的抗误码能力。但是,为了实现条带组技术,需要在码流中传送图像中每个宏块所属条带组的标识信息,即宏块配置图,增加了编码的比特开销。
如图1所示,相比H.264/AVC中以连续宏块为单位的条带结构,AVS中的条带结构必须以连续宏块行为单位,同一图像内不同条带之间编码时不能相互参考[4]。这就造成将条带编码数据打成RTP包进行网络传输时,包长不能灵活适应信道MTU大小。当包长超过MTU大小时,需在底层进行包分割。而这种与视频编码层隔离的底层分割自然不可能以视频编码层的语法语义为基础来进行,只能以分割后的目标包长小于MTU大小为依据,因此无法保证分割位置在字节对齐处,更不用谈宏块对齐。如果分割不能保证在字节对齐处,则需要在分割位置前的一个包的末尾以及分割位置后的一个包的开始分别填充比特以保证比特对齐,为了保证填充比特不影响解码器解码,还需要在分割后的包头信息中提示如何填充比特的负载头信息(Payload Header)。另外,AVS中也无类似H.264/AVC中的条带组技术,不能实现基于区域的编码,进而实现基于关键区域的单独打包及抗丢包技术以确保关键区域具有良好的容错性。
基于以上分析可以看到:AVS中的条带结构在抗误码功能上与H.264/AVC还存在一定差距。因此,笔者通过完善AVS中的条带高层语法,提出了灵活条带集技术,很好地解决了以上问题。
图1 AVS条带结构示意图
条带集作为一个新的编码层被引入到图像层和条带层之间,是图像中条带集索引值相同的所有条带的集合。一般将若干具有共同属性的条带划分为一个条带集,这些共同属性可以为:空间分辨力、图像区域内容、图像的编码质量等。条带集划分的具体方法由编码系统决定,解码系统根据条带头信息获知条带集的划分方法。
这里的条带结构以宏块为单位,即AVS中以宏块行为单位的条带定义扩展成了按光栅扫描顺序连续的若干宏块,条带内的宏块不应重叠,条带之间也不应重叠,条带内的宏块解码处理不能使用本图像内其他条带的数据。但是如果图像中存在条带集,条带内宏块的解码处理可使用本条带集其他条带的数据,但是不能使用本图像其他条带集的数据。如果隔行图像的两场数据依次出现,这两场数据应属于不同的条带和条带集。
条带集结构示例如图 2所示, 图中A,C,D,E,F,G,J,K等条带分别组成不同的条带集;B0,B1,B2条带组成一个条带集;H0,H1组成一个条带集。
图2 条带集结构示
当使用条带集技术时,条带层头需要添加的主要信息如下:
1)条带垂直位置slice_vertical_position,给出条带的第1个宏块在图像中的垂直位置,以宏块为单位。
2)条带水平位置slice_horizontal_position,给出条带的第1个宏块在图像中的水平位置,以宏块为单位。
3)条带集索引slice_set_index,给出当前条带的条带集索引值。图像中条带集索引值相同的条带组成1个条带集。
4)条带头信息标志slice_header_flag,值为“1”表示条带 比 特 流 中 应 包 含 fixed_slice_qp,slice_qp,slice_weighting_flag,luma_scale,luma_shift,ch roma_scale ,chroma_shift和mb_weighting_flag,值为“0”表示条带比特流不应包含上述语法元素。SliceHeaderFlag的值等于slice_header_flag的值。如果比特流中没有slice_header_flag,则Slice-HeaderFlag的值应为“1”。条带集中条带的上述语法元素的值应一致。如果当前条带中不包含上述语法元素,当前条带应使用所在条带集其他条带中上述语法元素的值。
5)条带集结束标志 end_of_slice_set_flag,值为“1”,表示当前条带是所在条带集的最后一个条带;值为“0”,表示当前条带不是所在条带集的最后一个条带。
在灵活条带集的基础上,可以引入新的语法元素及编码技术实现更多的编码功能,如可实现多分辨力编码、分区域独立解码及显示、视频水印、增强网络抗误码等功能。本文重点分析基于区域的抗误码和基于区域的变质量编码。
考虑到条带集技术的特点,可以适当改进码流打包和传输的过程以获得更强的抗误码性能,即可在打包过程中将同属一个条带集的多个条带编码码流组合在一起,实现以条带集为单位的打包,并可对不同的条带集采取不同强度的抗误码措施。典型的应用场景比如,某个条带集所在区域是一关注区域,可通过对该条带集实施更强的抗误码策略,如更强的包级RS信道编码等,保证该关键区域能够获得更好的重建质量,从而实现基于区域的抗误码功能。
灵活条带集技术的使用,可方便对视频图像进行区域划分,进行基于区域的编码,且可支持用户重点调整关注区域的编码质量以实现在同等码率下用户关注区域的主客观质量的明显提升,给用户带来更佳的视频感受。
下面对一些典型的视频序列使用条带集技术进行编码,在同等码率下关注区域均得到了0.6~1.4 dB的编码增益。 选择了视频序列 news(704×480,隔行),lions(704×480,逐行)进行实验,区域划分及实验结果如下:
1)news序列共划分了3个关注区域,图像示例见图3,区域信息及其所属条带集和slice_qp信息见表1。anchor数据不划分条带集和条带,使用的QP为28。序列编码了28帧,对整个图像而言,anchor和使用条带集技术的码率分别为1 685.56 Kbit/s和1 640.62 Kbit/s。统计关注区域的YPSNR值,结果见表2。
图3 news序列关注区域示意图
表1 news序列条带集划分
表2 news序列关注区域编码效率 dB
2)截取了lions第45~75帧内容进行编码,图像示例见图4。第1个码帧的区域划分信息及其所属条带集和slice_qp信息见表3。此视频中共有2个关注区域,根据视频内容进行动态划分,这里仅给出第1帧的划分信息。anchor数据不划分条带集和条带,使用的QP为32。序列编码了28帧,对整个图像而言,anchor和使用条带集技术的码率分别为1 200.19 Kbit/s和1 209.83 Kbit/s。关注区域的YPSNR值,结果见表4。
图4 lions序列关注区域示意图
表3 lions序列条带集划分
表4 lions序列关注区域编码效率 dB
提出了灵活条带集技术,介绍了灵活条带集技术的比特流语法、划分方式、码流结构、打包方式以及对现有编码框架中其他技术的影响,并通过实验演示了灵活条带集技术可以带来的功能性好处。
本文的创新在于:1)在图像层和条带层之间创新性地引入了条带集层,提出了灵活条带集技术。通过在条带头语法参数集中引入新的语法元素,在与目前AVS语法完全兼容的基础上将现有条带结构从以宏块行为单位扩展为以宏块为单位,并将具有相同slice_set_index参数的条带组成一个条带集;2)设置条带集内各条带编码时可互相参考,减小了划分条带对编码效率的影响;3)通过slice_header_flag参数的设置支持条带集内各条带共用一套条带层语法参数集,节省了条带头开销;4)采用灵活条带集技术,可通过对一个条带集中所有条带整体打包并在系统层实施非均衡抗误码策略以确保条带集表示的关键区域具有良好的容错性;5)采用灵活条带集技术,还可实现基于区域的不同质量编码。可方便地通过调整条带的量化参数(slice_qp)使得在总码流相当的情况下重建图像的关注区域主客观质量得到明显的提升。目前,所提灵活条带集技术被AVS工作组接收进入标准的伸展档次(面向监控需求)。
[1]HANNUKSELA M M,WANG Y K,HOROWITZ M.Enhancements to FMO[EB/OL].[2009-08-08].http://wftp3.itu.int/av-arch/jvt-site/2002_07_Klagenfurt/JVT-D095.doc.
[2]GB/T 20090.2-2006,信息技术:先进音视频编码 第2部分:视频[S].2006.
[3]ITU-TRecommendationH.264-ISO/IEC14496-10,Advancedvideo coding for generic audiovisual services[S].2003.
[4]余华,曹维娜,赵力.信源信道联合编码技术用于AVS传输的研究[J].电视技术,2007,31(8):9-10.