一种HEVC码率控制改进算法

2016-09-08 10:31
计算机应用与软件 2016年8期
关键词:码率控制算法亮度

周 建 政

(天格科技(杭州)有限公司 浙江 杭州 310011)



一种HEVC码率控制改进算法

周 建 政

(天格科技(杭州)有限公司浙江 杭州 310011)

HEVC(High Efficiency Video Coding)采用的基于R-λ模型的码率控制算法在控制输出码率的精确和提高编码效率上都取得了良好的效果。然而该算法没有考虑到实际视频编码中场景切换的影响。提出一种新的针对场景切换的码率控制算法。首先结合帧间的亮度差及其变换趋势判断是否发生场景切换,在场景切换发生时对码率控制的参数以及编码结构都做出及时调整。最后实验表明,与HEVC自带的码率控制相比,所提出的码率控制算法能够有效应对视频序列中的场景切换,提高了编码质量,降低了编码复杂度,并且保持精确的输出码率。

码率控制场景切换HEVC编码

0 引 言

随着视频服务多样化的发展以及高清甚至超高清视频的普及,原有的视频编码标准如H.264/MPEG-4 AVC以及越来越力不从心,因此,人们迫切需要一种新的更加高效的视频编码标准。HEVC是 ISO-IEC/MPEG 和 ITU-T /VCEG两大国际标准化组织联合制定的新一代视频编码标准,它沿用了传统视频编码标准的混合视频编码基本框架,但在各个编码模块上都进行了改进和革新。与H.264/AVC相比,在同等应用条件和视频质量下釆用HEVC进行编码的码率要降低将近一半[1,4,5]。

在视频编码的过程中,输出视频质量与使用的码率是密切相关的,编码视频的质量越好,消耗的码率资源也会越多。但是在实际的应用过程中,因为存储空间和传输带宽有限,需要将编码视频的输出码率控制在一定范围内,同时又要尽可能地提高视频质量,这时就应该采取码率控制。码率控制虽然不是视频编码中必须的内容,但是却是视频编码的非常重要组成部分。目前HEVC参考软件HM中采用的是Bin Li等人提出的基于R-λ模型的码率控制算法[2]。其中λ是RDO(Rate Distortion Optimization)过程中的一个重要参数。R-λ模型如下:

λ=α×Rβ

(1)

式中α和β是和编码视频有关的参数,可以随着编码过程不断更新。R是当前编码帧或编码单元的目标比特。在计算得到λ之后,通过下式计算量化参数QP:

QP=4.2005×lnλ+13.7122

(2)

虽然该码率控制算法相比于传统的码率控制可以取得更高的编码效率,却并未考虑到实际应用中场景切换对视频编码和码率控制的影响。场景切换会切断相邻帧之间的时间相关性,若编码器不能及时进行调整,将会导致编码资源浪费,压缩效率降低,同时预测模型参数的有效性也会降低,影响码率控制的准确性。目前,针对场景切换提出了很多码率控制算法。如文献[7]中提出一种低比特率情况下的实时检测场景切换以及进行QP调整的码率控制算法;文献[6]中提出了一种自适应码率控制算法,通过YUV三个分量的变化来检测场景变换,同时GOP长度也进行自适应改变;文献[7]分析了场景切换对编码质量的影响,并利用人眼的时域掩盖特性提出了相应的目标比特数计算方法。

上述算法都是应用于H.264平台。本文提出一种应用于HEVC平台的基于场景切换的码率控制算法。首先通过计算相邻帧的亮度差变换趋势探测场景切换帧,在确定当前帧是场景切换帧后,对编码参数进行及时调整,保持视频平滑性并提高编码质量,同时保持输出码率的准确性。实验表明,该码率控制算法可以有效提高有场景切换视频的编码效率。

1 场景切换检测

场景切换处都伴随着相邻两帧亮度分量的大幅度变化。因此本文使用当前帧与前一帧的亮度差作为场景切换检测的基础,亮度差的计算公式可以表示如下:

(3)

其中,D(n)为当前帧,即第n帧,与前一帧亮度的差值。Yn(i,j)是第n帧(i,j)位置的亮度分量值。M和N是帧的宽度和高度。D(n)不能单独作为场景切换的判断依据,因为没有发生切换的场景中运动的快慢变化也会影响到D(n)的大小。为了消除这种影响,应该将当前帧的亮度变化与前面已编码帧的亮度变化趋势相比较。亮度变化趋势D′(n-1)可以表示如下:

