H265码率控制(一)之HM代码R-λ model介绍

前言

        在HM中R-λ的码率控制引入是在k0103提案中开始引入的,代码是HM-8.0以后的版本出现的,后面经过多个提案不断的修改,如M0257提案,M0036提案等;笔者建议研究HM代码的R-λ码率控制从HM10.0版本开始这个版本的R-λ已经存在且bug比较少。

一、R-λ model介绍

1、R-D model介绍

        在了解R-λ model前建议先了解下R-D model,因为R-λ model是根据R-D model推导而来。

        指数形式的R-D函数:

        双曲线形式的R-D函数 :

        C和K是和输入图像特征相关的模型参数,D是亮度分量的MSE(Mean Square Error);

        如下图指数形式的R-D(虚线)和双曲线形式的R-D(实线)在不同视频上的测试结果,可以看出双曲线的平均相关系数^{​{R_{}}^{2}}大于0.99,指数形式的平均相关系数^{​{R_{}}^{2}}仅为0.92左右。可以看出对于 H265,双曲线模型在表征 R-D 关系方面优于指数模型。

         上图中bpp为每个像素的bits数,计算公式如下:

        R是目标码率,f为帧率,w和h为图像宽高; 

        MSE的计算公式如下:

        N为图像的总像素数,rec和org分别是重建像素和原始像素; 

2、R-λ model的来源

        λ 作为 双曲线R-D model曲线的斜率,公式如下:

        α 和β 是和输入图像特征相关的模型参数。

        下图是λ和bpp在不同视频上的特征曲线。

二、基于R-λ 的码率控制介绍

1、HM中Seq(序列)级码率控制 

      序列级码率控制的公式:

        R_{SeqTotal } 是全部图像序列预计bits,R_{left}是剩余未编码的bits,N是待编码的帧数,R_{tar}是编码的目标码率(bits) ;

 R_{codec }是以及编码的bits,N_{code}是已经编码的帧数。

此外每一帧的平均bits公式为:

 2、GOP级码率控制

        GOP级码率控制的公式:

         N_{coded}是已经编码的图像个数,SW为平滑窗口大小,R_{codec }为编码的bit代价。

         T_{GOP} 是当前GOP的目标码率,N_{GOP}是当前GOP的大小。

3、图像级码率控制

        图像级码率控制的公式:

         ωi是当前GOP中每个图片的比特分配权重。低延迟(gop为4)中不同图片的权重分配如下表:

        根据不同的权重可以给不同帧分配不同的bits,实际编码出来的帧大小如下图所示:

         如果是帧内图像则乘一个系数放大目标码率,系数如下表:

         非低延迟场景下的权重分配如下:

          非低延迟场景下的I帧bits放大系数如下:

 4、宏块级码率控制

        T_{CurrPic}当前宏块的目标码率

        Bit_{header}是编码帧头bit数如sliceHeader等,通过前一个同级别已经编码帧估计来的。ωi是当前图像中每个宏块的比特分配权重,根据MAD预测的来。

5、QP的计算公式

6、α 和β 参数的更新

        其中δα = 0.1, δβ= 0.05。

7、QP范围限制

        帧级QP的限制。

         宏块级QP限制 。

三、R-λ的改进

1、M0257-帧级码率控制的改进

        在M0257提案提出了一种帧内码率控制方案。在R-λ关系上进一步加入了复杂度C的影响。 

        帧级λ改进前: 

         帧级λ改进后:

        复杂度C基于SATD来度量,SATD是将Hadamard变换应用于原始8×8块后获得的系数绝对值之和。 

2、M0257-宏块级码率控制的改进

        M0257提案提出了一种帧内码率控制方案。在R-λ关系上进一步加入了复杂度C的影响。宏块级码控的改进-宏块bit分配权重:

        当前帧剩余可分配bit: 

        _{}R_{left}是当前剩余码率,\widetilde{R}_{left}是计算后新的剩余码率,M当前帧总的宏块数,W为平滑窗口数。

当前宏块的目标码率T_{CurrPic}计算公式为:

 

