APP下载

基于复杂度分析的HEVC帧内码率控制算法

2017-03-01陈伟国金德富李金龙彭宗举

计算机应用与软件 2017年1期
关键词:码率控制算法复杂度

陈伟国 陈 芬 金德富 李金龙 彭宗举

(宁波大学信息科学与工程学院 浙江 宁波 315211)

基于复杂度分析的HEVC帧内码率控制算法

陈伟国 陈 芬 金德富 李金龙 彭宗举

(宁波大学信息科学与工程学院 浙江 宁波 315211)

随着高清、超高清视频应用的快速发展,码率控制的作用越来越重要。在高效视频编码HEVC(High Efficient Video Coding)中,码率控制算法在码率输出的精度和效率上都取得不错的效果,但是算法并没有考虑到实际视频编码内容的复杂度。针对此问题,提出一种基于复杂度的HEVC帧内码率控制算法。首先利用梯度来表征复杂度,根据复杂度来合理分配码率,然后根据产生的实际比特和预分配比特自适应地更新平滑窗口,最后再结合基本单元层的码率控制算法及时调节码率,从而使输出码率尽可能与目标码率相等。实验结果表明,所提出的方法能够使输出码率更加接近目标码率,并且可以进一步提高视频质量。

高效视频编码 码率控制 平滑窗口

0 引 言

随着视频服务的越来越多样化,高清视频应用也不断增长,例如家庭影院、视频会议、网络直播等。这些应用的视频流从标清发展到高清、甚至超高清,人们对视频质量的要求越来越高。然而,未经压缩的高清以及超高清视频数据量巨大,如果不提高视频编码技术的压缩效率,极有可能导致存储空间的浪费或者引起网络传输上视频图像的阻塞和丢包。因此,ITU-T视频编码专家组和ISO/IEC MPEG联合推出了最新的视频编码标准-HEVC[1]。相对于以往的视频编码标准,HEVC的核心目标是针对高分辨率视频图像,并且在H.264/AVC[2]高级档次HP的基础上将压缩效率提高1倍以上。除此之外,传输友好特性、容错性能以及便于并行处理也是其设计的主要目标[3]。

在视频编码的过程中,视频质量与编码码率密切相关。一般来说,编码的码率消耗越多,视频的质量也就越好。在实际应用中,对于窄带或时变信道来说,码率控制是视频质量可靠传输的重要保证。码率控制不仅可以根据信号的状态平滑码率,还能增强视频的质量,所以人们针对HEVC的码率控制模块做了很多的研究,比如现行标准的R-λ模型[4]。R-λ模型把目标码率分配到三个级别,GOP(Group Of Picture)级、图像级和基本单元级。把码率分配到每一个基本单元级,然后计算其编码的量化参数QP(Quantization Parameter),使输出的码率更加接近用户设定的码率。模型在实现码率的合理分配和码率精度上都取得了很好的效果,但是仍然存在不足:在分配码率时,没有考虑视频内容本身的复杂度,也没有考虑视频的时空相关性。所以文献[5]利用帧差法,再结合平均绝对差,把图像分成运动、复杂、平坦三个区域,不同区域分配不同的比特,来改善视频的质量。文献[6]通过实验,寻找编码比特跟纹理复杂度的线性关系,提出了一个更加准确的模型,根据模型分配码率。同时利用复杂度模型来决定初始化的量化参数,最后修正量化参数的范围来进一步改善编码性能。文献[7]把图像分为感兴趣区域和非感兴趣区域,对两个区域分别使用感知比特分配方案,提高视频的主观质量。文献[8]为了更好地体现人眼主观视觉特性,利用SSIM来作为图像失真的评价标准,再结合时空域的运动一致性来修正HEVC码率失真判决中的拉格朗日乘子,改善码率失真性能。文献[9]通过计算边缘像素点与所有像素点的比值,再利用比值加权因子表示图像的复杂度,最后利用复杂度分配码率,从而提高码率控制的精度。文献[10]利用帧差来表征是否发生场景变换,对发生场景变换帧,对其码率控制参数和GOP的长度做出及时调整从而调整码率控制的精度,改善编码复杂度。上述算法在基本单元级的码率分配上根据图像的复杂度进行了改进或是将图像分区域编码,但是很少考虑GOP层、帧层的码率分配,所以HEVC码率控制算法还有很大的改进空间,编码性能可以进一步提高。

