基于视频内容特征值的VVC 码率控制算法*

2021-12-22 07:08余东航李强聂骏
电子技术应用 2021年12期
关键词:码率控制算法比特

余东航,李强,聂骏

(重庆邮电大学 通信与信息工程学院,重庆 400065)

0 引言

多功能视频编码(Versatile Video Coding,VVC)是由ISO/IEC 的MPEG和ITU-T 的VCEG 联合制定,于2020年7 月正式发布的新一代视频编码标准。与以前标准相比,VVC 具有更高的压缩性能和通用性,可应用于高清和超高清视频、360°全向视频、高动态视频范围和广色域、沉浸式媒体等多种应用场景。

VVC 码率控制算法仍沿用了高效视频编码(High Efficiency Video Coding,HEVC)中的R-λ 模型[1]。基于 该模型的码率控制算法具有控制效果好、比特波动小的优点,但对局部纹理复杂边缘轮廓显著的视频,最大编码单元(Largest Coding Unit,LCU)层的比特分配并不准确,导致峰值信噪比有所损失。针对该模型码率控制算法的不足,文献[2]和[3]以LCU 层的梯度值衡量编码区域的复杂度,用于指导R-λ 模型中LCU 的比特分配,提升了R-λ 模型的性能;文献[4]对LCU 层编码模型参数做偏差修正处理,重新计算更新待编码LCU 的权重分配,提升了LCU 层的比特精确度;文献[5]根据视频帧间相关性,参考前一帧R-λ 模型更新后计算得到的比特数预测待编码帧的复杂度,提高了视频编码质量;文献[6]将I 帧消耗大量比特的影响分摊到整个序列,从而改进了前几个图像组(Group of Pictures,GOP)比特分配量,并在GOP 编码过程中根据实际消耗的比特不断更新帧层的λ 参数,提高了后续帧的比特分配精确度。

基于R-λ 模型的VVC 码率控制算法在模型参数更新过程中虽然考虑了编码实际结果的失真值,并以R-λ模型为推导基准修正参数更新公式,提高了参数更新的准确性,但在视频编码过程中,VVC 码率控制算法未充分考虑编码帧的内容特性,如编码帧的纹理复杂度、空域相关性等,因此其编码率失真性能和视觉体验还有待提高。为了实现更准确的码率控制,提高视频质量,本文提出了一种基于视频内容相关特征值的码率控制算法,通过引入灰度共生矩阵,得到能有效反映编码帧纹理特征的相关值,对GOP 中同一层级图像的权重重新调整,并对R-λ 模型中的λ 值进行重新求解,提升LCU 层比特权重分配的精度,从而提升视频编码质量。

1 基于R-λ 模型的VVC 码率控制算法

1.1 R-λ 模型

双曲率函数型率失真函数广泛应用在码率控制模型中[7],其计算公式如式(1)所示。

其中,D 代表编码的实际失真,采用均方误差来表示;R为编码比特,用每像素比特表示;C和K 是与序列内容特性相关的模型参数值[8]。拉格朗日乘子λ 由R-D 曲线的斜率表示,其计算公式如式(2)所示,式中的α和β是与序列内容特性相关的两个参数[9]。

1.2 目标比特分配

帧层的目标比特是在编码前根据R-λ 模型按每帧图像的权重进行分配的。在GOP 中,属于同一层级的图像具有相等的权重。当前帧的比特分配计算公式如下:

其中,Tpic为当前帧的目标比特;TGOP和CodedGOP分别为当前GOP 目标比特和已编码帧的实际消耗比特;ωPi和ωcurpic分别表示第i 帧的权重与当前帧的权重。

LCU 层的目标比特是在编码前根据R-λ 模型对所有LCU 按权重进行分配的。对于所有的LCU,其拉格朗日乘子为当前帧计算得到的估计值λestimate,因此每个LCU权重和表示如下[10]:

其中,ΩPIC表示当前帧所有LCU 权重和;Nlcu为当前帧所含的LCU 数量;表示第i 个LCU 权重大小。

2 基于R-λ 模型的VVC 码率控制算法

2.1 图像灰度共生矩阵与视频内容特征值

对于GOP 中的帧层目标比特分配,若能考虑每帧的实际纹理复杂度,对纹理复杂度较高的帧分配较多的目标比特数,就能提高视频编码的主观质量。灰度共生矩阵[11](Gray-Level Co-occurrence Matrix,GLCM)能反映出图像灰度的方向、相邻间隔和变化幅度等信息。如果通过像素灰度在空间位置上反复出现的关系和频率生成编码帧的灰度共生矩阵,进而可得到反映编码帧纹理复杂度的相关特征值,如能量、熵、对比度、逆差分矩、最大相关系数等,再综合考虑这些相关特征值对编码帧进行纹理复杂度分级,即能实现有效的码率控制目的。

