本文来自ICASSP2020论文《INTRA FRAME RATE CONTROL FOR VERSATILE VIDEO CODING WITH QUADRATIC RATE-DISTORTION MODELLING》
本文在VVC中提出了新的二次R-D模型,在VTM2.0平台帧内编码模式下相对于默认码率控制算法在相似控制精度下可达到0.77% BD-BR。
R-D模型
VVC中传统的RD模型
VVC中RD模型是双曲线模型,
其中失真D用MSE度量,码率R用bpp(bit per pixel)度量。C和K是模型参数,与视频内容有关。
根据拉格朗日优化求导后可得到lambda。
本文RD模型
由于VVC添加了很多新的编码工具,原来的RD关系已经不能适用了,本文提出了新的RD模型:
这是关于lnR的二次模型,a,b,c是模型参数,与视频内容有关。
为了验证模型的准确性,文中在All intra配置下编码了11个序列,使用4个QP(22,27,32,37),并设置_TemporalSubsampling_=1。对每个序列取前20帧的亮度失真和码率。每条序列可以获取到80个数据点用最小二乘法拟合原始双曲线模型和文中提出的二次模型的参数,拟合结果如Fig.1,
使用相关系数R方来衡量哪个模型更能反映真正的RD关系。R方越接近1表示相关性越强。结果如表1所示,
BasketballPass序列运动目标很多内容变化快,BlowingBubbles序列纹理复杂,在整两条序列上文中算法都优于原始算法。
对于二次函数,当a>0时,对称轴-b/2a左边单调递减,对称轴右边单调递增。为了避免随着码率R增加,失真D也单调递增的情况,需要满足下面的条件,
此外,码率和失真都是正值,所以最小的失真也要大于0,
最终提出的RD模型为,
二次RD模型在VVC帧内编码中的应用
新的拉格朗日因子可由下式求得,
由公式(4)可推出lambda大于0。
帧级帧内编码的码率控制
下面所有SATD的计算都只考虑Y分量。
1、初始化lambda
C_satd是将帧中所有8x8块的SATD相加除以像素数得到,反映了帧的复杂度。p参数用于补偿帧复杂度C_satd。
2、GOP级码率分配
SW是滑动窗口,设为40。GOP_size是GOP中的帧数,设为16。R_unused是编码当前GOP前未使用的比特数。R_total是整个序列的目标比特数。N_total是整个序列的帧数。N_left是待编码的帧数。
3、帧级码率分配
t表示第t个GOP,i表示GOP中的第i帧。对于序列的第一个GOP,均匀为每帧分配比特。
4、帧级lambda计算
根据公式(7)和(10)可以计算lambda,N_pixel是帧中像素数。
5、QP计算
6、使用上面计算的QP编码当前帧
7、更新帧级模型参数
8、对当前GOP的所有帧重复步骤3到7
9、对当前序列的所有GOP重复步骤2到8
参数更新
1、计算当前模型的对称轴k
2、更新参数a
R_comp是分配的码率,R_real是实际使用的码率。
3、更新对称轴
4、更新参数b
实验结果
实验在VTM2.0上进行,码率控制准确率BRE按下式计算,
实验结果如表2所示,
可以看见classC-classF序列文中算法的码率控制准确率和原始算法相当。其中对于内容变化剧烈的序列BasketballPass和BasketballDrillText效果好了0.01%。对于classB序列文中算法稍差,这是因为在高分辨率视频中RD关系更稳定文中算法在Y分量上平均节省0.77%码率。
感兴趣的请关注微信公众号Video Coding
本文分享自微信公众号 - Video Coding(gh_17eb8f3e0fe7)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。