HEVC熵编码核心点介绍

news2024/9/22 4:19:22

熵编码基本原理

消息与信息

把客观物质运动和主观思维的活动状态表达出来就成为了消息;消息中包含信息,是信息的载体;因此,信息与消息既有区别又有联系的;

获取信息的过程就是一个消除或部分消除不确定性的过程;

信息是事物运动状态或存在方式的不确定性的描述;

信息的多少我们成为信息量;信息量与不确定性消除的程度有,消除的不确定性大 , 信息量就大; 反之,信息量就小;

自信息是信源发出某一符号所含有的信息量,信源发出的符号不同, 含有的信息量不同;

自信息的数学期望为信源的信息熵;

信息熵是从平均意义上表示信源的, 总体信息测度,可以理解为信源 X 每输出一个符号所提供的平均信息量;

熵的取值总是非负数;

变长编码

对信源输出的消息 (一个信源符号或者固定数目的多个信源符号) 采用不同长度的码字表示,这种编码方式称为变长编码。

为了提高编码效率,需要根据符号出现的概 率大小设计码长,即对于大概率符号采用较短的码字表示 ,小概率符号采用较长的码字表示,以达到平均码长最短的目的;

变长码必须是唯一可译码,才能实现无失真编码;

哈夫曼编码是一种最佳变长码;但存储空间要求大、解码复杂度高;

指数哥伦布码(Exponential Golomb Code)是弥补哈夫曼的不规则结构的解码复杂度,应用最广泛的;

算术编码

与变长码不同,算术编码的本质是为整个输入序列分配一个码字, 而不是给每个输入流中的每个字符分别指定码字, 因此平均意义上可以为单个字符分配码长小于1 的码字,所以算术编码可以给出接近最优的编码结果;

算术编码的基本原理

根据信源可能发生的不同符号序列的概 率, 把 [0, 1) 区间划分为互不重叠的子区间,子区间的宽度恰好是各符号序列的概率 , 这样信源发出的不同符号序列将与各子区间一一对应。因此每个子区间内的任意一个实数都可以用来表示对应的符号序列 , 这个数就是该符号序列所对应的码字。显然,一串符号序列发生的概率越大,对应的子区间就越宽,要表达它所用的比特数就越少,因而相应的码字就越短。

算术编码的两个基本参数:符号的概率和它的编码间隔;信源符号概率决定编码过程中信源符号的间隔,而这些间隔包含在0到1之间,编码过程中的间隔决定了符号压缩后的输出。

零阶指数哥伦布编码

● 零阶指数哥伦布码是指数哥伦布码家族中的一员,它可以直接根据公式解析码字,无须查表,解码复杂度较低;
● 在h265中被用于视频参数集VPS、序列参数集SPS、图像参数集PPS、片头信息等所设计的大部分语法元素中;
● 主要分为无符号数的指数哥伦布编码ue(v)、有符号书的指数哥伦布编码se(v);

CABAC

基于上下文的自适应二进制算术编码是一种将自适应的二进制算术编码与一个设计精良的上下文模型结合起来的方法;

采用了算术编码思想,同时充分考虑了视频流相关统计特性,提高了编码效率;

基本步骤:二进制化、上下文建模、二进制算术编码;

霍夫曼二元化效率高,但复杂度高,一般都采用一元码、定长码、指数哥伦布码的二元方法;h265中采用的是截断莱斯二元化TR、K阶指数哥伦布二元化EGK、定长二元化FL;不同的语法元素采用不同的二元化方法;

根据条件熵理论,利用其他己编码的语法元素进行条件编码 ,相对于独立编码或者无记忆编码能够进一步提高编码性能,这些用来作为条件的己编码符号信息称为上下文;

在h265中采用查表的方式来为每种语法元素进行上下文模型参数初始化;

二进制算术编码对当前语法元素二进制化后的每一个Bin根据其概率模型参数进行算术编码,得到最后的输出码流;
在这里插入图片描述

变换系数熵编码

量化后变换系数的熵编码在整个熵编码中占有举足轻重地位,量化后变化系数大多为零值或幅度较小的值;

通过编码非零系数的位置信息和非零系数的幅值来表示变换系数;

● 变换系数的扫描
○ 基于4x4大小的子块进行,较大的TB都需要进行分割成多个4x4子块;
○ h265中扫描方式:对角扫描(类似h264中的zig-zag)、水平扫描、垂直扫描;
○ h265中扫描方式与预测模式存在对应关系,如4x4和8x8TB帧内预测,垂直预测模式对应水平扫描方式;16x16、32x32TB的帧内以及帧间预测模式采用对角扫描;
在这里插入图片描述
h265标准对变换后的非零系数位置信息和幅值信息进行CABAC编码。

