龙空技术网

读数据压缩入门笔记07_自适应统计编码

躺着的柒 114

前言:

而今咱们对“音频压缩比算法”大约比较着重,各位老铁们都想要了解一些“音频压缩比算法”的相关内容。那么小编同时在网摘上网罗了一些对于“音频压缩比算法””的相关内容,希望兄弟们能喜欢,小伙伴们快快来学习一下吧!

1. 位置对熵的重要性1.1. 为了计算概率总需要多遍历一次数据集,而在计算出整个数据集中各符号的出现概率后,还要继续处理这些数值1.1.1. 如果是相对较小的数据集,那么这些就不是什么问题1.2. 随着要压缩的数据集变大,统计编码的结果与熵的偏差也会越来越大1.2.1. 数据集的不同部分有着不同的概率特征1.3. 如果处理的是流数据,比如视频流或音频流,由于整个数据集没有“结尾”,因此就不能“遍历两次”1.4. 数据中总会存在某种类型的局部偏态(locality-dependent skewing)1.4.1. 在数据流中,字符Q可能会在前三分之一部分出现很多次,而在后三分之二部分则一次也没有出现1.5. 如果数据流中存在很多局部偏态的情况的话,将数据流分为N块并且每块都单独压缩,那么得到的结果可能会比将数据流整体压缩得到的结果小1.6. 局部性很重要(locality matters)1.6.1. 数据流一般以线性的方式生成,因此数据流中很有可能会出现某一部分的特征与其他部分完全不同的情况2. "动态”或“自适应”统计编码算法2.1. 具有适应数据流熵的局部特性能力的统计编码算法2.2. 构成了大多数重要的、高性能的、高压缩率的多媒体数据流(如图片、视频及音频)压缩算法的基础2.3. 自适应统计编码的关键在于其符号码字对应表并非一成不变,相反,可以根据读到的符号动态地生成VLC3. 自适应VLC编码3.1. 仅遍历一次数据集,但是过程要更复杂3.1.1. 符号码字对应表并非必须一成不变,相反,可以根据读到的符号更新它3.2. VLC表是静态的3.3. 动态创建VLC表3.3.1. 每读取一个符号,编码器都会问3.3.1.1. 这个符号之前出现过吗?3.3.1.2. 如果出现过,那么输出当前分配的码字,并更新其出现的概率3.3.1.3. 如果没有,则进行一些特殊处理3.3.1.3.1. 动态概率表3.3.1.3.2. 重置3.3.1.3.3. 字面值4. 自适应算术编码4.1. 其编码步骤与概率表之间的交互很简单4.2. 只要编码器与解码器在更新概率的正确顺序上达成一致,就能根据需要更新概率表5. 自适应哈夫曼编码5.1. Faller于1973年提出5.2. 1985年高德纳又对此算法做出重大改进5.3. 所有现代的版本都是建立在Vitter于1987年提出的方法之上5.4. 哈夫曼树结构的处理比较复杂5.5. 自适应哈夫曼算法没有每次都重新生成完整的树,而是在读取和处理符号时调整现有的树5.6. 每读取一个符号都必须要做5.6.1. 更新概率5.6.2. 对树的大量结点变换位置并重新排序,以使它们与概率的变化同步5.6.3. 使树的结构满足哈夫曼树的要求6. 优点6.1. 有生成符号码字对应表的能力,无须将符号码字对应表显式地存储在数据流中6.1.1. 数据流变小后,计算性能就能有所提高6.2. 有实时压缩数据的能力,无须再将整个数据集作为一个整体来处理6.2.1. 可以有效地处理更大的数据集6.2.2. 不用事先知道要处理的数据集有多大6.3. 有适应信息局部性的能力,即邻近的符号会对码字的长度有影响,这可以显著提高压缩率7. 其他7.1. 大多数的统计编码算法主要关注的是图片(WebP)和视频(WebM、H.264)文件的压缩7.2. 如果处理的是少量的数据,那么简单的静态统计编码算法就可以工作得很好7.3. 如果处理的是大量的数据或者多媒体数据,而且运行时的性能很重要,那么采用自适应统计编码算法是正确的选择

标签: #音频压缩比算法