HEVC 率失真优化技术介绍

news2024/7/4 5:26:43

背景

  1. 为了将具有庞大数据量的视频在有限信道内传输、存储、高压缩率的编码算法往往会造成编码重建视频与原始视频存在差别,即重建视频产生失真,该类压缩被称为有损压缩
  2. 对于有损压缩算法,其性能需要根据编码输出的比特率和编码带来的失真度共同衡量;编码比特率和失真度相互制约、相互矛盾、如降低比特率往往会增加视频的失真度,相反要想获得更好的视频质量,又会提高视频的编码比特率。
  3. 视频编码的主要目的就是在保证一定视频质量的条件下尽量减少编码比特率,或者在一定编码比特率限制条件下尽可能的减少编码失真。
  4. 在固定的编码框架下,为了应对不同的视频内容,往往有多种候选的编码方式,编码器的一个主要工作就是以某种策略选择最优的编码参数,以实现最优的编码性能,基于率失真理论的编码参数优化方法被称为率失真优化,率失真优化技术是保证编码器编码效率的主要手段

率失真优化技术

  1. 互信息量
    ○ 信源发出的消息称为信道输入消息,信宿收到的消息称为信道输出消息,由于信道噪声,信道输入消息与信道输出的消息不一定相同;
    在这里插入图片描述
    ○ 对于两个离散随机事件 X、Y,事件 yj 的出现给出的关于事件 xi 的信息量定义为互信息量 I(xi,yj);即互信息量定义为后验概率与先验概率比值的对数
    ○ 互信息量是一种消除不确定性的度量,即互信息量等于先验的不确定性减去上存在的不确定性。
    ○ 从整体上表示一个随机变量 Y 所给出关于另一个随机变量 X 的信息量,用互信息量在 X 和 Y 的联合概率空间中的统计平均值为随机变量 X 和 Y 间的平均互信息量来表示。
    在这里插入图片描述

  2. 失真度
    ○ 允许失真越大,信息传输速率可越小,允许失真越小,则信息传输速率越大;所以信息传输速率与信源编码引起的失真是相关的,并且信宿收到消息的失真只是由信源编码引起的;
    ○ 对于每一对(xi,yj),指定一个非负的函数 d(xi, yj) >=0,称d(xi, yj)为耽搁符号的失真度或失真函数,用来表示信源发出一个符号 xi,而在接收端再现 yj 所引起的误差或失真大小;
    ○ 常见的失真函数是平均失真、绝对失真、相对失真;

  3. 率失真函数
    ○ 假设信源输出的信息速率为 R,在信道容量为 C 的信道上传输,如果 R>C,就需要对信源进行压缩,使压缩后信源输出的信息速率 R*小雨信道容量 C,此压缩过程必然会引入失真;
    ○ 对于压缩,总是希望在满足一定失真的情况下,使信源必须传输给收信者的信息传输速率 R 尽可能小;从接收端来看,就是满足保真度准则在,寻找再现信源消息所必需获得的最低平均信息量;
    ○ 在满足保真度准则的条件下,信源必须传输的最小平均信息量,就是信息率失真函数,简称率失真函数;
    ○ 率失真函数 R(D)是在假定信源给定的情况下,在用户可以容忍的失真度内再现信源消息所必须获得的最小平均互信息量;
    ○ 率失真函数反映了信源可以压缩的程度,只反映信源的特性,不同的信源其信息率失真函数不同;
    ○ 率失真函数对于信源编码有指导意义,但实际信源计算 R(D)很困难,因为信源符号的概率分布很难确知,即使知道也很困难,因为它是一个条件极小值的求解问题;
    在这里插入图片描述

  4. 率失真信源编码定理
    ○ 率失真信源编码定理就是关于信息率和失真关系的一个极限定理,也称为香农第三定理,即保真度准则下的离散信源编码定理;
    保真度准则下信源编码定理:对于任何失真度 D>=0,只要码长 l 足够长,总可以找到一种编码 C,使编码后每个信源符号的信息传输速率R^=R(D)+e;
    在这里插入图片描述

保真度准则下信源编码逆定理:如果编码后平均每个信源符号的信息传输速率 R^小于信息率失真函数 R(D),就不能在保真度准则下再现信源的消息;

