H266/VVC率失真优化与速率控制概述

2024-01-08 09:44

本文主要是介绍H266/VVC率失真优化与速率控制概述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

率失真优化技术

率失真优化: 视频编码的主要目的是在保证一定视频质量的条件下尽量降低视频的编码比特率,或者在一定编码比特率限制条件下尽量地减小编码失真。在固定的编码框架下,为了应对不同的视频内容,往往有多种候选的编码方式,编码器的一个主要工作就是在某种策略选择最优的编码参数,以实现最优的编码性能。基于率失真理论的编码参数优化被称为率失真优化,率失真优化技术是保证编码器效率的主要手段。

率失真理论: 在允许一定程度失真的条件下,能够把信源信息压缩到什么程度?也就是说,最少需要多少比特才能描述信源?针对这个问题,香农在1959年发表了 《保真度准则下的离散信源编码定理》 ,定义了信息率失真函数R(D),并讨论了其相关基本定理。之后,率失真理论逐渐受到了人们的重视。

互信息量:对于两个离散随机事件集X和Y,事件 yj 的出现给出的关于事件 xi 的信息量定义为互信息量 I(xi; yj) ,其定义公式如下。由公式可以看出,互信息量为后验概率与先验概率比值的对数。互信息量的单位与自信息量一样取决于对数的底。
在这里插入图片描述
失真度:设离散无记忆信源[X; P] = [x1, …xN; p(x1),…p(xN)]经过信道传输后接收端的离散变量Y的概率空间为[Y; P] = [y1, …yN; p(y1),…p(yN)]。对于每对(xi, yj),指定一个非负的函数d(xi, yj)>=0,称其为单个符号的失真度或失真函数。
规定了单个符号的失真度之后,传输一个符号引起的平均失真度,即信源的平均失真度如下公式。
在这里插入图片描述
不同的信源符号和不同的接受符号,产生的失真不同,但平均失真度已对信源和信道进行了统计平均,所以平均失真度可描述某一信源在某一试验信道传输下的失真大小,可从整体上描述系统的失真情况。

率失真函数:接收端获得的平均信息量可用平均互信息量I(X, Y)来表示,这就变成这在满足保真度准则的条件下,寻找平均互信息量的最小值。这个最小值就是在满足保真度准则的条件下,信源必须传输的最小平均信息量,如下公式,就是信息率失真函数,简称率失真函数。
在这里插入图片描述
率失真函数R(D)的一半曲线图形如下图。
在这里插入图片描述
率失真信源编码定理:保真度准则下信源编码定理、保真度准则下信源编码逆定理。

视频编码中率失真优化

视频压缩的目标:在保证视频质量的都前提下尽量降低视频流的压缩码率。
视频失真测度:平方误差和SSE、均方误差MSE、绝对误差和SAD、峰值信噪比PSNR。
视频率失真曲线:
在这里插入图片描述
视频编码率失真优化:不同的编码参数可以得到不同的率失真性能,最优的编码方案就是在编码系统定义的所有编码参数中使用能够使系统性能最优的参数值,视频编码系统中的率失真优化就是基于率失真理论选择最优的编码参数。拉格朗日优化法是视频率失真中最常见和最有力的优化工具。

H266中的率失真优化

H266采用了更先进的编码算法和多种高效的编码工具,因此编码过程也面临更多的编码参数选择。因此,拉格朗日优化方法在图像组层、片层、CTU层和CU层都发挥了重要的应用。

速率控制

速率控制:通过一系列编码参数,使得视频编码后的比特率满足所需要的速率限制要求,并且使编码失真最小。速率控制术语率失真的范畴,速率控制算法的重点是确定与速率相关的量化参数。

缓冲机制:视频的编码速率与编码参数、编码结构、视频内容等诸多因素密切相关,速率控制算法通常无法保证实际编码速率与目标速率完全一致。为了减小二者之间的差别,通常会在编码器和传输信道间建立一个数据缓冲区,称为“缓冲机制”,用于平滑编码速率与信道速率之间的差别。如下图。
缓冲机制可以使编码速率更好地匹配信道速率,但会消耗存储空间和带来时延。因此,实际应用中,缓冲区的大小由允许最大时延及运营成本决定。
在这里插入图片描述
流体流量模型:为了设计含缓冲区的速率控制算法,通常将缓冲区的动态变化过程用流体流量模型来表示,如下图。
在这里插入图片描述
速率控制技术: 主要分为两个模块,即目标比特分配量化参数的确定。在视频编码中的速率控制过程如下图。H266标准的速率控制算法仍然采用传统的两步骤方式。
在这里插入图片描述

参考

JVET输出文档: https://www.itu.int/wftp3/av-arch/jvet-site/
书籍: 新一代通用视频编码H266/VVC:原理、标准与实现[万帅 霍俊彦 马彦卓 杨付正/著]

备注

本系列博客主要是对《新一代通用视频编码H266/VVC:原理、标准与实现》的学习笔记。

这篇关于H266/VVC率失真优化与速率控制概述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/583062

相关文章

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

小白也能轻松上手! 路由器设置优化指南

《小白也能轻松上手!路由器设置优化指南》在日常生活中,我们常常会遇到WiFi网速慢的问题,这主要受到三个方面的影响,首要原因是WiFi产品的配置优化不合理,其次是硬件性能的不足,以及宽带线路本身的质... 在数字化时代,网络已成为生活必需品,追剧、游戏、办公、学习都离不开稳定高速的网络。但很多人面对新路由器

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python远程控制MySQL的完整指南

《Python远程控制MySQL的完整指南》MySQL是最流行的关系型数据库之一,Python通过多种方式可以与MySQL进行交互,下面小编就为大家详细介绍一下Python操作MySQL的常用方法和最... 目录1. 准备工作2. 连接mysql数据库使用mysql-connector使用PyMySQL3.

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、