综上所述,要想使码率控制精确,而且还能提高视频的质量,就必须针对其特点来完善HEVC的码率控制机制。本文提出了一种基于复杂度的帧内码率控制算法。首先,根据帧的复杂度来分配码率,然后通过自适应窗口更新策略来调节码率,使输出码率更加接近目标码率。实验结果表明,该码率控制方法能提高视频的编码质量,同时还能有效降低视频的波动性。

1 HEVC帧内码率控制算法

在HEVC的码率控制算法中,码率控制的主要任务是在目标码率给定的情况下,将目标码率分配到每一个GOP,再分配到每一帧,最后到每一个基本单元,通过三层的比特分配,能够提高码率的利用效率,从而改善视频质量。每一个GOP分配的比特数计算公式为:

(1)

式中,TGOP为当前GOP分配的目标比特,但是对于帧内码率控制,每一个GOP分配的码率就是每一帧分配的码率,并且NGOPsize=1。Tbitleft为编码之后可用的剩余比特,Nleft为剩余未编码帧数,SW为平滑窗口,一般取40,作用是平滑编码帧的比特输出,Taverpic为每个编码帧平均分配的比特,通过式(2)计算得到:

(2)

式中,f为编码序列的帧率,Tt是序列级的目标码率,由用户根据实际网络带宽的情况设定。

从式(1)和式(2)可以看到,帧内码率分配并没有考虑图像内容的复杂度。场景简单时,只需要较少的比特,就能达到较好的编码质量,反之则需要更多的码率。然而在式(2)中只是按照平均分配原理来分配码率,所以分配的比特跟实际相差较大,极有可能导致视频编码的质量变差,尤其是当码率比较小的时候,如果码率利用不充分,对视频质量的影响更大。

2 基于复杂度分析的HEVC码率控制算法

2.1 算法优化

在当前码率控制算法中,已有一部分算法考虑到了图像内容的复杂度。相比于原始的算法,这种策略可以让比特得到更加充分的利用,但是很多帧内码率控制算法是在基本单元层作出改进,在帧层做出改进的算法还不多。因此本文在帧层比特分配时考虑编码图像内容的复杂度,根据图像内容的复杂度对比特分配算法进行优化。

图像内容的复杂度有多种衡量方法,文献[11]认为梯度计算方法比较简单,也能较准确表现图像内容的复杂程度,适合描述静止图像的复杂度。并且人们倾向于用边缘来描述的纹理复杂度,而边缘地区的相邻亮度像素值通常相差比较大,所以用梯度来衡量复杂度比较合适。因此本文采用梯度来描述图像的复杂度。梯度的计算公式为:

(3)

式中,H、W分别表示当前帧的高和宽。Ii,j表示编码帧点(i,j)位置的亮度分量像素值。Ck为第k帧的复杂度。

为了进一步验证梯度跟编码比特之间是否存在线性关系,在不同的量化参数下编码了复杂度互不相同的测试序列,每个序列编码100帧。

本文还利用R2来衡量线性拟合的程度。R2定义为:

(4)

式中,Xi和Xi-e分别表示在i点上的实际值和通过线性拟合出的估计值,Xi-m表示所有点的均值,R2越接近1,说明拟合程度越好,线性关系越强,模型就越准确。

(a) BlowingBubbles QP=27

(b) BlowingBubbles QP=32

(c) RaceHorsesC QP=27

(d) RaceHorsesC QP=32

图1是上述实验的结果,描述了RaceHorsesC、BlowingBubbles序列的复杂度和码率的关系,横坐标表示复杂度,纵坐标表示码率,x表示线性拟合之后的复杂度的大小,y为拟合之后复杂度为x产生的码率。序列在QP为27和32的情况下进行编码。通过线性拟合,可以在图1中看到,R2都约等于1,线性拟合程度比较好。所以编码比特跟图像梯度之间存在近似的线性关系,并且复杂度越大,编码的比特就越多。从图1(a)和(b)这两个图中,可以看出对于同一序列用不同的QP进行编码时,码率跟梯度的线性关系依然存在,只是斜率略有变化。当QP=27时,斜率为0.0715,当QP=32时,斜率为0.0381。从图1(a)和(c)这两个图中可以看到,即使是不同序列,复杂度跟编码比特依然有非常好的线性关系。因此,本文在比特分配过程中采用图像的梯度进行指导。对梯度越大即纹理越复杂的帧,将会被分配更多的比特进行编码以保证编码质量,而对梯度较小即纹理简单的帧,只需要分配较少的比特。这种策略使得比特分配更加合理,减少了比特的浪费。综上分析,式(2)改进为:

