读数据压缩入门笔记04_统计编码

news2024/10/6 6:40:28

 

1. 统计编码(statistical encoders)的算法

1.1. 每种编码方法都对每个符号的概率分布做了不同的假定

1.2. 需要处理的数据集中符号的概率分布与现有的VLC方法都不能完全匹配

1.3. 统计编码算法通过数据集中符号出现的概率来进行编码使结果尽可能与熵接近

1.4. 给定任何输入数据,我们都能为其构造出一套自定义的码字集,而无须去匹配现有的VLC方法

1.5. 该算法以数据流中符号的频率为依据,为该数据流中的各个符号分配长度可变的码字,从而使最终的输出压缩得更小

2. 国际电信联盟H.82建议书(ITU-T,1993)将熵编码定义为“任意无损的压缩或解压数据的方法”

3. 熵编码的技术用途

3.1. 也可以称为“香农–范诺编码”或“哈夫曼编码”

3.2. 给定二进制位率时增加信噪比

3.3. 给定信噪比时减少二进制位率

4. 香农–范诺编码

4.1. 由香农于1948年提出,随后他将它告诉了罗伯特•范诺(Robert Fano),范诺后来将它作为技术报告正式发表了

4.2. 最早通过符号及其出现概率来生成VLC的方法之一

4.3. 它没有达到最短的码字长度预期,但它已经很接近了

4.4. PKZIP/IMPLODE格式使用了两到三棵香农–范诺树(Shannon-Fano tree)

5. 哈夫曼编码

5.1. 计算机科学和数据通信领域内人员一直都在使用的基本思想之一

5.2. 对于给定的数据集,为了产生小的、自定义的VLC,你需要一个输入是概率列表、输出是码字的算法

5.3. 哈夫曼编码可能是生成自定义VLC最直接、最有名的方法

5.3.1. 给定一组符号及其出现频率,该方法能生成一组符号平均长度最短的VLC

5.3.2. 如果使用二叉树,就能利用符号表中的概率与二叉树的分支来创建优化的二进制代码

5.4. 工作原理

5.4.1. 将数据排序后建立决策树(decision tree),然后从“树干”一直往下直到“树叶”为止,并记录下所做的是/否选择

5.4.2. 为了获得给定符号(叶子节点)的码字,需要从根节点“沿着树枝”往下走,并将所得的1和0按从MSB到LSB排列起来,也就是从左排到右

5.5. 由于创建哈夫曼树(需使用计算资源)要比传输符号码字对应表(会增加数据流大小)困难得多,因此总是应该将码字对应表加在数据流的前面,而不是在解码时再重新创建一次

5.6. 简单、高效,也能为单个的数据符号生成最佳的码字

5.7. 对于给定的符号集来说,它并非总是生成最有效的码字

5.8. 能生成理想VLC(即码字的平均长度等于符号集的熵)的唯一情形是,各个符号的出现概率等于2的负整数次幂(即是1/2、1/4或1/8这样的值)

6. 算术编码

6.1. 早在20世纪60年代初,Peter Elias就首先提出了算术压缩背后的概念(即算术编码)

6.2. 20世纪70年代,才由IBM公司的Jorma Rissane针对其实现发表了第一个有效的研究,随之而来的还有相应的专利

6.3. 会将整个输入流转换为一个长度很长的数值,而它的lb表示则与整个输入流真正的熵值很接近

6.4. 它将转换应用到整个源数据上以生成一个输出值,而表示这个输出值所需要的二进制位数比源数据本身少

6.5. 现代主流的文件、音频和视频的压缩格式(如LZMA和BZIP这样的文件格式,JPEG、WebP、WebM和H.264这样的音视频格式),在统计编码步骤上都会使用算术编码压缩方法

6.6. 工作原理

6.6.1. 将字符串转换为一个数,与字符串相比,表示这个数需要的二进制位数要少一些

6.7. 目前的主流算法

6.7.1. 应用在大多数的多媒体编码器中,甚至有了有效的硬件实现

7. 区间编码

7.1. Range Coding

7.2. 1979年

7.3. 所做的事情与算术编码基本相同,却不受算术编码相关专利的约束

8. ANS

8.1. 2007年

8.1.1. 在数据压缩领域里出现的时间还不长

8.1.2. 已开始取代过去20多年里占据主流地位的哈夫曼编码和算术编码

8.1.2.1. ZHuff、LZTurbo、LZA、Oodle和LZNA这些压缩工具已开始使用ANS

8.2. 2013年

