ICASSP2020:VVC帧内码率控制二次模型

Stella981
• 阅读 784

ICASSP2020:VVC帧内码率控制二次模型

本文来自ICASSP2020论文《INTRA FRAME RATE CONTROL FOR VERSATILE VIDEO CODING WITH QUADRATIC RATE-DISTORTION MODELLING》

ICASSP2020:VVC帧内码率控制二次模型

本文在VVC中提出了新的二次R-D模型,在VTM2.0平台帧内编码模式下相对于默认码率控制算法在相似控制精度下可达到0.77% BD-BR。

R-D模型

VVC中传统的RD模型

VVC中RD模型是双曲线模型,

ICASSP2020:VVC帧内码率控制二次模型

其中失真D用MSE度量,码率R用bpp(bit per pixel)度量。C和K是模型参数,与视频内容有关。

ICASSP2020:VVC帧内码率控制二次模型

根据拉格朗日优化求导后可得到lambda。

本文RD模型

由于VVC添加了很多新的编码工具,原来的RD关系已经不能适用了,本文提出了新的RD模型:

ICASSP2020:VVC帧内码率控制二次模型

这是关于lnR的二次模型,a,b,c是模型参数,与视频内容有关。

为了验证模型的准确性,文中在All intra配置下编码了11个序列,使用4个QP(22,27,32,37),并设置_TemporalSubsampling_=1。对每个序列取前20帧的亮度失真和码率。每条序列可以获取到80个数据点用最小二乘法拟合原始双曲线模型和文中提出的二次模型的参数,拟合结果如Fig.1,

ICASSP2020:VVC帧内码率控制二次模型

使用相关系数R方来衡量哪个模型更能反映真正的RD关系。R方越接近1表示相关性越强。结果如表1所示,

ICASSP2020:VVC帧内码率控制二次模型

BasketballPass序列运动目标很多内容变化快,BlowingBubbles序列纹理复杂,在整两条序列上文中算法都优于原始算法。

对于二次函数,当a>0时,对称轴-b/2a左边单调递减,对称轴右边单调递增。为了避免随着码率R增加,失真D也单调递增的情况,需要满足下面的条件,

ICASSP2020:VVC帧内码率控制二次模型

此外,码率和失真都是正值,所以最小的失真也要大于0,

ICASSP2020:VVC帧内码率控制二次模型

最终提出的RD模型为,

ICASSP2020:VVC帧内码率控制二次模型

二次RD模型在VVC帧内编码中的应用


新的拉格朗日因子可由下式求得,

ICASSP2020:VVC帧内码率控制二次模型

由公式(4)可推出lambda大于0。

帧级帧内编码的码率控制

下面所有SATD的计算都只考虑Y分量。

1、初始化lambda

ICASSP2020:VVC帧内码率控制二次模型

C_satd是将帧中所有8x8块的SATD相加除以像素数得到,反映了帧的复杂度。p参数用于补偿帧复杂度C_satd。

2、GOP级码率分配

ICASSP2020:VVC帧内码率控制二次模型

SW是滑动窗口,设为40。GOP_size是GOP中的帧数,设为16。R_unused是编码当前GOP前未使用的比特数。R_total是整个序列的目标比特数。N_total是整个序列的帧数。N_left是待编码的帧数。

3、帧级码率分配

ICASSP2020:VVC帧内码率控制二次模型

t表示第t个GOP,i表示GOP中的第i帧。对于序列的第一个GOP,均匀为每帧分配比特。

4、帧级lambda计算

ICASSP2020:VVC帧内码率控制二次模型

根据公式(7)和(10)可以计算lambda,N_pixel是帧中像素数。

5、QP计算

ICASSP2020:VVC帧内码率控制二次模型

6、使用上面计算的QP编码当前帧

7、更新帧级模型参数

8、对当前GOP的所有帧重复步骤3到7

9、对当前序列的所有GOP重复步骤2到8

参数更新

1、计算当前模型的对称轴k

ICASSP2020:VVC帧内码率控制二次模型

2、更新参数a

ICASSP2020:VVC帧内码率控制二次模型

R_comp是分配的码率,R_real是实际使用的码率。

3、更新对称轴

ICASSP2020:VVC帧内码率控制二次模型

4、更新参数b

ICASSP2020:VVC帧内码率控制二次模型

实验结果


实验在VTM2.0上进行,码率控制准确率BRE按下式计算,

ICASSP2020:VVC帧内码率控制二次模型

实验结果如表2所示,

ICASSP2020:VVC帧内码率控制二次模型

可以看见classC-classF序列文中算法的码率控制准确率和原始算法相当。其中对于内容变化剧烈的序列BasketballPass和BasketballDrillText效果好了0.01%。对于classB序列文中算法稍差,这是因为在高分辨率视频中RD关系更稳定文中算法在Y分量上平均节省0.77%码率。

感兴趣的请关注微信公众号Video Coding

ICASSP2020:VVC帧内码率控制二次模型

本文分享自微信公众号 - Video Coding(gh_17eb8f3e0fe7)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这