一种基于x265的帧级基础量化参数确定方法

2022-02-10 08:42陈华炜吴林煌
电视技术 2022年12期
关键词:码率复杂度比特

陈华炜,吴林煌

(福州大学 先进制造学院,福建 晋江 362200)

0 引 言

码率控制作为视频编码中的基本技术,在带宽受限的实际通信中起着至关重要的作用,其功能是为各个粒度找到合适的量化参数,使其在指定的码率约束情况下率失真代价(Rate Distorition cost,RD cost)最小。码率控制技术主要通过动态地调整编码参数来实现,涉及目标比特分配和编码参数的计算。目标比特分配主要是依据目标码率、帧率、缓存区占满度以及图像的复杂度等信息,在图像组(Group of Pictures,GOP)、图像(Picture)、编码单元(Coding Unit,CU)等不同粒度分配合适的目标比特。编码参数的计算主要是依据目标比特以及码率控制模型的参数,给当前帧或是当前编码单元设定适当的编码参数,以使得最终的输出码率稳定地维持在目标码率。在HEVC(High Eiffciency Video Coding)[1]早期版本的参考软件HM8.0中,码率控制算法采用文献[2]所提出的URQ(Unified Rate Quantization)二次模型,也被称为Q域码率控制,即建立比特R与量化参数(Quantized Parameter,QP)之间的二次关系;文献[3]针对R-Q模型存在的不足,通过以拉格朗日乘子λ为纽带建立了R-λ与λ-QP模型,并采用固定帧比例分配比特方案来获得编码单元的量化参数;文献[4]则利用率失真优化理论提出自适应动态调整帧比特分配算法改进R-λ模型码率控制。由于λ域码率控制算法在码率精确度和编码性能上都优于Q域码率控制算法,实现了0.56%的码率精确度与1.08 dB的RD性能提升,后续该算法也被集成进HEVC参考软件当中。

上述码率控制算法都忽略了编码过程中数据依赖性对码率控制的影响。具体来说,提高一个重要帧的编码质量将有助于减少所有以其为参考帧的编码帧失真。因此,在时空相关的编码环境中,考虑最优比特分配更有利于编码质量的提高。例如,针对HEVC码率控制算法所进行的研究中,文献[5]针对现有比特率模型对于视频内容的动态变化敏感提出一个帧级比特率模型,文献[6]、文献[7]、文献[8]提出了基于视频内容特征的比特分配方法,都提升了率失真性能。而在H.264/AVC软件编码器x264[9]中,采用了宏块树(Macroblock-tree,MB-tree)技术来考虑宏块(Macroblock,MB)级别的数据依赖性。该技术由x265[9]继承,并命名为编码单元树(Coding Unit-tree,CU-tree)。x265作为一款高性能的软件编码器,在工业界有着重要地位。在x265的原有算法中,每帧都有其帧级基础量化参数,并通过CU-tree算法确定各个CU的量化参数偏移量。对每个CU来说,其量化参数等于帧级基础量化参数与CU-tree所计算的对应偏移量之和。文献[10]针对CU-tree方法,提出了一种新的线性失真传播模型来估计编码时间依赖性,并引入了量化的影响来提升编码性能。然而,x265对于其初始帧帧级量化参数PQ0的确定,却没有考虑任何视频内容特征而仅仅依据经验确定,后续帧级QP也仅由长期历史帧复杂度决定。文献[11]利用初始帧的熵与帧内DC16×16的预测值作为复杂度衡量,与每像素比特bpp一起建立与PQ0的关系式;文献[12]利用平均绝对误差(Mean Absolute Difference,MAD)来拟合bpp与PQ0的关系;文献[13]预编码一个GOP,利用宏块方差以及两帧像素绝对误差和预测图像复杂度建立R-C-Q模型,从而获得PQ0提升了RD性能。但这些研究或是没有考虑编码时域关系,或是需要在前几帧编码完成后才能进行,且计算复杂、运算量大,还有进一步改进的空间。