8.2.1. 又出现了一个被称为有限状态熵(Finite State Entropy,FSE)的更注重性能的版本

8.2.1.1. 它只使用加法、掩码和移位运算,使ANS对开发人员更具吸引力

8.3. 2015年

8.3.1. 推出了一款名为LZFSE的GZIP变种,作为苹果下一代iOS版本的核心API

8.4. Jarek Duda引入了一种新的与数据压缩有直接关联的信息论概念:非对称数字系统(asymmetric numeral systems,ANS)

8.5. 一种新的精确熵编码方法,所得到的结果可以和最优熵任意接近,它的压缩率与算术编码接近,而性能则与哈夫曼编码相当

8.6. 工作原理

8.6.1. 根据符号的出现频率对数值区间进行细分

8.6.2. 创建一张表,将子区间与离散的整数值关联起来

8.6.3. 每个符号都是通过读取和响应表中的数值来处理的

8.6.4. 向输出流中写入可变的二进制位位数

8.7. tANS是ANS的一种变体,它是围绕着一张表格工作的

8.7.1. 创建备查表

8.7.1.1. 它使得从符号转换为数值再从数值转换为符号成为可能

8.7.1.2. 表中的每个值都是唯一的(即不存在重复)

8.7.1.3. 每列都按照值从小到大排序

8.7.1.4. 每行的值都要比该行的行号大

8.7.2. 想要tANS变成真正的熵编码器

8.7.2.1. 在确定每一列值的个数时,需满足该值乘以maxVal后,等于该列符号的出现概率

8.7.2.2. 在确定每一行的值时,需确保该行列选择的值与该列符号的出现概率一致,这样当用该值除以行号,所得商就会(近似)等于该列符号的出现概率

8.7.3. 压缩来自于逐位输出(bit-wise output)

8.7.3.1. 出现可能性越小的符号其列高越低,有效的行号值离最可能出现的符号也就越远(二进制位距离意义上的远)

8.7.3.2. 为了得到更小的行号,就需要进行更多次的右移操作,这也意味着每次循环会有更多的二进制位输出到数据流

8.7.3.3. 出现可能性越小的符号,就会输出更多的二进制位到最终的数据流中

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

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

相关文章

【音视频开发】FFmpeg转换与封装 I - MP4格式

1 FFmpeg转换与封装 1.1 MP4格式转换 1.1.1 MP4格式标准 1 FFmpeg转换与封装 FFmpeg支持的媒体封装格式具有多样性与全面性,与此,我们还可以使用FFmpeg来对媒体格式进行转换与封装。 1.1 MP4格式转换 在互联网常见的格式中,跨平台最好的应…

【Vue】二:Vue核心处理---vue的其它指令和自定义指令

文章目录 1.vue的其它指令1.1v-text 和 v-html1.2 v-cloak1.3 v-once1.4 v-pre 2. 自定义指令2.1 函数式2.2 对象式2.3.定义全局的指令 1.vue的其它指令 1.1v-text 和 v-html v-text:当做文件解析。 v-html:当做 HTML 代码解析。 1.2 v-cloak v-cloa…

chatgpt赋能python:Python字典通过键找值:什么是Python字典?

Python字典通过键找值:什么是Python字典? Python字典是一种非常有用的数据类型,可以通过键值对方式存储和访问数据。它是Python的一种内置数据类型,可以在编程中非常方便地存储和操作数据。 Python字典可以存储任意类型的数据&a…

图书馆智能照明控制系统设计介绍 安科瑞 许敏

摘 要:简要介绍了一种新型的智能照明控制系统,论述了其系统特点和系统组成;结合该系统对某高校图书馆进行了照明节能设计。工程应用表明,该系统在公 共建筑节能中效果显著。 关键词:高校;图书馆&#xff…

【SpinalHDL快速入门】5.1、SpinalHDL组织结构之Component和hierarchy

文章目录 1.1、简介1.2、Input / output 定义1.3、修剪信号(Pruned signals)1.4、参数化硬件(在Verilog中称为“Parameter”)1.5、合成组件名称 1.1、简介 就像在 VHDL 和 Verilog 中一样,可以定义组件以用于构建设计…

Tableau招聘信息数据可视化

获取的招聘信息数据为某招聘网站发布的大数据及数据分析相关岗位,对其他计算机相关岗位的招聘信息数据分析也有一定的参考价值。因为所获取的招聘信息数据数量只有1万左右,实际的招聘信息数量肯定不止1万,所以可能会与实际信息有一定的误差。…

chatgpt赋能python:Python安装Gurobi优化器详细步骤