D′(n-1)=0.5×D(n-1)+0.5×D′(n-2)

(4)

设序列的第二帧以及场景切换后一帧的D′都等于D。D′(n-1)的计算不包括上一个场景切换帧及其之前的帧。判断当前帧是否为场景切换帧的依据K(n)的计算为:

(5)

设序列的第一帧,第二帧的K为1。场景切换发生后的几帧内一般不会再发生场景变换,但是此时亮度变换趋势也并不稳定,为防止此时发生误判,设场景变换后的4帧的K都等于1。我们截取了6个分辨率为832 480的测试序列,分别是35帧Keiba, 38帧Flowervase, 40帧PartyScene, 41帧BQMall, 37帧BasketballDrill, 33帧RaceHorse合成了一个有5处场景切换的序列。图1给出这个序列各帧K值的变化曲线。

图1 合成序列中各帧K值的变换曲线

从图1中可以看出在场景切换处K值都发生了剧烈的变化。因此若当前帧的K(n)满足以下条件,我们就判定该帧为场景切换帧:

K(n)>th

(6)

式中,th为设置的阈值。我们通过大量的实验经验将th取值2.5,实验没有出现漏检和误检的情况。

2 场景切换的码率控制

本文的算法在编码每一帧前都会先使用上述场景切换检测算法判断当前帧是否是场景切换帧。如果没有发生场景切换,码率控制采用文献[2]中的方法。如果检测到当前帧是场景切换帧,那么码率控制策略将发生如下改变:

1) 将码率控制模型中使用的参数,即和,置换成初始值。场景切换发生时,前后帧之间的时间相关性被切断。因为码率控制中的模型参数是从前面已编码帧预测得来,而此时图像的属性已发生突变,模型参数失去有效性从而导致码率控制的不准确,同时因为参数更新是一个缓变的过程,如不及时调整还会影响到后续多帧的码率控制准确性。

2) 由于前后帧已不具备时间相关性,如果后续帧依然将切换前的帧作为参考帧,就会浪费大量的编码资源。所以在本文算法中,当前GOP提前结束,并将当前场景切换帧设置为I帧,后面的帧不以场景变换以前的帧作为参考帧。

3) 为了保持视频质量的平滑,当前帧的λ和QP应该尽量与前面已编码帧的λ和QP保持一致。考虑到当前帧可能产生大量比特造成缓冲区上溢,λ和QP应该适当上调,但是场景切换帧作为关键参考帧,它的编码质量将严重影响后续编码帧的质量,λ和QP又不能过大。综合上述因素,本文提出以下方法确定场景切换帧的λ:

λcur=λpre×R

(7)

其中λcur是编码当前场景切换帧要使用的λ值。λpre表示实际编码上一个GOP中最后一帧所使用的λ。R是一个调节因子。设QPpre为实际编码上一个GOP中最后一帧所使用的QP,当QPpre小于32时,R的值为4,防止发生缓冲区上溢;当大于32,的值为-4,保证编码质量。之后按照式(2)计算场景切换帧的QP。

4) 场景切换帧之后将开始一个新的GOP的编码。GOP的目标比特TGOP的设置参考文献[2]中的方法,即:

(8)

其中NGOP表示GOP的大小,PPicAvg是目标码率,Ncoded是已编码帧数,SW是平滑窗大小,Rcoded是已编码帧消耗的比特数,需要将提前终止的GOP剩余的比特数以及编码场景切换帧消耗的比特数都计算在内。

3 实验结果

为了验证本文算法的有效性,在HM10.0测试平台[8]上进行实验。测试序列编码采用low delay P帧的编码结构,GOP的长度设为4。此处对两个测试序列的结果进行分析,序列1是用35帧Keiba,38帧Flowervase,40帧PartyScene,41帧BQMall,37帧BasketballDrill, 33帧RaceHorse合成的序列,总共编码224帧,共有5处场景切换,分辨率为832×480,帧率是30帧/秒,目标码率设置为1000 kbps;序列2是用35帧BQTerrace,41帧BasketballDrive,36帧Kimono,38帧Cactus,43帧ParkScene合成的序列,总共编码193帧,共有4处场景切换,分辨率为1920×1080,帧率是50帧/秒,目标码率设置为1500 kbps。图2和图3显示了分别用HM10自带的码率控制,即文献[2,4,5],以及本文的码率控制编码的各帧PSNR变化曲线。

