压缩解压
和海风
难得所爱,忠之无悔
展开
-
1、什么是压缩技术,起源于什么时候?
1、什么是数据压缩 数据压缩,通俗地说,就是用最少的数码来表示信号。其作用是:能较快地传输各种信号 2.数据为何能被压缩 首先,数据中间常存在一些多余成分,既冗余度。如在一份计算机文件中,某些符号会重复出现、某些符号比其他符号出现得更频繁、某些字符总是在各数据块中可预见的位置上出现等,这些冗余部分便可在数据编码中除去或减少。冗余度压缩是一个可逆过程,因此叫做无失真压缩,或称保持型编码。 其原创 2009-08-24 14:56:00 · 1166 阅读 · 0 评论 -
第二章 技术准备:什么是熵、概率、模型和编码
什么是熵数据压缩不仅起源于 40 年代由 Claude Shannon 首创的信息论,而且其基本原理即信息究竟能被压缩到多小,至今依然遵循信息论中的一条定理,这条定理借用了热力学中的名词“熵”( Entropy )来表示一条信息中真正需要编码的信息量:考虑用 0 和 1 组成的二进制数码为含有 n 个符号的某条信息编码,假设符号 Fn 在整条信息中重复出现的概率为 Pn,则该符号的熵也即表转载 2009-08-24 15:17:00 · 815 阅读 · 0 评论 -
第三章 奇妙的二叉树
为什么是二叉树为什么压缩领域中的编码方法总和二叉树联系在一起呢?原因非常简单,回忆一下我们介绍过的“前缀编码”:为了使用不固定的码长表示单个字符,编码必须符合“前缀编码”的要求,即较短的编码决不能是较长编码的前缀。要构造符合这一要求的二进制编码体系,二叉树是最理想的选择。考察下面这棵二叉树: 根(root) 0 | 1转载 2009-08-24 15:25:00 · 554 阅读 · 1 评论 -
第四章 向极限挑战:算术编码
输出:一个小数更神奇的事情发生了,算术编码对整条信息(无论信息有多么长),其输出仅仅是一个数,而且是一个介于 0 和 1 之间的二进制小数。例如算术编码对某条信息的输出为 1010001111,那么它表示小数 0.1010001111,也即十进制数 0.64。咦?怎么一会儿是表示半个二进制位,一会儿又是输出一个小数,算术编码怎么这么古怪呀?不要着急,我们借助下面一个简单的例子来阐释算术编码转载 2009-08-24 15:35:00 · 993 阅读 · 1 评论 -
第五章 聪明的以色列人(上):LZ77
全新的思路我们在第三和第四章中讨论的压缩模型都是基于对信息中单个字符出现频率的统计而设计的,直到 70 年代末期,这种思路在数据压缩领域一直占据着统治地位。在我们今天看来,这种情形在某种程度上显得有些可笑,但事情就是这样,一旦某项技术在某一领域形成了惯例,人们就很难创造出在思路上与其大相径庭的哪怕是更简单更实用的技术来。我们敬佩那两个在数据压缩领域做出了杰出贡献的以色列人,因为正是他们打破转载 2009-08-24 15:46:00 · 609 阅读 · 0 评论 -
第六章 聪明的以色列人(下):LZ78 和 LZW
LZ78 的算法描述:for (;;){ current_match = 1; current_length = 0; memset(test_string, /0, MAX_STRING); for (;;) { test_string[current_length ++] = getc(input);转载 2009-08-24 15:53:00 · 642 阅读 · 0 评论