(5)

(6)

式中,Ck表示当前帧的图像复杂度,由式(3)得到。CtotalG表示编码帧总的复杂度,通过式(6)计算得到,M表示要编码的帧数。

HEVC码率控制的过程是根据预分配的比特利用R-λ模型计算相应的量化参数以及拉格朗日乘子。量化参数以及拉格朗日乘子在一定程度上影响编码过程中的模式选取等过程,这些过程间接地影响实际的编码比特。由于上述原因,实际产生的比特和预分配的比特会存在一些偏差。为了使实际的编码比特更加地接近预分配的比特,本文利用平滑窗口对比特分配进行调节。其基本策略是根据前一帧的码率情况反馈调节当前帧的码率。因此,最终的比特分配策略为:

(7)

式中,ASWcurr为自适应平滑窗口,在窗口更新策略中会进一步的介绍。

2.2 窗口更新策略

在比特分配策略中,平滑窗口对比特分配具有较大的影响,窗口的大小直接影响每一帧的预分配比特。在R-λ码率控制模型中,平滑窗口是固定值,这种策略不能根据实际编码情况进行实时地反馈调节。另外,相邻两帧之间梯度变化不大,可以根据上一帧的梯度来预测当前帧的梯度,然后利用梯度跟码率的线性关系得到码率。当前一帧预先分配较多的比特,而实际消耗比特较少时,说明预分配比特过多。下一帧需要适当减少预先分配的比特。根据以上分析,本文定义自适应平滑窗口ASW,使得ASW自适应地随着上一帧实际产生的码率和预分配码率差变化,如果前一帧预分配码率多,实际产生的码率少,ASW就会根据码率差自适应变大,从而使当前帧分配的码率减少。如果前一帧预分配码率少,实际产生的码率多,ASW就会根据码率差自适应变小,从而增加当前帧分配的码率。ASW大小的计算式为:

(8)

式中,Test表示前一帧预先估计的码率,Tact表示前一帧实际产生的码率,ASWf-1表示前一帧的更新窗口。由式(8)可以看到当Test大于Tact时,当前帧的ASW自适应变大,从而使得当前帧预分配的码率减少,当Test小于Tact时,当前帧的ASW自适应变小,从而使得当前预分配的码率增加。考虑到如果上一帧的码率偏差很大,相应ASW会变化很大,反而影响当前帧的码率分配,根据实验测试,把ASW限定在[32,48]范围内比较合适,如果超过这个范围,就自动把这一帧的ASW设为40。

3 实验结果及其分析

为了客观准确地验证算法有效性,所有的实验都是在HM11.0平台下进行,实验中所有序列都采用全I帧编码,编码帧数为100帧。为了验证算法具有普适性,实验在同一目标码率下,采用4∶2∶0格式的不同分辨率序列:RaceHorses、BQMall、BasketballPass、BQSquare、RaceHorsesC、BlowingBubbles、BasketballDrill、PartyScene、Johnny进行测试,其中BQMall、PartyScene纹理较复杂,BasketballPass、BQSquare纹理比较平坦。最后将本算法与Li等人的算法[12]对比。

为了更加清楚地比较这两种码率控制算法的性能,首先定义码率偏差Rdev为:

(9)

式中,Rtarget为目标码率,Ractual为实际产生的码率。Rdev越小表示码率偏差越小,实际产生的码率更加接近目标码率。然后再定义GPSNR为本文算法相比于Li算法PSNR的变化情况,“+”表示本文算法高于Li的算法。

GPSNR=ProPSNR-LiPSNR

(10)

式中,ProPSNR表示利用本文算法得到的序列PSNR,LiPSNR表示利用Li算法得到的序列PSNR。

表1、表2分别给出了测试序列Racehorses、Johnny、BQMall、BasketballPass、BQSquare、RaceHorsesC、BlowingBubbles、BasketballDrill、PartyScene在各个码率下,Li算法与本文算法的PSNR增益和输出码率情况。

