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

这篇具有很好参考价值的文章主要介绍了读数据压缩入门笔记04_统计编码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

读数据压缩入门笔记04_统计编码文章来源地址https://www.toymoban.com/news/detail-474017.html

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. 出现可能性越小的符号,就会输出更多的二进制位到最终的数据流中

到了这里,关于读数据压缩入门笔记04_统计编码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 读数据压缩入门笔记10_通用压缩和序列化

    1.2.3.1. 如果今天多云,那么明后两天会下雨的概率是多少? 1.2.5.1. 要使马尔可夫链算法变得实用,就必须要解决内存消耗问题与计算性能问题,即使用最佳链来编码 1.4.3.1. 在PPMZ算法中,对于符号如何去响应匹配,人们尝试了多种类型的上下文 1.4.6.1. 缺点是在进行数据压

    2024年02月16日
    浏览(40)
  • 读数据压缩入门笔记03_VLC

    14.4.1.1. 不知道最大的整数会是多大 14.4.3.1. 相应的码字就由两部分组成,即与此整数相当的2的次幂再加上余数 14.4.4.1. 找出最大的整数N,使其满足2 N<n<2 (N+1),并且将n表示为n=2^N+L这样的形式 14.4.4.1.1. L=n-2^N 14.4.4.1.2. n=12,2 3=8,2 4=16,2 3<n<2 4,N=3 14.4.4.1.3. L=12-2^3=4 14.4.4.2

    2024年02月07日
    浏览(111)
  • 读数据压缩入门笔记05_字典转换

    5.3.1.1. 对数据集越了解,你就越能从中选择出最适合的LZ变换 5.3.2.1. Terry Welch于1984年提出的,它采用了LZ78算法的思想 5.3.2.2. 首个在计算机中广泛采用的通用数据压缩方法

    2024年02月09日
    浏览(33)
  • 读数据压缩入门笔记06_上下文转换

    3.3.1.1. 如果这两个符号是相同的,那么行程继续 3.3.1.2. 如果不相同,那么当前行程终止 8.6.1.1. 真实数据中普遍存在 9.3.1.1. 事实上符号之间的顺序很重要 9.3.4.1. lexicographical permutation 9.3.4.2. BWT会打乱数据流中符号的顺序,并试图让相同的符号簇彼此靠近 9.3.4.3. 找出原始数

    2024年02月09日
    浏览(52)
  • 读数据压缩入门笔记02_二进制和熵

    2024年02月06日
    浏览(88)
  • WPF 入门笔记 - 04 - 数据绑定

    慢慢来,谁还没有一个努力的过程。 --网易云音乐 数据绑定概述 (WPF .NET) 什么是数据绑定? 数据绑定(Data Binding)是 WPF 一种强大的机制,用于在应用程序的各个部分之间建立数据的双向关联。它允许你将数据从一个源(例如对象、集合、数据库等)绑定到目标控件的属性,

    2024年02月09日
    浏览(64)
  • WPF 入门笔记 - 04 - 数据绑定 - 补充内容:资源基础

    宇宙很大,生活更大,也许以后还有缘相见。 --三体 🌌 💭 该篇作为[WPF 入门笔记 - 04 - 数据绑定] - Additional Content 章节的补充内容 XAML 资源概述 (WPF .NET) WPF中的每一个元素都有一个 Resources 属性,该属性存储了一个资源字典集合。一般来说,可以把WPF的资源按照不同的性质分

    2024年02月11日
    浏览(41)
  • 第17节 R语言分析:生物统计数据集 R 编码分析和绘图

    生物统计学,用于对给定文件 data.csv 中的医疗数据应用 R 编码,该文件是患者人口统计数据集,包含有关来自各种祖先谱系的个体的标准信息。

    2024年02月15日
    浏览(40)
  • 【云计算与大数据技术】数据编码LZSS算法、Snappy压缩库及分布式通信系统的讲解(图文解释 超详细)

    数据编码概述 - 在分布式系统中需要处理大量的网络数据,为了加快网络数据的传输速度,通常需 要对传输数据进行编码压缩 数据压缩是以尽可能少的数码来表示信源所发出的信号,减少容纳给定的消息集合或数据采样集合的信号空间,这里讲的信号空间就是被压缩的对象,是

    2024年02月16日
    浏览(114)
  • 视频编码压缩基础

    视频编码基础 视频图像的质量评价 采用有损压缩的技术能显著降低码率,但是也会降低视频图像的质量,因此对于有损压缩算法,需要建立一套评价准则,对编码质量进行评价。 可以分为 主观质量 和 客观质量评价 客观质量评价方法 1.均方误差(mean square error,MSE) 原始参考帧

    2024年02月12日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包