本文以编码帧原始灰度图的反差、熵、能量和逆差矩作为描述图像纹理复杂度的相关特征值。在得到编码帧的灰度共生矩阵后,通过式(6)~式(9)计算出原始灰度图的反差σi、熵ζi、能量τi及逆差矩υi。

其中,x、y 分别表示GLCM 对应的横纵坐标,P(x,y)是GLCM 中位于坐标(x、y)位置处的值。

2.2 同层级帧权重的重分配

在GOP 中,同一层级[12]的帧由于权重计算公式中的参数相同,目标比特分配没有考虑当前帧的实际纹理特性及复杂度,在比特分配上存在不合理的情况[13]。为了更准确地对每一帧进行合理的比特分配,以当前帧经归一化处理后的反差、熵、能量及逆差矩作为描述图像纹理复杂度的指标,对同一层级每帧的目标比特进行重新分配。

首先通过式(10)和式(11)对同一GOP 中不同层级的目标比特分级求和。

图1 GOP 帧的层次分布图

然后,根据当前帧灰度共生矩阵求出的特征值σi、ζi、τi和υi,对GOP 层所有帧按同一层级进行比特重分配。

2.3 LCU 层目标比特更新优化

在对LCU 进行编码前,码率控制算法会对当前帧的每个LCU 进行权重分配,以R-λ 模型为基础,LCU 的权重和比特分配方法如下[14]:

式中,ΩBi和TBi分别表示第i 个LCU 的权重大小和目标比特;RP表示当前帧的目标比特;BitHeader为该帧的头信息比特值;Nlcu为该帧LCU 的总数;和均与视频内容特性有关,为R-λ 模型中的参数值;λest为当前帧模型参数所求得的预估值。

由于所求得的λest是根据编码帧模型参数更新后的预估值,用于实际LCU 的权重和目标比特求解存在一定的误差,为了以更加准确的λ 值来进行LCU 层的权重估计,需根据编码帧实际的目标比特与模型参数值和对λest的值进行重新求解,得到最佳的模型参数值λnew,从而达到LCU 层更加准确的权重分配。将LCU 层优化后的拉格朗日乘子λnew代入式(16)可得到当前帧的目标比特RP。

其中,i和N 分别表示第i 个LCU和当前帧所含总LCU的数量;由第i个LCU 的模型参数求得,其值与视频内容的特性相关。

由于上式除λnew以外其余参数都是已知的,因此根据等式求出最佳拉格朗日乘子λnew后,通过如下公式对LCU 重新进行权重分配:

式中,ΩnewBi和TnewBi分别表示代入最佳拉格朗日乘子λnew后第i 个LCU 的权重和目标比特;Nlcu表示当前帧LCU的总个数。

根据此λ 更新思路,在后续的编码过程中,根据编码帧的目标比特和已编码LCU 的实际消耗值计算得到当前编码帧的剩余目标比特Rleft,对待编码LCU 的权重和目标比特不断进行更新。

式中,Rleft表示当前编码帧剩余的目标比特;RcodedLCU表示实际已编码LCU 所消耗的比特数;λupdated表示编码过程中待求解的最佳拉格朗日乘子,仍可由式(17)和式(18)对编码帧中待编码LCU 重新进行权重分配和目标比特分配。

式中,ΩupdatedBi和TupdatedBi分别表示编码过程中更新拉格朗日乘子λupdated后重新计算得到的第i 个LCU 的权重和目标比特。编码过程中通过不断地更新λ 值,对待编码LCU进行权重和目标比特的重新计算,从而达到更加准确的比特分配目的。

2.4 算法整体流程及复杂度分析

本文所提算法分为帧层和LCU 层比特控制策略以及模型参数更新,整体算法流程描述如下:

(1)码率控制参数初始化。

(2)视频序列I 帧的帧内编码。

(3)根据2.1 节得到GOP 各帧的GLCM,由GLCM 得到各帧经过归一化处理后的权重值。

(4)根据步骤(3)所得到的权重值,对同层级各帧进行权重和目标比特重分配。

(5)求得LCU 层最优拉格朗日乘子λnew。在编码过程中,根据式(19)~式(21)对待编码的LCU 权重和目标比特不断进行更新。

(6)判断已编码的GOP 是否为最后一个GOP,若是则跳转至步骤(7);若不是则跳转至步骤(3)。

(7)视频序列编码完成。

在上述视频编码过程中,为降低生成GLCM 的时间复杂度,本文对其进行了灰度级压缩,将256×256 的矩阵压缩至64×64,减少了计算复杂度。

3 算法性能测试

