HEVC 速率控制(码控)介绍

chatgpt/2023/9/26 12:57:38

视频编码速率控制

  1. 速率控制: 通过选择一系列编码参数,使得视频编码后的比特率满足所有需要的速率限制,并且使得编码失真尽量小。
  2. 速率控制属于率失真优化的范畴,速率控制算法的重点是确定与速率相关的量化参数(Quantization Parameter,QP)。
  3. 速率控制的主要工作是建立编码速率与量化参数的关系模型,根据目标码率确定视频编码参数中的量化参数。
  4. 实际的编码速率控制方案通常会被分解成两个步骤:
    ○ 考虑视频在空域、时域的相关性,根据总得目标比特数确定每个编码单元的最优目标比特数,这被称为比特分配
    ○ 依据编码速率有量化参数的关系模型,为每个编码单元根据其目标比特数独立确定其量化参数
  5. 由于编码单元的编码速率主要与量化参数相关,其他编码参数的影响较小,因此编码速率与量化参数有着较为确定的关系,可以基于这一关系直接根据编码单元的目标比特数确定其量化参数。
  6. 当量化参数一定时,视频序列空、时域复杂度越高,产生的编码比特数也越高。
    在这里插入图片描述

缓冲机制

  1. 视频的编码速率与编码参数、编码结构、视频内容等诸多因素密切相关,速率控制算法通常无法保证实际编码速率与目标速率完全一致;

  2. 为了减小实际编码速率与目标速率的差别,通常会在编码器和创术信道间建立一个数据缓存区,称“缓冲(buffer)机制”,用于平滑编码速率与信道速率之间的差别。
    在这里插入图片描述

  3. 缓冲机制可以使编码速率更好地匹配信道速率,但它的存在不但会消耗一定的存储空间,而且会引入延迟;所以缓冲区的大小一般由允许最大时延及运营成本决定

  4. 为了设计含有缓冲区的速率控制算法,通常将缓冲区的动态变化过程用流体流量模型来表示。

  5. 为了有效发挥缓冲区的作用,需要将缓冲区内的数据量维持在一定的水平,以应对信道速率的变化以及编码速率与目标速率的匹配误差;

  6. 使用缓冲区的视频编码速率控制的基本思想:如果实际编码速率比可用的信道带宽高,则多余的比特会在缓冲区中积累;当缓冲区中的比特数累积到一定的高度时,速率控制算法会采用一定措施适量减小实际编码速率,以降低缓冲区的充盈度;反之,当缓冲区充盈度低于一定程度时,速率控制算法会适量增加实际编码速率,使得缓冲区充盈度回升至一定水平。
    在这里插入图片描述

速率控制技术

  1. 首先为编码单元进行目标比特分配,即根据视频内容、缓冲区状态和信道带宽为编码单元分配恰当的目标比特数;进而为编码单元独立确定量化参数实现分配的目标比特,其关键是确定量化参数,因此这个缓解称为量化参数确定。
    在这里插入图片描述

  2. 目标比特分配
    ■ 一个视频序列拥有大量的编码单元,直接对编码单元进行目标比特分配过于复杂,通常采用分级的方式来简化目标比特分配问题,依次可以是 GOP 级、图像级、宏块级;
    ■ 实际编码单元的失真并不是加性的,视频序列的质量并不是所有图像质量的求和或求平均,图像的质量也不是所有宏块质量的求和或求平均,视频时空域质量的一致性已经成为了衡量速率控制算法性能的一个重要方面。

  3. 量化参数确定
    ■ 关键是建立速率-量化参数 (R-QP) 模型。

h265 速率控制

  1. 以往标准所推荐的速率控制算法不能直接用于 h265中,主要因为:时域预测技术使帧间的率失真性能关系复杂;新的帧内预测及运动信息的空间预测使得 CTU 间也有具有复杂的率失真性能依赖关系;新的 CABAC 技术更好的利用了变换系数间的相关性,使得 R-Q 关系更加复杂。
  2. h265 仍然采用传统的两步骤方式:目标比特分配和量化参数确定;
    ○ 目标比特分配的核心在于,考虑视频帧率失真间的相互依赖关系实现图像级的目标比特分配,考虑视频内容的 CTU 级的目标比特分配;
    ○ 量化参数的核心在于,根据视频内容建立编码比特数与量化参数的关系模型;