符号数据隐藏技术SDH

参考:https://blog.csdn.net/Dillon2015/article/details/104254432

为什么用SDH

因为每个非零系数符号语法元素采用coeff_sign_flag来标识,用来表示该系数是正值还是负值,通过旁路编码器进行熵编码,可以加快整个编码以及解码的速度,该标识在视频压缩码流里占据很大比例,大约15%~20%;
为了减少其比特数,H265中对非零系数符号允许使用符号数据隐藏技术(Sign Data Hiding,SDH);

变换系数扫描方式

H.265/HEVC对变换系数的扫描是基于4x4块的,所以对于大于4x4的TB要先将其分为若干个4x4的子块,子块内部和子块间按同样方式进行扫描。

CG

每个4x4子块扫描后得到的16个连续的系数称为系数组(Coefficient Group,CG)。

原理:

首先计算CG内所有非零系数绝对值之和,若和为偶数则CG内最后一个非零系数被判定为“+”;若和为奇数则CG内最后一个非零系数被判定为“-”;使用SDH后解码端可以直接判断CG中最后一个非零系数的符号,编码端可以省略它的语法元素coeff_sign_flag的熵编码。

当SDH得到的符号和CG内最后一个非零系数符号不一致时就需要调整CG中某个非零系数,将它的值加1或减1,以使其和真实符号一致。所以使用SDH技术可能会带来变换系数的失真,但符号位在熵编码时使用的是旁路编码模式开销较大,使用SDH技术节约的码率大于一个变换系数失真带来的影响。

后果

视频编码中除了量化会引入失真,SDH也会。

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

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

相关文章

Linux网络基础-4

在之前的网络基础博客中,我们对网络进行了概要解释,了解了应用层和传输层的知名协议。接下来我们来对网络层的典型协议进行解析。 目录 1.网络层协议 2.IP协议 2.1协议格式 2.2地址管理 2.3特殊网络 2.3.1私网的组建 2.3.2特殊IP地址 2.4路由选…

ACP(MaxCompute篇)-Tunnel上传下载数据

概述 相关命令 odpscmd里面包含了tunnel test11_123>tunnel help; Usage: tunnel <subcommand> [options] [args] Type tunnel help <subcommand> for help on a specific subcommand.Available subcommands:upload (u)download (d)resume (r)show (s)purge …

探索SpringBoot 3.1的惊艳新特性

一、介绍 1.1 新特性概述 经过半年的沉淀 Spring Boot 3.1于2023年5月18日正式发布了&#xff0c;带来了许多令人兴奋的新特性和改进。本篇博客将详细介绍Spring Boot 3.1的新特性、升级说明以及核心功能的改进。 同时&#xff0c;2.6.x 版本线已经停止维护了&#xff0c;最新…

《消息队列高手课》课程笔记(二)

消息模型&#xff1a;主题和队列有什么区别&#xff1f; 两类消息模型 早期的消息队列&#xff0c;就是按照“队列”的数据结构来设计的。 生产者&#xff08;Producer&#xff09;发消息就是入队操作&#xff0c;消费者&#xff08;Consumer&#xff09;收消息就是出队也就是…

数字逻辑习题

第一次作业 第二次作业 第三次作业 卡诺图最小项 计算模数M考察74LS161的特点 计数器数据选择器 在A和C加上非门即可 求计数器的模数M 该计数器是环形计数器&#xff08;循环右移&#xff09;&#xff0c;模数根据初始状态而定 由n个移位寄存器构成的环形计数器最大可能模值为n…

韩流在元宇宙中崛起,感受韩国文化的魅力!

大获成功&#xff01;第一波 K-verse 土地全部售罄&#xff01; 多家领先韩国文化公司&#xff0c;包括 SMBM、CUBE 娱乐、LINE Studio、Gravity、乐天世界、K League 等进驻 The Sandbox&#xff0c;并在第一波 K-verse 土地销售活动上发布了邻近这些公司的 LAND。 所有土地全…

哈希表(散列表)详解

&#x1f495;**今天的每一秒都是珍贵的&#xff0c;因为它永远不会再次出现。**&#x1f495; &#x1f43c;作者&#xff1a;不能再留遗憾了&#x1f43c; &#x1f386;专栏&#xff1a;Java学习&#x1f386; &#x1f697;本文章主要内容&#xff1a;深入理解哈希表&#…

npm init和npm create、npm create vite什么意思

npm init 和npm create 之前在用npm时&#xff0c;一直都是npm init来初始化一个项目并生成package.json文件。 但是&#xff0c;今天在看vite的官方文档时&#xff0c;vite上说创建一个vite项目的命令是 npm create vitelatest之前一直没有用过npm create这个命令&#xff…

sql ---- 查询两个日期间隔的天数:Datediff(a,b)