为了克服上述问题,本文充分利用前瞻模块所得到的信息,考虑后续帧对初始帧的参考程度和初始帧梯度信息,对初始帧基础PQ0进行估计;对后续P帧,利用下采样哈达玛变换绝对误差和(Sum of Absolute Transformed Difference,SATD)评估当前帧复杂度,对P帧基础QP进行修正。实验结果表明,改进的算法能有效提升RD性能。

1 x265帧级QP算法

1.1 CU-Tree算法

CU-tree的本质是评估每个CU的信息量,有助于待编码视频帧的预测。每个CU根据CU-tree所计算的遗传代价propagate_cost表示未来帧依赖于这个CU的程度,被初始化为0,并由CU-tree推导得出。对于每一帧,CU-tree在每个CU上执行如下步骤。

(1)计算从当前CU继承到其参考CU的信息分数,称为传播分数F,例如一个CU的帧间代价cinter只有帧内代价cintra的80%,说明帧间预测节省了20%的编码消耗,则该CU的信息有20%来自帧间预测,定义如下:

式中:cinter和cintra分别为帧内模式和帧间模式的SATD代价之和。如果cinter远大于cintra,F设为0。

(2)该CU依赖于其参考CU的信息总量称为传播量A:

式中:cpre为该CU提供给后续帧的信息。

(3)由于参考CU不一定位于CU的网格上,因此参考系中多个参考CU的传播代价根据重叠区域累积:

式中:aoverlap/acu为参考部分所占一个完整CU的面积比。

(4)在帧的所有CU完成上述信息反向传播的计算后,参考帧中的CUs的量化偏移量计算如下:

式中:s是一个由实验得出的常数。

1.2 帧级基础QP确定

x265中定义了帧级的基本量化尺度:

原算法的缺点来自于对初始帧量化参数的计算。对于初始帧,C0表示为

式中:t表示一个与视频序列分辨率有关的常数(当分辨率大于720p时,t=2.5;否则t=1),R0则为每帧平均比特。因此对于初始帧而言,其基础量化参数值的确定只与当前视频序列的分辨率、目标比特(即每像素比特bpp)有关。当视频序列的bpp相同时,不同视频序列初始帧的基础量化参数PQ0将会得到相同的值。显然,最佳的PQ0不应只考虑bpp的因素,还应考虑到视频内容的影响,内容包括时域以及空域。

2 算法改进

2.1 bpp对PQ0的影响

关于bpp与PQ0的关系,已有许多文献进行研究,本文根据文献[12]中的方法进行分析,得出bpp与PQ0的关系如下式:

式中:参数集{a1,a2,a3,a4,b1,b2,b3}以“Basketballpass”作为基准序列的取值为{403,-131.3,-29.95,15.02,36.86,31,23.03,-0.055 67,2.089,-16.86}。

2.2 空时域内容特征的度量

对于运动平缓、背景相对固定的场景来说,初始帧作为后续帧的参考,应该具有良好的编码质量,因此它需要被赋予更多的比特、更小的PQ0;而对于运动剧烈、背景变换频繁的场景,后续帧对初始帧的参考程度减弱,应该赋予初始帧较少的比特以及较大的PQ0,使得后续帧有足够的编码比特和稳定的编码质量。同时,初始帧本身的视频内容特征也对PQ0尤为重要,对初始帧信息丰富的应赋予较多比特、较小PQ0;对信息较少的应赋予较少比特、较大PQ0。因此,一个视频序列的空时域内容特征会影响到PQ0的选择。

空域方面,通过实验比较熵、Intra-16×16 DC预测的值以及图像梯度三者作为衡量图像复杂度方法的有效性,发现基于梯度的方法不仅具有更好的区分能力,而且具有计算复杂度低的特点[14]。因此,本文选择图像梯度作为衡量视频序列初始帧空域内容特征的方法,梯度值G的计算公式如下:

式中:I(i,j)表示图像(i,j)位置处像素的亮度值,w与h分别表示视频序列一帧图像的宽度与高度。

时域方面,CU-tree模块中,CU块的质量取决于它在未来帧中被引用的程度。如果一个CU块很快就发生遮挡、移动等情况,那么CU-tree算法将降低其质量。因此,CU块的遗传代价能够很好地反映该CU相对于后续CU的参考程度,且不引入额外计算复杂度,计算简便。