Python安装Gurobi优化器详细步骤 如果你是一个数据科学家或者运筹学专业的研究者,你肯定会经常接触到优化问题。Gurobi是一个流行的线性与整数规划优化软件包,它提供了出色的线性规划和整数规划支持,速度快,准确度高,…

nginx(八十三)error_page、proxy_intercept_errors深究

一 error_page和proxy_intercept_errors深究 强调: 本文只是基于状态码的角度来讨论error_page、proxy_intercept_errors差异性题外话: 让别人定位,一定要保留好事故现场,尽可能的提供更多的有用信息核心: 本文只讨论错误状态码的异常处理遗…

信息系统设计与分析

系统分析师作用 1. 业务需求 现有组织结构、组织目标、管理模式 部门业务、业务流程、业务规则 业务数据、业务过程与业务管理直接关系 业务优化与业务再造要求 2. 用户需求分析 新系统改进业务要求 对新系统的愿景与期望 对新系统使用要求 3. 系统需求分析 系统应具有哪些功能…

【JavaSE】Java(五十三):核心要点总结

文章目录 1. 简要说下什么是反射2. 什么是java序列化,什么情况下需要序列化3. 为什么需要克隆,如何实现克隆,深拷贝和浅拷贝区别4. throw 和 throws 区别5. final、finaly、finalize 区别 1. 简要说下什么是反射 Java反射是指在运行时获取类信…

chatgpt赋能python:Python安装dialog介绍

Python安装dialog介绍 Dialog是一个命令行工具,可以帮助用户在Linux系统中创建自定义对话框。它可以与多种编程语言一起使用,其中包括Python。在本文中,我们将详细介绍如何在Python中安装Dialog。 安装Dialog前的准备工作 在安装Dialog之前…

Git 命令行提交代码详细操作

Git 命令行提交代码操作(安装git后,鼠标右键打开Git Bash) 1、查看本地git绑定的用户名和邮箱: git config user.name git config user.email 2、① 修改本地git绑定的用户名和邮箱(全局): git config --global user.name “Your_userName” …

案例28:基于Springboot毕业设计系统开题报告设计

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

视频直播播放器弹幕功能API

POLYV播放器拥有弹幕功能,可以增加观看视频时的互动性。 功能API 参数 参数名类型默认值说明danmuEnablebooleanfalse是否开启弹幕功能showDanmubooleantrue开启弹幕功能后,弹幕初始显示状态。false则一开始不显示弹幕。banDanmuBtnbooleanfalse为true时…

【Vue】三:Vue组件: 组件使用和组件嵌套

文章目录 1.第一个组件1.1不使用组件前1.2创建组件1.3注册组件1.4使用组件1.5 细节 2.组件嵌套 1.第一个组件 1.1不使用组件前 1.2创建组件 Vue.extends({该配置项和new Vue的配置项几乎相同})区别: (1)创建Vue组件的时候,不能使…

MySQL 查询分析

一个低效查询引发的思考 上次在做银行对账,上传对账单后,出现对账超时的情况。查看日志发现,最后一条日志记录停在了对 c2c_zwdb.t_file_count 的查询 sql 上。使用 show processlist 命令来查看当前 SQL 的执行情况,如下&#x…

说说验证码功能的实现

前言 大家好,我是 god23bin,今天说说验证码功能的实现,相信大家都经常接触到验证码的,毕竟平时上网也能遇到各种验证码,需要我们输入验证码进行验证我们是人类,而不是机器人。 验证码有多种类型&#xff…

chatgpt赋能python:使用Python安装Gensim:简单而强大的自然语言处理库

使用Python安装Gensim:简单而强大的自然语言处理库 Gensim是一个Python库,它为自然语言处理任务和文本处理任务提供了简单而强大的接口。它可以用于文本相似性计算、主题建模、词嵌入和其他自然语言处理任务。Gensim库的优点之一是其简单性和易用性。在…

评述:量子传感器正掀起一场商业革命

光子盒研究院出品 量子传感器利用原子和光的基本属性来对世界进行测量。粒子的量子状态对环境极为敏感,这对传感来说是一个优点、但对制造量子计算机来说则是一个问题。使用粒子作为探针的量子传感器可以比设计的或基于化学或电信号的经典设备更精确地量化加速度、磁…

4.3 - 信息收集 - 端口扫描,操作系统识别

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「专栏简介」:此文章已录入专栏《网络安全快速入门》 端口&系统版本 一、端口扫描1、telnet2、Nmap3、Masscan 二、操作系统…