为验证所提算法的有效性,本文算法在VTM10.0 上进行了实现。以未开启码率控制为对比基准,测试平台的码率控制算法采用自适应比特分配的方式。选取官方所提供的B 类测试序列MarketPlace、RitualDance、Cactus和BQTerrace,C 类测试序列BasketballDrill、BQMall、Race-Horses和PartyScene,D 类测试序列BQSquare、Blowing-Bubbles、RaceHorses和RaceHorses,以及E 类测试序列FourPeople、Johnny和KristenAndSara。每个测试序列分别在QP为22、27、32和37 情况下进行编解码,编码帧数为该序列所有帧数。本文所用电脑配置为Inter®CoreTMi7-9700@3.00 GHz 处理器、16 GB 内存和64 位操作系统。

3.1 R-D 性能测试

率失真性能是评判码率控制效果的重要指标,BDBR(Bjøntegaard Delta Bit Rate)[15]表示在相同客观质量下,测试算法相对基准算法码率节省百分比。在相同的比较条件下,BDBR 值越小,表示算法的率失真性能越好。本文分别计算出VTM10.0 自适应码率控制情况下的BDBR和本文算法下的BDBR 值,相减得到的比较值用于评价RD 性能的提升量。

从表1 可以看出,相比于自适应码率控制算法,本文算法的BDBR 值平均改善了0.86%,有效提升了率失真性能。对于PartyScene 序列,相对自适应码率控制算法,本文算法的RD 性能降低了0.05%,这是因为该序列镜头进行了拉伸,导致GOP 层同层级帧间相关性下降。对于其他序列,本文算法的率失真性能都优于自适应码率控制下的性能指标。E 类序列的RD 性能提升最为明显,平均BDBR 值改善了2.71%,这是因为对于背景相对固定的场景且图像多为局部变化的视频序列,GOP 层同层级的比特重分配策略会更加准确,从而改善编码帧的质量,提高率失真性能。

表1 LDP 配置下BDBR-Y 实验结果(%)

3.2 码率相对误差测试

本文采用码率控制精度Δerror 的对比来评估本文算法的性能。Δerror 越小,表示编码器的实际输出码率越接近目标码率,控制精度越高。Δerror 的计算公式如下,Rtar和Ract分别表示目标码率与实际码率。

表2 是VTM10.0 自带的自适应比特分配算法和本文算法在LDP 配置下码率控制精度的对比数据。Δerror值为测试序列在4 个不同QP 值下所得的平均误差值。VTM10.0 算法表示平台在自适应设置情况下的码率相对误差结果。由数据分析可知,本文算法总平均码率的相对误差值Δerror为0.434%,码率控制精度优于自适应设置下的0.435%。对于E 类中的FourPeople和Johnny序列,本文算法码率在精度控制上并没有自适应码率控制得好,这是由于这两个序列镜头比较平稳且仅有局部内容轻微变化,因此导致本文所提算法在GOP 层中同级图像权重分配计算差别不大。对于B、C、D 类序列,本文算法的码率控制精度均有提升,说明无论对于B、C类高分辨率序列或是D 类低分辨率序列,本文算法码率控制精度都有所改善。

表2 LDP 配置下的码率控制精度比较(%)

3.3 主观质量比较

图2(a)和图2(b)为VVC 官方提供的测试序列Jonny在LDP 配置和QP 值为37 情况下,采用自适应码率控制和本文算法所得到的第62 帧解码后的对比图,测试时的目标码率为75.002 4 kb/s。从图像可以观察到,通过本文算法所得到的人脸特征相比于自适应码率控制算法要更清晰,对右侧衣服进行局部放大之后,采用本文算法解码出来图像仍可观察到衣服上的条纹,本文算法重构出的视频主观质量要优于自适应码率控制算法。

图2 VVC 官方提供的测试序列Johnny(1280×720)在QP=37 下的主观质量对比

4 结论

为了提高VVC 码率控制算法的编码性能,本文提出了一种基于视频内容相关特征值的码率控制算法。首先通过生成编码帧的灰度共生矩阵,得到能有效反映编码帧纹理复杂度的相关特征值,用这些相关特征值调整GOP 中同一层图像的目标比特分配;然后基于R-λ 模型,对LCU 层的λ 参数进行重新计算,提高LCU 层比特分配的精度。通过在VTM10.0 测试平台上进行实现和性能测试,实验结果表明,本文算法提升了率失真性能和控制精度,视频编码质量有明显改善。下一步将根据LCU 的纹理复杂度,并结合模型参数估计进行最优比特分配,进一步提升视频编码的比特分配精度,适应更加复杂的应用场景。

猜你喜欢
码率控制算法比特
一种基于HEVC 和AVC 改进的码率控制算法
基于FPGA的多码率卷积编码器设计与实现
基于状态机的视频码率自适应算法
基于ARM+FPGA的模块化同步控制算法研究
比特币还能投资吗
比特币分裂
比特币一年涨135%重回5530元
一种优化的基于ARM Cortex-M3电池组均衡控制算法应用
多光谱图像压缩的联合码率分配—码率控制方法
一种非圆旋转工件支撑装置控制算法