因此,可以通过计算初始帧每个子块CU的遗传代价值之和来统计出初始帧的遗传代价,根据该遗传代价进行时域复杂度估计,以提高视频编码质量。初始帧的遗传代价定义为

式中:PCU_n表示CU-tree中所计算的第n个CU的遗传代价,由式(3)可得,n表示每帧具有的8×8CU块数量,w与h分别表示视频序列一帧图像的宽度与高度。

2.3 基于时空内容特征确定PQ0

结合2.2节的分析,本文提出一种新型的利用x265中前瞻模块内容确定视频时空内容特征计算方法。计算公式如下:

式中:α为加权系数,其取值大于0并小于1。为了确定α的取值,本文对多个测试序列进行实验,统计了不同α取值对R-D性能、码率控制精度以及拟合最佳PQ0程度的影响,最后将α的值定为0.5。

对于任意一个测试序列以不同比特率进行编码,PQ0是bpp与时空内容特征共同影响的结果,最终的最佳PQ0确定为

其中参数集 {c1,c2,c3}以“Basketballpass”作为基准序列取值为{-0.055 67,2.089,-16.86}。

为了避免某些极端情况下初始帧量化参数修正过多的问题,对PQ0作进一步的限定。PQ0的上限也不能超过HEVC标准规定的最大值51,下限不能过低,否则容易造成缓冲区溢出现象。故PQ0限定为

2.4 确定P帧的基础QP

在x265编码器中,帧级Qscale的定义如式(5)所示。由于(后续用Cplxr表示)是历史所有编码图像累积复杂度,并没有考虑到当前帧的图像复杂度。因此随着编码增加,帧级Qscale对最近的帧复杂度变化愈发不敏感。故对于帧级的QP确定,应该同时考虑历史帧的长期影响以及当前帧的短期影响。

对于一帧图像,在x265编码的前瞻阶段便能够获得当前帧下采样SATD值,而当前帧的图像复杂度Cplxr只能在编码完毕后获得。考虑下采样SATD值与当前帧Cplxr关系,如图1所示,SATD与Cplxr具有相同的变化趋势。

图1 KristenAndSara序列SATD与Cplxr值

因此,用式(15)来拟合SATD与Cplxr的关系:

利用当前帧的预估Cplxrn来计算当前P帧的短期,公式为

当前P帧的帧级基础Qscale,即要编码的第n帧图像,结合了长期(5)与短期(17)的影响,其表述为

对于B帧,其定义与原始的x265算法相同,由P帧以及ΔPQBP确定。

3 实验结果与分析

本文所提出的码率控制算法在x265编码器2.8版本平台上实现,以验证算法的性能。测试选取了14个HEVC标准测试序列,其目标码率设置如表1所示,以medium作为测试预设档次,开启CU-tree模块,每个测试序列编码100帧。以峰值信噪比(Peak Signal to Noise Ratio,PSNR)和结构相似度(Structural Similarity,SSIM)作为率失真性能评价标准。为了更加综合地比对所提出算法的性能,在同平台同配置情况下,与x265中原有的ABR+VBV算法进行了性能对比。其中,ABR模式指平均比特率(Average Bit Rate,ABR),VBV模式指视频缓冲检验器(Video Buffer Verifier,VBV),用来进一步调节QP。

表1 测试序列及目标码率设置

码率控制的目标是使在视频编码输出后的实际码率近似等于目标码率,并且使得编码视频失真最小。因此,输出码率的准确性是衡量码率控制算法性能的一个重要指标。定义码率相对误差的公式为

式中:Rreal是编码后输出的实际码率,Rtarget是设置的目标码率。

从表2可以看出,在以表1为标准设定目标码率之后,本文所提出的码率控制算法码率平均误差为3.13%,x265软件ABR+VBV模式下码率平均误差为3.10%,本文所提算法与原有算法的码率控制精度几乎一致,说明所提算法能够准确地满足所给出的目标比特约束。

表2 码率相对误差比较