197. 上升的温度 表&#xff1a; Weather ------------------------ | Column Name | Type | ------------------------ | id | int | | recordDate | date | | temperature | int | ------------------------ id 是这个表的主键 该表包含特定…

Windows编程开发中的语句覆盖、条件覆盖、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天总结一下Windows编程开发中的语句覆盖、条件覆盖、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖。 首先你要明白一点&#xff1a; 逻辑覆盖率&#xff1a;语句覆盖<条件覆盖<判定覆盖<条件-判…

Prometheus+Grafana学习(十一)安装使用pushgateway

Pushgateway允许短暂和批量作业将其指标暴露给 Prometheus。由于这些工作的生命周期可能不足够长&#xff0c;不能够存在足够的时间以让 Prometheus 抓取它们的指标。Pushgateway 允许它们可以将其指标推送到 Pushgateway&#xff0c;然后 Pushgateway 再将这些指标暴露给 Prom…

算法套路十八——区间 DP

算法套路十八——区间 DP 线性DP: 具有前缀/后缀结构的问题&#xff0c;其中每个阶段只依赖于前一阶段的状态区间DP:需要确定给定区间内所有可能状态的问题&#xff0c;并从较小区间向较大区间进行转移。 区间DP介绍&#xff1a;https://oi-wiki.org/dp/interval/ 算法示例&…

网络安全证书合集

网络安全作为2022年十大高新紧缺技能之一&#xff0c;足以证明网络安全的重要性&#xff0c;作为网络安全工程师更是责任重大&#xff0c;证书作为能力证明的一方面&#xff0c;也是尤为重要&#xff0c;本文将着重盘点一下网络安全证书合集。 国家注册渗透测试工程师&#xf…

传染病学模型 | Matlab实现SEIR传染病学模型 (SEIR Epidemic Model)

文章目录 效果一览基本描述模型介绍程序设计参考资料效果一览 基本描述 传染病学模型 | Matlab实现SEIR传染病学模型 (SEIR Epidemic Model) 模型介绍 SEIR模型是一种常见的传染病传播模型,用于描述人群感染某种传染病的过程。SEIR模型将人群划分为四个互相转化的状态: 易感者…

内容好但流量差?B站流量密码可能就在这

B站知名数码UP主老师好我叫何同学&#xff08;以下简称“何同学”。&#xff09;时隔两个月再次更新&#xff0c;这支标题为《为了找到流量密码&#xff0c;我们做了个假B站...》的视频不仅吸引了观众的围观&#xff0c;更是获得了众多B站UP主们的“声援”。 如题所见&#xf…

Netty 源码分析系列(十八)一行简单的writeAndFlush都做了哪些事?

文章目录 前言源码分析ctx.writeAndFlush 的逻辑writeAndFlush 源码ChannelOutBoundBuff 类addMessage 方法addFlush 方法AbstractNioByteChannel 类 小结 前言 对于使用netty的小伙伴来说&#xff0c;我们想通过服务端往客户端发送数据&#xff0c;通常我们会调用ctx.writeAn…

SURF算法详解

Speeded Up Robust Features&#xff08;SURF&#xff0c;加速稳健特征&#xff09; 一&#xff0e;积分图像 1.什么是积分图像 积分图像是输入的灰度图像经过一种像素间的累加运算得到种新的图像媒介。对于一幅灰度的图像&#xff0c;积分图像中的任意一点&#xff08;x,y&…

【投毒情报】PyPI中 colorara 等组件包泄漏主机截屏等敏感信息

漏洞描述 PyPI仓库中受影响版本的 colorara 和 libida组件在安装过程中会根据不同操作系统分别执行恶意逻辑&#xff0c;针对Windows执行White Snake远控木马&#xff0c;针对Linux收集系统截屏、主机名、用户名、IP等主机敏感信息发送至telegram。 漏洞名称PyPI中 colorara …

大数据可视化大屏电子沙盘合集

大数据可视化电子沙盘 使用HTML、CSS、JavaScript&#xff0c;实现的可视化大数据电子沙盘 如果觉得对你有用&#xff0c;随手点个 &#x1f31f; Star &#x1f31f; 支持下&#xff0c;这样才有持续下去的动力&#xff0c;谢谢&#xff01;&#xff5e; 体验地址&#xff0…

一文告诉你黑盒测试、白盒测试、集成测试和系统测试的区别与联系

于开发人员来说&#xff0c;往往对各种测试方法感到疑惑。特别是在整合代码的时候&#xff0c;我们就能深刻感觉受到测试的重要性。很多开发人员只注重写代码&#xff0c;轻视测试的重要性。总是代码一写完提交然后就交给测试组测试了&#xff0c;没多久测试组发回测试报告。然…