APP下载

基于场景切换的HEVC码率控制算法

2015-06-22胡乾乾沈礼权赵振军

电视技术 2015年5期
关键词:码率控制算法亮度

胡乾乾,沈礼权,2,赵振军

(1.上海大学 通信与信息工程学院,上海200072;2.新型显示技术及应用集成教育部重点实验室,上海200072)

基于场景切换的HEVC码率控制算法

胡乾乾1,沈礼权1,2,赵振军1

(1.上海大学 通信与信息工程学院,上海200072;2.新型显示技术及应用集成教育部重点实验室,上海200072)

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

码率控制;场景切换;HEVC编码

1 码率控制算法

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

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

λ=α×Rβ

(1)

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

QP=4.200 5×lnλ+13.712 2

(2)

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

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

2 场景切换检测

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

(3)

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

V(n)=p×D(n)+(1-p)×V(n-1)

(4)

式(4)表明V(n)与前面各帧的亮度差值都有关,并且离当前帧越近的帧的亮度差值对V(n)的影响越大。式(4)是一个计算所有帧的D(n)的加权和的过程,p是权重因子,表明的是与当前帧的距离远近对V(n)的影响,p越大则距离近的帧的亮度差影响越大,实验中设置为0.5。V(n)的计算至少需要3帧,所以设序列的第二帧以及场景切换后一帧的V(n)都等于D(n)。V(n)的计算中不包括上一个场景切换帧及其之前的帧。判断当前帧是否为场景切换帧的依据K(n)的计算为

(5)

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

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

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

K(n)>th

(6)

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

3 场景切换的码率控制

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

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

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

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

λcur=λpre×R

(7)

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

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

(8)

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

4 实验结果

为了验证本文算法的有效性,在HM10.0测试平台[6]上进行实验。测试序列编码采用low delay P帧的编码结构,GoP的长度设为4。此处对两个测试序列的结果进行分析,序列1是用35帧Keiba、38帧Flowervase、40帧PartyScene、41帧BQMall、37帧BasketballDrill、33帧RaceHorse合成的序列,总共编码224帧,共有5处场景切换,分辨率为832×480,帧率是30 f/s(帧/秒);序列2是用35帧BQTerrace、41帧BasketballDrive、36帧Kimono、38帧Cactus、43帧ParkScene合成的序列,总共编码193帧,共有4处场景切换,分辨率为1 920×1 080,帧率是50 f/s。

表1显示了测试序列1使用HM10.0自带的码率控制算法[2]以及本文的码率控制算法编码的结果。从表1中可以看出使用本文提出的码率控制算法在不同的目标码率下都能准确地控制码率,同时显著地提高了PSNR,PSNR平均提高2.11 dB。由于本文算法将场景变换帧设为帧内编码,又减少了后续帧的参考帧,省去了一些不必要的运动搜索过程,降低了复杂度,所以平均编码时间减少了9.6%。图2显示了目标码率为1 000 kbit/s时使用HM10.0自带的码率控制与本文码率控制的编码序列1各帧PSNR的变化曲线。

表1 测试序列1使用HM10.0码率控制算法与本文提出的码率控制算法编码结果比较

表2显示了测试序列1使用HM10.0自带的码率控制算法以及本文的码率控制算法编码的结果。从表2中可以看出使用本文提出的码率控制算法的平均PSNR提高不如序列1显著,平均只提高了0.26 dB,原因是序列2中场景切换处编码复杂度的变化并不大,所以原码率控制算法也能取得较好的效果。由于减少了运动搜索,平均编码时间减少了17.7%,同时实际输出码率也比较符合目标码率。图3显示了目标码率为1 500 kbit/s时使用HM10.0自带的码率控制与本文码率控制的编码序列2各帧PSNR的变化曲线。

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

目标码率/(kbit·s-1)HM10.0码率控制本文提出的码率控制PSNR/dB编码时间/s实际码率/(kbit·s-1)PSNR/dB编码时间/sPSNR提高/dB编码时间减少/%100030.615008.3993.9830.894171.680.2816.7150032.025540.061491.8732.314537.050.2918.1200033.015990.931989.4333.314896.290.3018.3300034.356402.882977.8034.535266.340.1817.8平均值—0.2617.7

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

5 小结

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

[1]SULLIVAN G J,OHM J,HAN W J,et al. Overview of the high efficiency video coding(HEVC) standard[J].IEEE Trans.Circuits andSystems for Video Technology,2012,22(12):1649-1668.

[2]LIB.Rate control by R-lambda model for HEVC[S].2012.

[3]LEE C,LEE S,OH Y,et al,Real-time H.264 rate control for scene change video at low bit rate[C]//Proc.ICCE 2007.[S.l.]:IEEE Press,2007:1-2.

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

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

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

责任编辑:时 雯

Rate Control Algorithm for HEVC Based on Scene Change

HU Qianqian1,SHEN Liquan1,2,ZHAO Zhenjun1

(1.CollegeofCommunicationandInformationSystem,ShanghaiUniversity,Shanghai200072,China; 2.KeyLaboratoryofAdvancedDisplayandSystemApplication,MinistryofEducation,Shanghai200072,China)

The rate control algorithm based on R-λ model adopted by HEVC (High Efficiency Video Coding) has achieved great performance on both maintaining the accuracy of controlling output bitrate and improving coding efficiency.But it does not consider the influence brought by scene change in practical video coding.A new rate control algorithm based on scene change is proposed in this paper.Scene changesare detected by the difference of luma between frames and the variation tendency of the difference.When scene change occurs, the parameters in rate control and coding structure will be adjusted instantly and adaptively.Experiment result shows that compared with the rate control in HEVC,the proposed method can handle with scene changes in video sequences effectively.The quality is raised and coding complexity is decreased while still maintaining the accuracy of output bitrate.

rate control;scene change;HEVC

国家自然科学基金项目(61171084)

TN391.41

A

10.16280/j.videoe.2015.05.001

胡乾乾(1990— ),硕士生,研究方向为HEVC码率控制算法;

沈礼权(1978— ),副研究员,硕士生导师,主要研究方向3D视频处理、超高清、超高分辨率视频处理与编码、基于人眼视觉特性视频处理等;

赵振军(1988— ),硕士生,研究方向为3D视频码率控制算法。

2014-11-08

【本文献信息】胡乾乾,沈礼权,赵振军.基于场景切换的HEVC码率控制算法[J].电视技术,2015,39(5).

猜你喜欢

码率控制算法亮度
一种基于HEVC 和AVC 改进的码率控制算法
基于FPGA的多码率卷积编码器设计与实现
纺织机械手专利瞄准控制算法
亮度调色多面手
基于状态机的视频码率自适应算法
基于ARM+FPGA的模块化同步控制算法研究
亮度一样吗?
基于斩波调制的LED亮度控制
人生的亮度
多光谱图像压缩的联合码率分配—码率控制方法