视频编码中的率失真优化

  1. 对于视频编码通常采用统一的编码框架,如基于块的混合编码框架,率失真优化是指从有限多种候选编码参数中选择最优编码参数;

  2. 视频失真测度
    ■ 视频的客观失真测度应与人类视觉系统的感知失真一致;
    ■ 实际应用中经常采用 SSE、MSE、SAD、PSNR;

  3. 视频率失真曲线
    ■ 码率和失真的关系可以用一条光滑的下凸单调曲线刻画,称为率失真曲线;
    ■ 率失真优化的目的就是找到一组编码参数使得对应的可操作点尽可能接近凸包络,也就是一组可能的操作点中确定能使系统性能最优的操作点;
    在这里插入图片描述

  4. 视频编码率失真优化
    ■ 不同的编码参数可以得到不同的率失真性能,最优的编码方案就是在编码系统定义的所有编码参数中使用能够使系统性能最优的参数值,视频编码系统中的率失真优化就是基于率失真优化理论选择最优的编码参数;
    ■ 对于限定性优化问题,求解方法通常有动态规划法和拉格朗日优化法,其中拉格朗日优化方法是视频率失真优化中最常见和最有力的优化工具;
    ■ 约束性问题可以通过引入拉格朗日因子,转换为非约束性问题;
    在这里插入图片描述

h265 中的率失真优化方法

  1. 率失真优化技术不属于视频编码标准化的范畴,编码器可以使用不同的优化方法选择编码参数;
  2. 视频图像组的率失真优化
    ○ 对于给定的图像组,视频便秘的率失真优化是在满足该图像组编码比特数(目标比特数)限制下获取一组最佳的编码参数集,使用该参数集可以获得最优的重建视频质量;
    ○ 图像组率失真优化可以通过依次独立确定每幅图像的最优编码参数来实现,每一幅图像通过 wi 值来反映其与后续图像率失真性能的依赖关系;
  3. 片层的率失真优化
    ○ 空域预测关系复杂多变,CTU 间率失真性能的相关关系更难描述;片层的率失真优化的关键是明晰 CTU 间率失真性能的关系;
  4. CTU 层率失真优化
    ○ CTU 是 h265 的基本编码单元,可以把 CTU 编码参数的优化过程分为:CTU 层主要选择不同的 CU 划分模式、CU 层主要选择不同的 PU 模式和 TU 模式、PU 层主要选择不同的预测模式;
    ○ CTU 层的率失真的目的是确定最优的 CU划分模式,也称CU 的模式选择;
    ○ CTU 层的 CU 模式选择的率失真优化问题可以描述为:在总比特数 R 受限的情况下,选择一个 CU 划分模式,使得一个 CTU 的总失真 D 最小;
  5. CU 层率失真优化
    ○ CU 层率失真优化的目的是确定最优的 PU 模式和 TU 模式,可以描述为:在总比特殊 R 受限的情况下,适当的选择一个 PU 模式和 TU 模式,是的一个 CU 的总失真 D 最小;
    ○ TU 模式会影响 PU 编码参数的选择,为了降低计算复杂度,只对最优 PU 模式尝试不同的TU 模式;
  6. PU 层率失真优化
    ○ PU 层率失真的目的是为当前 PU 选择最优的预测模式和预测参数;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mongo 集群部署

1. 集群架构 # mongos:提供路由数据库集群请求的入口,所有的请求都通过 mongos 进行协调,不需要在应用程序添加一个路由选择器,mongos 自己就是一个请求分发中心,它负责把对应的数据请求转发到对应的 shard 服务器上。在生产环境通常有多 mongos 作为请求的入口,防止其中…

消息服务概述

消息服务的作用: 在多数应用尤其是分布式系统中,消息服务是不可或缺的重要部分,它使用起来比较简单,同时解决了不少难题,例如异步处理、应用解耦、流量削锋、分布式事务管理等,使用消息服务可以实现一个高…

适用于 Linux 系统的综合日志审计和报告

从 Linux 设备以及各种其他日志源收集日志,并从单个控制台监控它们,以轻松了解网络活动。 Linux 系统日志如何工作 Linux 操作系统日志包含多个日志文件,其中包含有关网络中发生的事件的详细信息。在服务器上执行的每个操作都可以通过日志进…

【C语言】从零开始学习数组

🍁 博客主页:江池俊的博客 💫收录专栏:C语言——探索高效编程的基石 💻 其他专栏:数据结构探索 💡代码仓库:江池俊的代码仓库 🎪 社区:C/C之家社区 🍁 如果觉…

【项目方案】OpenAI流式请求实现方案

文章目录 实现目的效果比对非stream模式stream模式实现方案方案思路总体描述前端方案对比event-source-polyfill代码示例前端实现遇到的问题与解决方法后端参考资料时序图关键代码示例后端实现时遇到的问题与解决方法实现目的 stream是OpenAI API中的一个参数,用于控制请求的…

UE5.1.1 创建C++项目失败

因一直使用Unity开发环境,安装Unreal后,并未详细配置过其开发环境,默认创建蓝图工程无异常,但创建UE C项目时总共遇到两个错误: 错误一 Running /Epic/UE/UE_5.1/Engine/Build/BatchFiles/Build.bat -projectfiles -…

