一种基于分层B帧架构的高效比特分配算法
2012-06-06姜益中沈礼权王向前张兆杨
姜益中,沈礼权,2,王向前,张兆杨,2
(1.上海大学 通信与信息工程学院,上海 200072;2.新型显示技术及应用集成教育部重点实验室,上海 200072)
码率控制是无线传输和互联网视频流的一项重要技术。它不仅可以调整视频编码器的输出码流以适用于信道带宽和缓冲器等传输限制,而且对传输视频的主客观质量和视觉平滑度也有着直接的影响[1-2]。在 H.264/AVC中,量化步长QP既应用于码率控制又应用于率失真优化,大大提高了视频序列的压缩效率,但也产生了众所周知的蛋鸡悖论[3],这导致了传统的码率控制算法无法直接应用在H.264中。Li Z.等人基于MAD(绝对误差均值)线性预测模型,在提案JVT-G012中提出了一种经典的码率控制算法[3]。该算法在IPPP和IBBP等大部分比特数分配于P帧的视频序列中表现出了良好的控制力,并被JVT采纳应用于JM(Joint Model)平台。
随着H.264/AVC的日益发展,特别是其扩展部分SVC(Scalable Video Coding)中时域分层架构体现出越来越高的编码效率,基于分层B帧架构的视频编码技术引起了越来越广泛的关注和应用[4]。然而基于JVT-G012的编码器却没有准确预测B帧产生的比特数,更没有提出一种对分层B帧有效的码率控制算法。因此国内外众多专家针对分层B帧的时域分级特性做了大量研究,并提出了一些现今较为流行的码率控制算法。为解决时域分级层之间相互依赖的问题,Cho等人提出了一种新型的量化步长树形选择结构模型(Q-selection tree solution framework),并通过这种模型来预测当前帧的最佳量化步长值[5]。Xu等人利用可伸缩视频编码的分层特性,为各时域层分配权重比率,并以此为各时域层分配比特数[6]。这些方法都在一定程度上提高了整个视频序列的平均PSNR。此外,Liu等人在JVT-G012的基础上引入了一种基于分层B帧结构的固定层级权重因子码率控制算法[7],也使得整个视频序列的平均PSNR取得了较大提高。加入部分的算法主要通过两步来实现对各个B帧的比特分配。第一步根据当前帧编码前的缓冲区水平、缓冲区目标水平、帧率和可利用的带宽来预测出当前帧的缓冲区目标比特。第二步根据当前帧编码前的剩余比特数和当前帧所在层的权重因子计算给予当前帧的比特预算。这种固定时域层权重的算法依赖于固定的权重因子,体现各层级间的依赖关系,但却忽视了视频序列的多样性和复杂性。当视频序列中的各帧图像运动平滑时,高质量的低时域层图像能够为高时域层图像提供高效的运动估计和运动补偿,因此处于高层的各帧图像只需要极少量的比特数就能够取得高效的编码质量。然而当视频序列中相邻各帧间的图像运动剧烈时候,高时域层的图像无法通过低时域层图像得到精确的运动估计和运动补偿,所以也需要相对较多的比特数才能取得较好的编码效果。固定的时域层权重因子显然不可能实现这样的比特分配调节。
本文提出的码率控制算法在传统码率控制的GoP层码率控制和帧层码率控制之间插入了一种分级层码率控制算法。该算法根据各时域层自适应调节的权重因子为同一个GoP中的各个时域层分配目标比特。同时依据各帧的复杂度特性,为同一时域层中的各帧分配不同的目标比特。
1 分层B帧编码架构
分层B帧编码架构的引入使得H.264/SVC在帧层的编码灵活度上得到了巨大提高。相比于传统的IBBP编码结构,分层B帧大大地提高了编码效率,但同时也为传统的码率控制带来了两个难题。首先,编码顺序和显示顺序之间的关系彻底被打乱了,任何一帧都有可能作为参考帧存在。其次,在比特分配时必须考虑各时域层之间相互的依赖性。当前帧所在时域层的权重值将会极大地影响分配给当前帧的目标比特数。
典型的分层B帧编码架构如图1所示。
图1 分层B帧编码架构
图1所示的分层B帧架构包含1个基本层(I0/P0)和3个分级层(B1,B2,B3),GoP长度为8。在一个GoP中除了一个关键帧之外,其余图像都采用B帧编码。由于B帧图像的编码质量在很大程度上取决于其参考帧的编码质量,因此在这样的经典架构下,不同时域层有着不同的重要性。时域层越低,对编码性能的贡献越大,随着时域层的增高,时间分辨率不断增加,但是编码图像对整个编码性能的贡献越小[8]。由此可见,只有低级时域层的视频图像取得了较高的编码质量才能有效地提高整个视频序列的平均编码质量。
2 分层B帧码率控制算法
2.1 分级层码率控制
与以上提到的一系列针对分层B帧的码率控制算法相比,本文提出的码率控制算法能够更为精确地控制输出码率。正如前文的分析,文献[7]提出的固定时域权重值的分层B帧码率控制算法虽然以大量的实验经验为基础,且在大部分序列中均能取得较好的编码质量,但却不能适用于所有的视频序列。根据各时域层不同的编码情况,本文提出了一种自适应调节权重因子的码率控制策略。
分级层码率控制的主要目标是依据当前GoP中各时域层消耗的比特数,更新原本的时域层权重因子,以预测下一个GoP中对应的时域层分配的目标比特。每一层的目标比特数的计算公式为
式中:ωi和Nr,i分别代表了第i层的权重因子和剩余的未编码帧数;RG,r表示分配给当前GoP的剩余比特数。
第k层权重因子的更新由前一个GoP信息预测得到,如下式所示
式中:Nk和Rf,i分别表示第k层的图像帧总数和该层的第i帧编码生成的纹理信息比特数。对于编码视频序列的第一个GoP,则根据预先设置的初始值为各时域层分配比特数,具体各时域层的权重初始值如表1所示。
表1 分级时域层初始权重值[9]
分级层码率控制中每个时域层的初始QP计算公式与GoP层码率控制极为相似,QPst将根据可用信道带宽和分级层的长度等信息作出自适应调整
式中:Nlevel表示当前时域层中的图像帧总数,SumQP表示比当前时域层低一级的时域层中已编码各帧的量化步长值总数。
2.2 同一时域层中B帧的目标比特分配
同一时域层中的各个B帧具有不同的复杂度。但文献[6]中提出的固定权重值的码率控制算法并没有将这种复杂度差异考虑在内,而为它们分配相同的权重度。显然忽略这种复杂度差异将导致编码效率和编码质量下降。在本文中提出的码率控制算法将采用纹理信息编码生成的比特数和编码质量PSNR来预测该帧的复杂度信息。然而,类似于H.264/AVC码率控制中遇到的蛋鸡悖论,一帧图像的实际生成比特数和编码质量PSNR在该帧编码完成之前是不可能准确得到的。因此,只能通过当前帧的参考帧复杂度信息来预测当前帧的编码复杂度Cp
式中:Cf,1、Rf,1、PSNRf,1和 Cf,2、Rf,2、PSNRf,2分别代表前向和后向预测帧的复杂度、实际消耗比特数和编码质量PSNR。根据预测得到的编码复杂度计算出当前帧的目标比特
式中:Nr,l和Rr,l分别表示第l层中的剩余图像帧数和目标比特数。
基于JVT-G012中提出的线性跟踪理论,缓冲器水平的目标比特数Tb可以通过目标缓冲区水平Bt、帧率f、可用信道带宽W和实际的缓冲区水平Bc计算得到
式中:γ是一个常量,在实验中依据经验设置为0.25[3]。最终,当前帧的目标比特由Tf和Tb加权计算得到
式中:常量 β 的值在实验中设为 0.9[3]。
需要注意的是,基于经典的二项式R-Q模型,视频序列中的任意一个B帧都能够通过式(7)计算得到的目标比特,来得到对应的量化步长QP。但是如果当前帧是时域分级层的第一帧,通过分级层码率控制,当前帧将会得到另外一个QP值。前一个QP体现了当前帧的编码复杂度,而后一个QP依据的是它所在层的权重因子。当遇到上述情况时,本文提出的码率控制算法在实验中采用了取均值的方法。
3 实验结果与分析
在实验参数设置方面,GoP的长度为8,在水平方向和竖直方向上均采用1/4亚像素搜索,搜索范围为32。另外,采用TZSearch的快速搜索方式。为了客观准确地评估本文提出的码率控制算法,仿真环境采用了JSVM 9.12软件参考平台[10]。文中给出了QCIF格式的Akiyo、Foreman和CIF格式的News、Mobile共4个标准序列。这4个视频序列具有广泛的代表意义。其中Akiyo和New序列运动平滑,主要由静止或相对稳定的区域组成。Foreman和Mobile序列运动剧烈,图像复杂度高,这些特性与前一组视频序列恰好相反。
表2列出了该算法与Liu等人所提出算法[6]的比较结果。表2给出了目标码率、实际码率、码率控制误差Δ、峰值信噪比PSNR与两种算法间的PSNR差值等指标。其中码率控制误差Δ的定义为
式中:Ractual和Rtarget分别表示实际码率和目标码率。根据表2给出的数据,该算法在各种视频序列中均表现出了高于文献[6]中算法的编码效率。尤其在PSNR的表现上,由于本文提出的码率控制策略中加入了分级层码率控制,使得编码质量无论在低码率还是高码率的视频序列中都得到了显著提高。虽然在目标比特为256 kbit/s时的Foreman序列编码中,该算法只提高了0.1 dB,但却大大节省了编码比特数的消耗。而在目标比特为1 200 kbit/s时的Mobile序列编码中,该算法高出了0.41 dB。在码率控制误差方面,该算法与文献[6]中的算法表现相近,基本都将误差范围控制在目标码率的1%以内。
表2 实验结果
图2~5分别给出了这4个视频序列的Bit-PSNR曲线图。从图中曲线可知,相比于Liu等人提出的算法,本文的码率控制算法将整个视频序列的平均PSNR提高了0.1 ~0.4 dB。
4 总结
本文提出了一种分级层码率控制算法,该算法基于前一个GoP中各时域层实际产生的比特数,自适应调节当前GoP中各时域层的权重因子,为各时域层分配更合理的目标比特。此外,码率控制算法还引入了一种针对同一时域层中各帧复杂度差异的比特分配模型。实验结果表明,该算法不仅能精确地控制输出码率,还能明显提高整个视频序列的编码效率。
图5 Mobile的Bit-PSNR曲线图
[1] DING Wei,LIU B.Rate control of MPEG video coding and recording by rate-quantization modeling[J].IEEE Trans.Circuits Syst.Video Technol,1996,6(1):12-20.
[2] RIBAS-CORBERA J,LEI S.Rate control in DCT video coding for lowdelay communications[J].IEEE Trans.Circuits Syst.Video Technol,1999,9(1):172-185.
[3] LI Z,PAN F,PANG K.Adaptive basic unit layer rate control for JVT:Doc.JVT-G012[R].[S.l.]:JVT,2003.
[4]徐龙,高文,季向阳,等.一种面向SVC的码率控制算法[J].计算机学报,2008,31(5):1175-1184.
[5] CHO Y,KUO C,HSIEH M,et al.GoP-based rate control for H.264/SVC with hierarchical B-pictures[C]//Proc.IIHMSP 2007.[S.l.]:IEEE Press,2007:387-390.
[6] XU Long,GAO Wen,JI Xiangyang,et al.Rate control for hierarchical B-picture coding with scaling-factors[C]//Proc.ISCAS 2007.[S.l.]:IEEE Press,2007:49-52.
[7] LIU Y,LI Z,SOH Y.Rate control of H.264/AVC scalable extension[J].IEEE Trans.Circuits Syst.Video Technol,2008,18(1):116-121.
[8]李振刚,安平,严涛,等.面向多视点视频编码的宏块级码率控制[J].应用科学学报,2009,27(5):502-507.
[9] SEO C,KANG J,HAN J,et al.Efficient bit allocation and rate control algorithm for hierarchical video coding[J].IEEE Trans.Circuits Syst.Video Technol,2010,20(9):1210-1223.
[10] VETRO A,PANDIT P,KIMATA H,et al.Joint Multiview Video Model(JMVM):Doc.JVT-X207[R].Geneva:JVT,2007.