表1 本文算法与Li算法的码率比较

续表1

表2 本文算法与Li算法的PSNR比较

从表1、表2的实验结果可知,本文算法能更好地根据图像的复杂度来分配每一帧的码率,本文实际输出码率更加接近目标码率,码率偏差相比于Li算法更小,而且PSNR有所增加。如BQSquare序列在1500 kbps时PSNR增加0.12 dB,实际产生的码率更加接近目标码率,BasketballDrill序列在900 kbps时PSNR增加0.08 dB,且码率正好等于目标码率。Racehorses序列在900 kbps时PSNR增加0.12 dB,码率偏差比Li的更低。总的来说,本文算法的PSNR在Li的基础上平均增加0.08 dB,码率偏差更小。这是因为,一方面在帧层码率分配的时候,考虑了图像的复杂度,复杂度高的帧分配更多的码率,使得码率分配更加合理。另一方面是利用ASW实现了码率反馈,当前一帧码率预分配过少,而实际消耗过多时,ASW根据码率差自适应调节,使得当前帧预分配的码率跟实际消耗的码率差距减小,从而提高序列的PSNR。但是比如PartyScene,PSNR只提高了0.05 dB,提升不是很明显,BQMall的PSNR相对来说提高也有限。原因在于,这两个序列的纹理复杂度较高,ASW的变化大,一旦超过ASW的限定范围,ASW就自动回归到原始值40,所以PSNR提升有限。

表3给出了测试序列RaceHorses、Johnny、BQMall、BasketballPass、BQSquare、RaceHorsesC、BlowingBubbles、BasketballDrill、PartyScene相比于Li算法的率失真性能变化情况,“-”表示本文算法优于Li算法。从表3的结果可知,本文算法的率失真性能在Li的基础上有所提高,如RaceHorseC序列率失真性能增加了2.4%,BQSquare序列率失真性能相比于Li的算法增加了2.3%, BlowingBubbles序列率失真性能增加了2.9%。总的来说,各个序列的率失真性能在Li的基础上平均增加2.3%。这是因为,一方面利用复杂度来分配码率,充分提高码率的利用效率,从而提高PSNR,可以增加率失真性能,另一方面在ASW自适应变化过程中,每一帧分配的码率跟实际需要的码率偏差更小,可以更好地利用码率,提高率失真性能。

表3 本文算法与Li算法的BDBR比较

续表3

图2是BQSquare序列和RaceHorseC序列的率失真性能曲线图,横坐标表示编码产生的比特,纵坐标表示PSNR。从图2我们可以清楚地看出两种算法的率失真性能变化情况,由图2可知,在本文算法下,RaceHorseC序列和BQSquare序列的率失真性能比Li的要好。图3给出了不同分辨率序列BasketballPass、BQMall在本算法与平台算法下的码率波动性比较,横坐标表示编码的帧数,纵坐标表示编码每一帧产生的比特。从图3中可以看出序列BasketballPass、BQMall的码率相比于Li的算法,在提高PSNR的前提下,整体码率波动性更好。本算法相比于Li的算法在BasketballPass序列的前30帧码率波动明显减小,BQMall除了第31帧外,码率波动性都比Li的更好。主要是根据复杂度分配码率和ASW根据码率偏差自适应变化的原因,实际产生的码率跟分配的码率偏差更小,码率分配更加准确,从而提高码率的利用效率,进一步改善编码性能。

(a) RaceHorseC

(b) BQSquare

(a) BasketballPass

(b) BQMall

4 结 语

本文根据视频内容的复杂度自适应分配目标比特,分别从帧层和参数更新模块进行了优化。在帧层,利用梯度作为每一帧的复杂度来自适应分配比特,复杂度高的帧分配更多的比特,从而改善视频的质量。另外,提出了一个自适应参数更新的方法,通过前一帧的预分配比特和实际产生比特的差值来更新当前帧的平滑窗口。实验结果表明,本方法编码后的视频质量比Li的要好,实际产生的码率比Li的算法更加接近目标码率。

[1] Sullivan G J, Ohm J R, Han W J, et al. Overview of the High Efficiency Video Coding (HEVC) Standard[J].IEEE Transactions on Circuits and Systems for Video Technology,2012,22(12):1649-1668.