图2 测试序列1中各帧PSNR的变换曲线

图3 测试序列2中各帧PSNR的变换曲线

从图2、图3中可以看出本文提出的码率控制算法很好地提高了编码质量并且维持了输出视频质量的稳定性。实验结果表明相比于HM自带算法的编码结果,各帧平均PSNR提高了2.16 dB,标准差降低了1.57。同时由于将场景变换帧设为帧内编码,又减少了后续帧的参考帧的缘故,本文算法的编码时间相比于原算法减少了18.9%。对于序列2,PSNR的提高并不显著,平均只提高了0.15 dB,这是由于序列2中各场景变换前后编码复杂度的改变不如序列1大,所以原算法也能取得较好的效果。但是本文的算法的编码时间却减少了17.4%。同时两个序列的测试结果都精确地控制了码率,序列1的实际码率是1000.76 kbps,序列2的实际码率是1492.52 kbps,误差都没有超过1%。

4 结 语

本文首先提出了一种快速场景切换检测的方法,并在场景切换对视频编码所造成影响充分分析的基础上,通过自适应调整参数,改变编码结构,使码率控制可以很好地处理场景变换的情况。结合HEVC编码器的实验结果表明,本文的算法可以更合理地分配码率资源,提高视频质量同时又降低了编码复杂度,从而有效地提高了编码效率。

[1] Sullivan G J, Ohm J, Han W J, et al, Overview of the high efficiency video coding (HEVC) standard[J].IEEE Trans. Circuits and Systems for Video Technology,2012,22(12):1649-1668.

[2] Li B. Rate control by R-lambda model for HEVC, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T 1/SC 29/WG 11[C]//11th Meeting: Shanghai, CN,2012:10-19.

[3] Lee C, Lee S, Oh Y, et al, Real-time H.264 rate control for scene change video at low bit rate[C]//ICCE 2007; 2007:1-2.

[4] Choi H, Nam J, Yoo J,et al. Rate control based on unified RQ model for HEVC. MPEG2012/M23088(JCTVC-H0213)[C].San Jose, USA, Feb,2012.

[5] Choi H, Nam J, Sim D, et al. Initial QP set for rate control. MPEG2012/M25590(JCTVC-J0262)[C].Stockholm, SE,2012.

[6] 余成伟,陆建华,郑君里.基于场景切换的H.264码率控制技术[J].清华大学学报,2008,47(7):1133-1136.

[7] 范晓东,余松煜,孙军. 基于场景切换检测的码率控制策略[J].上海交通大学学报,2000(6):756-760,764.

[8] HM-10.0 reference software[EB/OL].https://hevc.hhi.fraunhofer.de/svn/svn HEVCSoftware/branches/HM-10.0.

AN IMPROVED ALGORITHM FOR HEVC RATE CONTROL

Zhou Jianzheng

(TiangeTechnology(Hangzhou)Co.,Ltd,Hangzhou310011,Zhejiang,China)

The rate control algorithm based on R-λ model adopted by HEVC (High Efficiency Video Coding) has achieved great performance in both controlling the accuracy of output bitrate and improving coding efficiency. But it does not consider the influence brought forward by scene changes in practical video coding. This paper proposes a new rate control algorithm for scene changes. We first detect whether there are the scene changes by the difference of luma between frames and the variation tendency of the difference. When the scene change occurs, the parameters in rate control and coding structure will be all adjusted instantly and adaptively. Experiment shows that comparing with the rate control in HEVC itself, ours can handle with scene changes in video sequences effectively. The quality is raised and the coding complexity is decreased, while the accuracy of output bitrate is still maintained.

Rate controlScene changeHEVC

2015-04-07。杭州市重大科技创新项目(20142011 A07)。周建政,高工,主研领域:多媒体技术软件开发。

TP3

A

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

猜你喜欢
码率控制算法亮度
一种基于HEVC 和AVC 改进的码率控制算法
基于FPGA的多码率卷积编码器设计与实现
亮度调色多面手
基于状态机的视频码率自适应算法
基于ARM+FPGA的模块化同步控制算法研究
亮度一样吗?
基于斩波调制的LED亮度控制
人生的亮度
一种优化的基于ARM Cortex-M3电池组均衡控制算法应用
多光谱图像压缩的联合码率分配—码率控制方法