高效视频编码中帧内码率控制改进算法

2019-04-04 07:38李维任鹏赵凡陈亚军
西安交通大学学报 2019年4期
关键词:码率控制算法像素

李维,任鹏,赵凡,陈亚军

(1.西安理工大学印刷包装与数字媒体学院,710048,西安;2.西安电子科技大学通信工程学院,710071,西安)

多媒体技术和各种智能终端产品促使高清/超高清视频应用向高分辨率、高帧率、高像素位深快速发展。新一代视频编码标准(HEVC)[1]由于采用了各种先进的编码工具,如基于大块的四叉树分割结构[2]、先进的运动矢量预测技术、35种帧内预测技术、内部位深扩展技术、像素自适应补偿技术等,其编码性能有了大幅度提高。凭借高的压缩率和好的视频质量,HEVC逐步走入人们的视野[3]。实际中由于视频内容不断发生变化,经编码器后得到的码率会有较大波动,极易造成上溢或下溢现象,因此HEVC的码率控制[4]尤为重要,直接影响着视频编码标准的实用性。编码器需要码率控制模块调整输出的码流大小,以满足给定的存储或传输带宽。

码率控制问题实质是一种有约束条件的率失真优化问题,通过调整量化参数来保证编码码率与给定的目标码率相匹配。为了在码率和失真之间找到一个最优的折中点,率失真模型的建立是至关重要的。司俊俊等从理论上分析了编码帧预测残差信号的分布特性、量化参数以及拉格朗日因子之间的关系,提出根据拉普拉斯分布特性动态调整量化参数获得有效的码率控制[5]。Choi等假设信源服从拉普拉斯分布,利用泰勒展开式建立了R-Q模型[6],但基于该模型的码率控制算法在HEVC中的控制精度不高,特别是运动场景下,模型的性能下降很快。考虑到预测残差经过变换和量化后的系数中零系数比例ρ对编码码率有着重要的影响,特别是在码率比较低的情况下,这种影响更加显著。Liang等提出用R与ρ之间的关系代替R与Q之间的关系,从而建立一种基于R-ρ模型的码率控制算法[7],该算法利用绝对差均值来估计编码单元的复杂度,经码率控制后输出的编码码率上下波动较大。随后,Li等提出码率和失真之间存在双曲线函数关系,推导出一种基于码率-拉格朗日因子(R-λ)模型的码率控制算法[8],并且该算法被国际标准组织所采纳并且加入到HEVC校验模型。

上述方法均是在假设各个视频区域相互独立的情况下,利用率失真优化方法指导码率控制,但对于超高清视频以及HEVC编码器,这种假设条件下的码率控制在一定程度上影响了编码性能。由于帧内帧间预测技术的使用,致使区域之间的码率和失真具有一定的关联性[9]。Li等研究了时域编码块之间的失真特性,建立了失真模型并提出了相应的帧间码率控制算法[10],Liu等在码率控制算法中考虑了帧间编码中的失真漂移特性,以进一步提高编码效率[11],但是都只考虑了帧间编码的率失真特性,忽略了帧内编码码率控制中率失真关联特性。Zhou等分析了视频内容的复杂度,提出了一种新的帧内码率控制算法[12],但该算法也未考虑帧内预测技术对码率与失真的影响。基于帧内预测理论,本文分析了邻近编码区域之间的关联性,并结合失真漂移现象,提出一种高效视频编码(HEVC)帧内码率控制改进算法。实验结果表明,本文提出的算法可以有效地提高码率控制的性能,与原始算法相比,在同等码率的条件下,重构视频质量可平均提高0.1 dB。

1 帧内编码码率控制

码率控制模块由码率分配和量化参数确定两部分组成[13]。首先,根据目标码率为图像(GOP)、帧、编码树单元(CTU)分别确定最优的目标码率;然后,根据R-λ模型计算相应的量化参数[14]。帧内码率控制算法如下。

(1)GOP层码率分配。根据目标码率R、帧率F、GOP的大小SG、已编码的帧数Nc和编码输出的码率Rc,计算GOP的目标码率为

RG=SG(R(Nc-w)-RcF)/(wF)

(1)

式中:参数w为滑动窗口的大小,用于保证视频质量的平滑性。

(2)帧层码率分配。根据每一帧在GOP中所占的权重值进行帧层码率分配,由于帧内编码时每一个GOP只包含一帧,因此该帧的目标码率RF可估计为

