第一章 引言
时间再长,也会有工作将它占满
——帕金森第一法则
1.1 压缩技术/压缩算法(Algorithm)包括:压缩算法和重构算法。
压缩算法: 取得输入 X,生成一种需要较少二进制位的表示 Xc。
重构算法: 它对压缩后的表示Xc执行操作,生成重构结果Y。
根据重构需求,可以将数据压缩方法分为两大类,即 无损压缩 和有损压缩
无损压缩: 重构结果Y 与X相同。即原数据经过压缩后、重构后,重构数据和原数据无任何差别。应用在一些不允许原数据与重构数据之间存在任何差别的应用中,例如:文本压缩、银行的记录数据等方面。
有损压缩: 采用有损技术压缩后的数据通常不能再准确还原或重构。原数据与重构数据之间的差别我们称做“失真”。
有损压缩广泛应用在存储和传输语音、视频等方面,在不追求语音质量(例如语音通话)或者视频品质的情况下,那么我们可以容忍的信息损失量可以很大。
压缩比: 1、原数据比特数 :压缩后的数据比特数
2、将所需数据减少量表示为源数据大小的百分比。
example:
一幅图像由256px * 256px 的方阵组成,存储则需要65536字节。压缩后需要16384字节,则压缩比为4 : 1
用方法2表示为:(65535-16384)/65535 %=75%,则压缩比为75%。
书上给了3个例子来说明三种不同的数据建模方式。
针对特定数据开发数据压缩算法的两阶段,第一阶段通常称为建模;第二阶段称为编码。
第一阶段:建模
1、提取冗余信息
2、冗余→可预测性
第二阶段
用二进制表示模型与观测数据之间的差异,亦称为残差(residual)
例1:
用的是老师提供的PPT。
仔细思考一下,直接传输原数据,每个元素需要5bit, (25 =32 > 21>24),压缩之后只每个需要2bit来表示。于是我们可以通过传输或存储该模型的参数和残差序列来实现压缩。
例2:
原数列:
发送的一系列值就是:
模型描述:这个序列中的每个值都与它的前一个值很接近。我们先发送第一个值,然后发送后续值与其前一个值之间的差值。
例3, 采用的思想同我们的哈夫曼算法是一样的,就不多说了。
题外话:
嘻嘻,我又来啰嗦了。刚上完算法课回来,中午吃太多,一直想吐。。。急忙到实验室冷静冷静。写完这个就该coding了了了了了了了了了了了了 ?