3、 M0036-帧级码率控制的改进

        通过提出一种求解数值方程的方法解出当前帧的权重,不同的帧不同的权重,不同的权重不同的bits分配。

        上式表明所有帧分配的bits总和应该等于GOP的目标bits数。 λ之间的比值如下公式:

        HM中对应的代码如下: 

        上面的代码主要作用是利用前一帧的lambda来计算新GOP中每个帧的bits分配的权重, 以及为新GOP中每个帧与分配一个初始目标码率(bits) 。然后根据GOP中每一个帧的bit权重计算当前帧的目标码率(bits),代码如下:

4、 M0036-宏块级码率控制的改进

和帧级一样M0036也有为宏块码率控制进行改进,为当前帧中每一个宏块与分配一个初始化bits权重,代码如下:

根据每个宏块的权重来计算每个宏块的目标bits和bpp,代码如下:

 最后:

        R-λ model还在改进中,新的HM会有新的改进提案,这里就不再记录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/522140.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1.基础乐理-唱名与记住唱名的方法

首先有 0、1、2、3、4、5、6、7,这八个数字 在音乐中要用笔来记录音乐就要用到 0、1、2、3、4、5、6、7,这八个数字,如果我们要唱出来 或 说出来,只要用嘴巴说出来就不是用 0、1、2、3、4、5、6、7,这八个数字了&…

雄安新区:创新引领,未来产业的摇篮

雄安新区:创新引领,未来产业的摇篮 随着雄安新区的建设不断推进,这座未来之城正逐渐成为创新的高地和创业的热土。在这片充满希望的土地上,全过程创新生态链正在形成,为未来产业的发展提供了坚实的基础。 创新高地&a…

机器学习(五) -- 监督学习(3) -- 朴素贝叶斯

系列文章目录及链接 目录 前言 一、朴素贝叶斯通俗理解及定义 二、原理理解及公式 1、概率基础 2、贝叶斯公式 3、拉普拉斯平滑系数 三、**算法实现 四、接口实现 1、新闻数据集介绍 2、API 3、流程 3.1、获取数据 3.2、数据预处理 3.3、特征工程 3.4、朴素贝叶…

java代码混淆,保护源码的重要性

Java代码混淆是一种重要的安全措施,用于保护Java应用程序的源代码免受恶意攻击和逆向工程的影响。下面是关于Java代码混淆以及保护源码重要性的详细说明: 1. 什么是Java代码混淆? Java代码混淆是指通过对Java代码进行一系列的转换和优化&am…

SD卡误删怎么恢复?5个恢复方法助你找回数据!

“我刚刚在清理sd卡时突然发现sd卡里的部分文件误删了,大家有什么方法可以恢复sd卡重要文件吗?” SD卡,作为一种常见的存储设备,经常用于手机、相机等电子设备中,存储着大量的数据。然而,误删操作往往会导致…

容器和K8s常见概念

【容器】 1、Open Container Initiative(OCI):制定和推动容器格式和运行时的开放标准。容器运行时需要遵循此标准。主要的产出物包括: OCI Image Specification: 定义容器镜像格式的规范,统一描述容器镜像的内容和结…

CSS - 你能尽量多的说出两边固定,中间自适应的三栏布局如何做吗

难度级别:初级及以上 提问概率:65% 前端面试中,布局类题目被问道的频次会非常高,这道题,我们通过以下四种方式来实现。 目录 1 使用flex布局 2 使用绝对定位和margin配合的方式

CSS属性计算逻辑

CSS 属性计算逻辑 首先&#xff0c;假设在 HTML 中有这么一段代码&#xff0c;在 body 中有一个 h1 标题&#xff1a; <body><h1>这是一个h1标题</h1> </body>目前我们没有设置该 h1 的任何样式&#xff0c;但是却能看到该 h1 有一定的默认样式&…

ArcGIS Server 数据存储之注册文件夹及数据库

使用 ArcGIS Server 管理器将数据目录和数据库注册到 ArcGIS Server。数据注册为服务器提供了服务源数据的来源位置列表。数据注册具有以下优点&#xff1a; 数据注册可帮助您验证服务是否引用服务器管理员已知和批准的数据位置。数据注册允许 ArcGIS Server 在将地图、模型或…

QT软件开发: 点击鼠标在窗口里绘制矩形(窗口透明背景)