RF=RG

(2)

(3)CTU层码率分配。第i个CTU的目标码率Bi取决于帧层的目标码率和当前CTU的空域复杂度,其计算公式为

(3)

(4)

式中:参数Rr表示当前帧剩余的目标比特数;A表示已编码的CTU实际输出的编码比特数。

(4)量化参数的确定。为了准确地获取量化参数,提出一种R-λ模型,通过拉格朗日因子λ值来计算量化参数,R-λ模型表示为

(5)

式中:NP表示CTU中所含的像素数;τ、β和χ为模型参数。量化参数Qi可表示为

Qi=4.200 5ln(λi)+13.712 2

(6)

在码率控制模块的指导下,视频编码器得以有效地运行,在保证一定视频质量的同时,输出的编码码率也满足给定的目标码率。

2 改进的R-λ模型

2.1 帧内块关联性分析

帧内预测将在空域上相邻的已重构的边界像素作为参考信息进行预测,能够有效地减少空域冗余,提高视频编码的效率。HEVC视频编码标准定义了35种帧内预测模式,包括33种角度模式、DC模式和Planar模式[15],如图1所示。

图1 帧内预测模式

由于当前像素与周围像素之间具有强的相关性,帧内预测编码利用最近的像素作为参考,估计当前像素值,但这种方式会引起潜在的编码失真漂移现象[16]。参考像素是原始像素经编码后的重构像素,其存在一定的失真,并且会随着帧内预测扩散到后续的像素,从而形成失真带。图2给出了参考像素失真传播的示意图,原始图像进行编码时,利用重构图像中的参考像素进行帧内预测,造成失真沿着预测方向传播,形成失真块。

图2 帧内失真漂移示意图

d=p(i,j)-p′(i,j)

(7)

式(7)可以重写为

d=[p(i,j)-pp(i,j)]+[pp(i,j)-p′(i,j)]

(8)

d=do+dp

(9)

通常,这种帧内预测关系可以被描述为一维高斯马尔科夫模型[17]

(10)

式中:θ和η为模型参数。后半部分失真dp可以表示为

dp=pp(i,j)-p′(i,j)=

(11)

则当前待编码CTU的总失真

D=Do+θDr

(12)

式中:Do和Dr分别表示当前待编码CTU的前半部分总失真和后半部分总失真。

2.2 基于失真漂移的R-λ模型

基于2.1节的分析,可以看出CTU的编码失真与其参考失真之间存在一种线性关系。这种关系是在失真测度为绝对误差和(SAD)条件下得到的。

码率控制属于率失真优化问题,通过拉格朗日优化方法可描述为[18]

(13)

式中:

J和λSAD分别表示率失真代价和失真测度为

SAD下的拉格朗日因子;符号D(i)和R(i)分别表示第i个CTU经编码后产生的总失真和总码率。对于第i个CTU,它的编码失真会传播到右边第i+1个CTU和相邻下边第j个CTU中,因此根据式(12),可得

∂J/∂R(i)=∂D(i)/∂R(i)+∂D(i+1)/∂R(i)+

∂D(j)/∂R(i)+λSAD=∂D(i)/∂R(i)+

∂(Do(i+1)+θ(i+1)D(i))/∂R(i)+

∂(Do(j)+θ(j)D(i))/∂R(i)+λSAD=

[1+θ(i+1)+θ(j)]∂D(i)/∂R(i)+λSAD=

αi∂D(i)/∂R(i)+λSAD

(14)

所以,式(13)被更新为

(15)

(16)

结合式(5),可得到改进的R-λ模型

(17)

式中:参数αi可利用前一个已编码块按照式(14)估算得到。图3给出了改进R-λ模型的获取流程。将改进R-λ模型加入到帧内码率控制算法中,可以更准确地计算量化参数,保证编码码率与目标码率的一致性。

3 实验结果

图3 改进R-λ模型的获取流程图

为了验证帧内码率控制改进算法的有效性,利用HEVC编码器的参考软件HM16.0,对各种标准序列进行相关指标测试。

标准序列使用JCTVC组

织提供的Class B、Class C、Class D、Class E这4类序列,其涵盖了不同分辨率、不同纹理的视频。本实验分别在帧内编码配置Intra_only Main(IM)、Intra_only Main10(IM10)和帧内帧间编码配置RA Main(RM)和RA Main10(RM10)环境[20]下进行测试。编码帧数设置为300,硬件采用Window7平台,处理器为Intel Core i5-4590。本文从编码效率和编码复杂度两方面评价改进模型的总体性能。