[2] Schwarz H, Marpe D, Wiegand T. Overview of the scalable video coding extension of the H.264/AVC standard[C]//IEEE Transactions on Circuits and Systems for Video Technology,2007,17(9):1103-1120.

[3] 马思伟. 新一代高效视频编码标准HEVC的技术架构[J].中国多媒体通信,2013(7):20-21.

[4] Wen J, Fang M, Tang M, et al. R-λ model based improved rate control for HEVC with pre-encoding[C]//Data Compression Conference, 2015:53-62.

[5] Zhou M, Hu H M, Zhang Y. Region-based intra frame rate control scheme for High Efficiency Video Coding[C]//Asia-Pacific Signal and Information Processing Association, 2014 Annual Summit and Conference (APSIPA ), IEEE,2014:1-4.

[6] Sun H, Gao S, Zhang C. Adaptive bit allocation scheme for rate control in High Efficiency Video Coding with initial quantization parameter determination[J]. Signal Processing: Image Communication, 2014,29(10):1029-1045.

[7] Deng X, Xu M, Wang Z. A ROI-based bit allocation scheme for HEVC towards perceptual conversational video coding[C]//Advanced Computational Intelligence (ICACI), 2013 Sixth International Conference on. IEEE,2013:206-211.

[8] 邸金红, 王春彦, 祁跻, 等. 基于结构相似度的HEVC感知SBAC-RDO算法[J].计算机应用与软件,2015,32(6):212-215,227.

[9] Sun L, Au O C, Dai W, et al. An adaptive frame complexity based rate quantization model for intra frame rate control of High Efficiency Video Coding (HEVC)[C]//Asia-Pacific Signal and Information Processing Association, 2012 Annual Summit and Conference (APSIPA), IEEE, 2012:1-6.

[10] 胡乾乾, 沈礼权, 赵振军. 基于场景切换的HEVC码率控制算法[J].电视技术,2015,39(5):1-3,25.

[11] Jing X, Chau L P, Siu W C. Frame complexity based rate quantization model for H.264/AVC intra frame rate control[J]. IEEE Signal Processing Letters, 2008,15:373-376.

[12] Li B, Li H, Li L, et al. λ Domain Rate Control Algorithm for High Efficiency Video Coding[J].IEEE Transactions on Image Processing,2014,23(9):3841-3854.

INTRA RATE CONTROL ALGORITHM BASED ON COMPLEXITY ANALYSIS FOR HEVC

Chen Weiguo Chen Fen Jin Defu Li Jinlong Peng Zongju

(FacultyofInformationScienceandEngineering,NingboUniversity,Ningbo315211,Zhejiang,China)

With the rapid development of high-fidelity video, rate control plays a more and more important role in its applications. Rate control algorithm has achieved great performance on the rate of the output precision and coding efficiency in HEVC. However, rate control algorithm does not put the complexity of the actual content of video coding into consideration. Aiming at this problem, a rate control algorithm based on complexity analysis is proposed. First, the bit rate of frame layer is allocated according to the complexity which is represented by gradient. Then, the actual bits and pre-allocated bits are utilized to adaptively update the smooth window. Finally, combining with basic unit layer rate control algorithm, the bit rate is adjusted to make the output bit rate approaches the target bit rate. Experiment result shows that the method can not only maintain the output bit rate more accurate, but also improve the coding quality.

HEVC Rate control Smooth window

2015-12-16。浙江省自然科学基金项目(Y16F0100 10);宁波市自然科学基金项目(2015A610127,2015A610124)。陈伟国,硕士生,主研领域:三维视频信号处理与编码。陈芬,副教授。金德富,硕士生。李金龙,硕士生。彭宗举,副教授。

TP3

A

10.3969/j.issn.1000-386x.2017.01.026

猜你喜欢

码率控制算法复杂度
移动视频源m3u8多码率节目源终端自动适配技术
一种基于HEVC 和AVC 改进的码率控制算法
一种低复杂度的惯性/GNSS矢量深组合方法
基于状态机的视频码率自适应算法
基于ARM+FPGA的模块化同步控制算法研究
高精度位置跟踪自适应增益调度滑模控制算法
求图上广探树的时间复杂度
某雷达导51 头中心控制软件圈复杂度分析与改进
出口技术复杂度研究回顾与评述
基于航迹差和航向差的航迹自动控制算法