JCTVC-K0103速率控制算法

  1. JCTVC-K0103 是 h265 测试模型 HM10.0 的速率控制算法,该速率控制算法的主要分两个步骤:根据目标码率为不同编码单元分配目标比特数;根据 R 和拉格朗日因子,拉格朗日因子与 QP 的关系模型确定不同编码单元的量化参数。
    目标比特分配: GOP 级目标比特分配、图像级目标比特分配、CTU 级目标比特分配
    量化参数确定: 双曲函数能够很好地反映 h265 视频码率和失真之间的关系;
    在这里插入图片描述

  2. 量化参数 QP 与 拉格朗日因子之间的关系:
    在这里插入图片描述

  3. 量化参数确定后,即可对当前图像进行编码,该图像编码完成后可得实际编码比特数 bpp^,利用 bpp^可更新参数埃尔法和百塔,以便候选图像速率控制时使用。
    在这里插入图片描述

  4. CTU 级量化参数的确定方法和图像级类似,首先根据目标比特数与拉格朗日因子的 关系得到拉格朗日因子,第 m 个 CTU 的拉格朗日因子为:
    在这里插入图片描述

  5. 需要注意的是,相邻两个 CTU 的 QP 差异不得大于 1,当前 CTU 与其所属图像的 QP 差异不得大于 2。

参考

  1. 新一代高效视频编码H.265HEVC原理、标准与实现 [万帅,杨付正 编著] 2014年版。

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

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

ESP32(MicroPython) 四足机器人(五)功能补充

本次更新增加了前后倾斜(每次动作交换前部和后部高度)、蹲起与抬脚动作,均位于用于连续执行动作的function函数中,但实测抬脚动作需要先启动function函数的另一项功能才能正常开启,代码检查无误,应该是Micr…

官方实锤!AMD真的已经有了大小核:不搞Intel那一套

Intel 12代酷睿开始引入大小核混合架构,多核跑分提升立竿见影,在游戏、渲染等场景中也有很好的辅助作用,但因为大核心、小核心基于完全不同的架构,需要复杂的系统、软件调度配合,也直接导致失去了AVX-512指令集。 AMD也…

一篇文章帮你弄懂邻接矩阵,邻接表和链式前向星的区别

前言: 在学C的时候,面对各种各样的存图方式,脑子都大了不少,各种算法还在向我冲来,结果一个邻接矩阵/邻接表/链表轻松给了我一下暴击就直接让我KO了,趁着脑子还算清楚,详细的介绍下这三种存图方…

认识springboot 之 了解它的日志 -4

前言 本篇介绍springboot的日志,如何认识日志,如何进行日志持久化,通过日志级别判断信息,了解Lombok插件的使用,通过Lombok自带注释更简洁的来完成日志打印,如有错误,请在评论区指正&#xff0…

笙默考试管理系统-MyExamTest(22)

笙默考试管理系统-MyExamTest(22) 目录 一、 笙默考试管理系统-MyExamTest 二、 笙默考试管理系统-MyExamTest 三、 笙默考试管理系统-MyExamTest 四、 笙默考试管理系统-MyExamTest 五、 笙默考试管理系统-MyExamTest 笙默考试管理系统-MyExa…

c++(强生成关键字+可变参数模板+emplace)[26]

强制生成 不生成 在C中,可以通过一些方式来控制编译器是否生成某些特殊成员函数(如默认构造函数、拷贝构造函数、拷贝赋值运算符、析构函数等)。 默认生成:如果你没有显式地定义这些特殊成员函数,编译器会自动生成它们…

【性能优化篇】.ttf字体包过大引起的网页加载过慢 font-spider 压缩字体包 适用于任何前端项目

背景 项目使用的是阿里巴巴普惠2.0字体,型号分别是 35-thin 和 45-light 这两个字体包 都是 8mb 左右 本地加载的时候可能速度不会收影响,发到生产和测试环境下,速度会很慢,尤其是测试环境,字体包加载了一分钟&#…

Qt+OpenCV+VTK在VS2017中配置路径

QtOpenCVVTK在VS2017中配置路径 《Qt环境配置》《OpenCV环境配置》《VTK环境配置》 《Qt环境配置》 包含目录: D:\Qt\Qt5.12.11\5.12.11\msvc2017_64\include D:\Qt\Qt5.12.11\5.12.11\msvc2017_64\include\QtWidgets D:\Qt\Qt5.12.11\5.12.11\msvc2017_64\include…
推荐文章