QT软件开发: 点击鼠标在窗口里绘制矩形(窗口透明背景)-腾讯云开发者社区-腾讯云 一、功能需求 一般在软件开发中&#xff0c;需要都有选择区域的需求&#xff0c;比如&#xff1a; 1. 截图软件&#xff0c;需要鼠标选择指定区域截图 2. 屏幕录像软件&#xff0c;需要鼠标选…

在git上先新建仓库-把本地文件提交远程

一.在git新建远程项目库 1.选择新建仓库 以下以gitee为例 2.输入仓库名称&#xff0c;点击创建 这个可以选择仓库私有化还公开权限 3.获取仓库clone链接 这里选择https模式就行&#xff0c;就不需要配置对电脑进行sshkey配置了。只是需要每次提交输入账号密码 二、远…

QT 线程之movetothread

上文列举了qt中线程的几种方法&#xff0c;其中2种方法最为常见。 本文以实例的方式描述了movetothread&#xff08;&#xff09;这种线程的方法&#xff0c;将QObject的子类移动到指定的线程。 一、例子 1. Worker类 1.1Worker类头文件 #ifndef WORKER_H #define WORKER_H…

量化《水手》

量化技术的两个指标是压缩比和保真度。这里使用郑智化《水手》中的一段音乐&#xff0c;对Lloyd标量量化方法和LBG矢量量化方法做对比。 原始的音乐是WAV格式&#xff0c;时长9秒钟&#xff0c;单声道&#xff0c;采样率为44.1KHz&#xff0c;每个采样点的比特数为16。 首先对…

HTTPS证书是什么?怎么获取?

HTTPS证书&#xff0c;全称是安全套接层&#xff08;SSL&#xff09;或传输层安全&#xff08;TLS&#xff09;证书&#xff0c;是一种数字证书&#xff0c;用于在互联网上建立安全的加密连接&#xff0c;确保数据在客户端&#xff08;如Web浏览器&#xff09;与服务器端&#…

评论列表信息删除功能的实现

需求&#xff1a;删除当前评论&#xff0c;并且在列表中不再显示 核心思路&#xff1a;拿到即将被删除的列表信息id,对列表进行filter过滤 1.定义渲染列表信息 2.添加渲染删除条件&#xff08;如果当前登录用户信息的uid和渲染列表信息里的uid保持一致&#xff0c;那么就将删…

VMwear桥接网络正确配置+静态IP设置

1.桥接网络配置 很多时候在VMware安装完虚拟机之后&#xff0c;会发现配置的桥接网络没有起作用&#xff0c;如果是Linux下输入ifconfig发现只有ipv6的地址而没有ipv4&#xff0c;说明没有桥接没有启用成功&#xff0c;需要按照以下方式来设置 在VMware的左上角打开编辑&#…

ENSP USG防火墙接入虚拟机;开启Web访问;

1.添加防火墙及云&#xff0c;启动防火墙&#xff1b; 2.配置桥接网卡&#xff1b; 默认账户&#xff1a;admin 默认密码&#xff1a;Admin123 #第一次登陆需修改密码&#xff1b; 默认G0/0/0口为管理口&#xff0c;而在模拟器中进入防火墙的web需如下配置&#xff1a; 配置 …

面试(02)————Java基础和集合

一、Java基础知识 1、面向对象的特征 2、Java 的基本数据类型有哪些 3、JDK JRE JVM 的区别 4、重载和重写的区别 5、Java中和equals的区别 6 、String、StringBuffer、StringBuilder三者之间的区别 7、接口和抽象类的区别是什么&#xff1f; 8、反射 9、jdk1.8 的新特…

力扣刷题--不同的二叉搜索树96

不同的二叉搜索树 该题虽然是一个二叉树的题目 但是使用动态规划做 dp[i]数组的含义&#xff1a;i个节点有多少种组合方式递推公式&#xff1a;dp[i] dp[j] dp[i-1-j] j(0–>i-1)初始化&#xff1a;dp[0]1 dp[1] 1确定递推顺序 i(2–>n) j(0–>i-1)推导一遍 c…

后端说处理了跨域但没有生效

场景&#xff1a; 常见的跨域报错&#xff0c;一般都是由后端进行setHeader/*什么的。但是现在这种情况就是后端说他们做了处理。但是我这边请求还是报错。 withCredentials: with-credentials用来设置是否发送cookie&#xff0c;如果为true就会在跨域请求时候携带cookie&…