3.1 编码效率

首先本文从编码效率上来验证所提算法的性能,评价的指标是ΔRbit和ΔPSNR[21]。ΔRbit反映编码输出码率的变化情况,值为负,表示编码比特率Rbit减小;ΔPSNR反映视频质量的变化情况,值为正,表示峰值信噪比PSNR增大。

在帧内编码IM和IM10配置下采用本文改进算法和原有算法的性能进行对比,结果如表1所示。由表1可以看出:在IM配置下本文算法的比特率平均降低了1.4%,峰值信噪比平均提高了0.11 dB;在IM10配置下本文算法的比特率平均降低了1.7%,峰值信噪比平均提高了0.13 dB。由于本文算法是在帧内预测编码原理的基础上结合率失真优化推导出的改进算法,因此编码效率得到了提升。为了证明本文算法对帧内帧间联合编码配置也有贡献,分别在RM和RM10配置下对本文改进算法和原有算法的性能进行对比,结果见表1。从表1可以看出:在RM配置下本文算法的比特率平均降低了0.5%,峰值信噪比平均提高了0.05 dB;在RM10配置下本文算法的比特率平均降低了0.6%,峰值信噪比平均提高了0.08 dB,说明在帧内帧间联合编码的情况下,本文算法的编码效率也有一定提升;因为帧内帧间联合编码下的帧内块数量较少,所以编码效率提升的幅度没有帧内编码下编码效率提升的高。

表1 本文算法与原有算法性能对比

注:ΔRbit为本文算法编码率与原有算法编码率之间的差值;ΔPSNR为本文算法峰值信噪比与原有算法峰值信噪比之间的差值;ΔT为本文算法编码时间与原有算法编码时间的差值。

图4给出了Kimono序列和BQSquare序列的率失真性能曲线,其中Kimono序列的分辨率为1 920×1 080像素,BQSquare序列的分辨率为416×240像素。由图4可以看出,本文所提算法的率失真性能位于原有算法的率失真性能之上,反映了在给定码率下,本文改进算法具有更高的峰值信噪比值。表2给出了IM10配置下本文改进算法与文献[12]算法的性能对比结果。由表2可以看出,由于本文所提算法考虑了帧内失真漂移现象,因而在帧内码率控制方面优于文献[12]算法。

(a)IM配置下Kimono序列

(b)IM10配置下Kimono序列

(c)IM配置下BQSquare序列

(d)IM10配置下BQSquare序列图4 不同配置不同视频序列的率失真曲线

序列ΔRbit/%ΔPSNR/dBBqsquare_416×240-1.10.08RaceHorses_832×480-1.00.10Vidyo1_1280×720-1.10.09BasketballDrive_1920×1080-1.40.12均值-1.150.10

3.2 编码复杂度

本文使用编码时间差ΔT作为编码复杂度的评价指标,ΔT定义为

ΔT=(Tm-To)/To

(18)

式中:Tm表示本文改进算法被应用到码率控制中后所耗的编码时间;To表示原有算法被应用到码率控制中后所耗的编码时间。从表1可以看出,无论是全帧内编码还是帧内帧间编码,与原有算法相比,本文所提算法的编码时间增幅非常小,编码复杂度几乎没有大的影响。综上,本文改进算法在提高编码效率的同时,并未带来高的编码负担。

4 结 论

码率控制模块在视频编码中起着重要的作用,其率失真模型的好坏直接影响着最终的编码性能。本文针对HEVC的率失真模型,提出一种改进的帧内码率控制算法。通过分析帧内预测编码技术,找出度量失真漂移的方法,结合率失真优化原理,建立了考虑帧内块关联特性的改进R-λ模型。实验结果表明,本文所提的改进算法具有较高的帧内编码性能,在相同码率下重构视频质量可平均提高0.1 dB。

猜你喜欢
码率控制算法像素
像素前线之“幻影”2000
移动视频源m3u8多码率节目源终端自动适配技术
一种基于HEVC 和AVC 改进的码率控制算法
“像素”仙人掌
基于状态机的视频码率自适应算法
基于ARM+FPGA的模块化同步控制算法研究
高精度位置跟踪自适应增益调度滑模控制算法
ÉVOLUTIONDIGAE Style de vie tactile
高像素不是全部
基于航迹差和航向差的航迹自动控制算法