RD性能也是一个衡量视频编码系统的重要指标。BD-rate表示在相同的编码质量情况下,对比方法相对于原方法节省的比特百分比。本文算法与x265编码器中原有的“ABR+VBV”模式下的率失真RD性能比较如表3所示,在比较率失真性能时同时采用峰值信噪比(PSNR)与结构相似度(SSIM)作为指标。可以看到,相对于原始算法,以PSNR为指标,BD-rate平均减少了14.33%;以SSIM为指标,BD-rate平均减少了16.22%,说明本文算法的率失真性能要优于原有算法。这是因为初始帧量化参数的选取在码率控制中起到了重要作用,如果选取过小,会导致对初始帧分配过量比特,使得后续编码比特不足影响编码质量;如果选取过大,会导致初始帧的编码质量降低,并且由于失真传递,初始帧编码质量会严重影响到后续编码帧,从而导致整体质量下降。因此,对初始帧进行基础量化参数的确定,能够有效提升视频图像质量,如分辨率为720p的Class E测试序列皆为运动缓慢且具有单调背景的序列,初始帧量化参数的选择对该场景尤为重要,其以PSNR为指标的BD-rate平均减少26.58%,比SSIM为指标的BD-rate平均减少22.80%,效果显著。

表3 BD-rate性能比较

图2—图5分别为测试序列BQTerrace和测试序列KristenAndSara的BD-rate(SSIM)与BD-rate(PSNR)率失真性能曲线图。从图中可以明显看出,应用本文所提算法之后,率失真性能要优于x265原有算法。

图2 BQTerrace序列SSIM性能

图3 BQTerrace测试序列PSNR性能

图5 KirstenAndSara序列PSNR性能

图4 KirstenAndSara序列SSIM性能

图6—图9为主观质量对比图。在每个子图中,左侧的图片是由本文所提出算法所进行编码的视频序列图片,右侧是采用原始x265所进行编码的视频序列图片。相比于x265,经过本文算法编码的视频保留了更多细节。如图6为BasketballPass序列第11解码帧,目标比特率256 kb·s-1。右侧原始算法所展现的图片中,背景以及人物都出现了一定程度的模糊,而左侧采用所提算法之后,背景与人物的主观效果都要优于右侧图片。

图6 256 kb·s-1的 BasketballPass序列

图7 384 kb·s-1的 BasketballDrill序列

图8 512 kb·s-1的 Johnny 序列

图9 2 000 kb·s-1的 BQTerrace 序列

对于图8的Johnny序列,可以观察到,对于人们所更加关注的人脸部分,右侧图片略有一点模糊,而左侧图片更好地保留了原有的细节,体现了人脸的特征。另外,由于本文的P帧基础QP算法考虑了短期影响,能够更好地响应当前帧复杂度变化,也得到了一定程度的PSNR增益。例如,图7BasketballDrill序列的解码第94帧,左侧PSNR值为32.07 dB,右侧为31.10 dB,获得了0.97 dB的PSNR增益。

4 结 语

为了进一步提升x265中码率控制的性能,本文首先回顾了x265中的CU-tree算法与帧基础QP确定算法,之后通过前瞻模块中的CU-tree考虑各个CU块的遗传代价作为时域特征,考虑梯度作为空域特征,与每像素比特共同确定初始帧基础QP。此外,通过前瞻模块所计算的下采样SATD值,推导出当前帧图像复杂度值,计算当前帧对编码的短期影响,与历史帧复杂度一起确定P帧基础QP。在默认预设条件下,相比于x265中原有的“ABR+VBV”模式码率控制算法,提出的算法率失真性能BD-rate(PSNR)与BD-rate(SSIM)分别降低了14.33%与16.22%,而比特率相对误差几乎没有变化,有效提升了编码质量,并能很好地适应不同特性的视频序列。

猜你喜欢
码率复杂度比特
移动视频源m3u8多码率节目源终端自动适配技术
一种基于HEVC 和AVC 改进的码率控制算法
一种低复杂度的惯性/GNSS矢量深组合方法
基于状态机的视频码率自适应算法
比特币还能投资吗
比特币分裂
求图上广探树的时间复杂度
比特币一年涨135%重回5530元
某雷达导51 头中心控制软件圈复杂度分析与改进
出口技术复杂度研究回顾与评述