LeetCode 75 第十二题(11)盛最多水的容器

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 配合着示例给出的图片我们可以得知找出盛水最多的容器是什么意思,给一个数组,找出数组中两个元素能围成的最大的矩阵面积是多少. 比较直观的想法是套两层for循环暴力解出来,但是这题是中等难度题,一般中等题是没法用暴力得…

OSI七层模型——第2层数据链路层

目录 1 数据链路层的用途 1.1 数据链路层 1.2 IEEE 802LAN/MAN 数据链路子层 1.3 提供介质访问 1.4 数据链路层标准 2 拓扑 2.1 物理和逻辑拓扑 2.2 WAN 拓扑 2.3 点对点 WAN 拓扑 2.4 LAN 拓扑 2.5 半双工和全双工通信 2.6 访问控制方法 2.7 基于竞争的访问 - CS…

Excel录制宏批处理:避免重复工作,轻松提升效率

在处理大量数据时,我们常常需要进行一些重复且繁琐的操作,这不仅费时费力,还容易出错。而Excel的录制宏批处理功能可以帮助我们避免这些重复的工作,提高工作效率。本文将为您介绍如何使用Excel的录制宏批处理功能,让您…

【CesiumJS材质】(1)圆扩散

效果示例 最佳实践: 其他效果: 要素说明: 代码 /** Date: 2023-07-21 15:15:32* LastEditors: ReBeX 420659880qq.com* LastEditTime: 2023-07-27 11:13:17* FilePath: \cesium-tyro-blog\src\utils\Material\EllipsoidFadeMaterialP…

在CSDN学Golang云原生(Kubernetes声明式资源管理Kustomize)

一,生成资源 在 Kubernetes 中,我们可以通过 YAML 或 JSON 文件来定义和创建各种资源对象,例如 Pod、Service、Deployment 等。下面是一个简单的 YAML 文件示例,用于创建一个 Nginx Pod: apiVersion: v1 kind: Pod m…

基于Velocity开发代码生成器

一、引言 在项目开发中,我们有碰到大量的简单、重复的增删改查需求,通过阅读若依框架https://github.com/yangzongzhuan/RuoYi 的代码生成器实现,结合我项目所用的技术栈,开发出本项目的代码生成器。 二、Velocity 简单介绍 1、…

【C++入门】浅谈类、对象和 this 指针

文章目录 一、前言二、类1. 基本概念2. 类的封装3. 使用习惯成员函数定义习惯成员变量命名习惯 三、对象1. 基本概念2. 类对象的存储规则 四、this 指针1. 基本概念2. 注意事项3. 经典习题4. 常见面试题 一、前言 在 C 语言中,我们用结构体来描述一个事物的多种属性…

Markdown常用标签及其用途-有示例

Markdown常用标签及其用途 Markdown是一种轻量级标记语言,具有简洁易读的特点。下面是一些常用的Markdown标签以及它们的用途,并附带一些示例: 标题 用于创建不同级别的标题,可通过添加一到六个#符号来表示不同级别的标题。 #…

yolov5的后处理解析

由于最近实习项目使用到了yolov5, 发现对yolov5的后处理部分不太熟悉,为防止忘记,这里简单做个记录。 在yolov5里,利用FPN特征金字塔,可以得到三个加强特征层,每一个特征层上每一个特征点存在3个先验框&am…

自动化测试到底用Python还是Java?因为这个我和同事闹翻了

现在的软件测试工程师,必备的技能之一就是需要掌握自动化。对于那些不会自动化的测试工程师来说,被淘汰的概率会越来越大。因此大家通过各种途径开始学习自动化。但是刚开始都会面临一个棘手的问题:应该学习哪种编程语言进行自动化测试呢&…

Echarts 显示双Y轴

option 对象 option {yAxis: [{ name: 重量(kg), position: left, type: value },{ name: 金额(元), position: right, type: value }],xAxis: { type: category },legend: {},series: [{name: 剩余量,label: { normal: { show…

2023年全国程序员薪酬排行天梯榜

文章目录 ⭐️ 2023年全国程序员薪酬排行天梯榜 在过去很长的一段时间内,网上总有一个声音:“大厂裁员”、“程序员内卷严重”、“程序员人员过盛”、“35岁中年危机”、“码农吃的青春饭”、“互联网寒冬” 等等等等。 讲道理,我对这种人为的…

ViT-vision transformer

ViT-vision transformer 介绍 Transformer最早是在NLP领域提出的,受此启发,Google将其用于图像,并对分类流程作尽量少的修改。 起源:从机器翻译的角度来看,一个句子想要翻译好,必须考虑上下文的信息&…

Redisson源码分析(1)源码下载及本地调试

目录 前言 源码下载 其他准备 前言 新开个坑,关于Redisson源码分析的,感觉不记一下,看完以后,过段时间又忘了... 源码下载 Redisson:https://github.com/redisson/redisson 本次源码我这下载的是3.17.7版本 3.…