文件是我们用来在磁盘等存储媒介上保存数据的一种形式,本质上就是字节数据的有序集合。比如文本文件是由一系列文字字符组成,图像文件则是由图形数据构成,虽然表现形式不同,但它们都是以连续字节的形式存储的。接下来我们来了解一下文件压缩的一些基本机制。
首先提到的是RLE(Run-Length Encoding)算法,它主要是通过记录字符及其重复次数的方式来实现压缩,例如对于字符串"aaaaaabbcddeeeeef",可以压缩表示为"a6b2c1d2e5f1"。不过,由于文本文件中相同字符连续多次出现的情况相对较少,因此RLE算法更适合于像图像文件这类经常有大量重复数据的文件类型。
其次,是哈夫曼编码(Huffman Coding)算法,这种算法的核心思想是:常用的数据用较短的编码表示,不常用的数据用较长的编码表示。构建哈夫曼树的过程包括列出所有数据及其出现频率、选择频率最低的两个节点生成新节点,并以此类推直至合并成一个根节点。从根节点到叶子节点的路径定义了每个数据的哈夫曼编码,采用0和1序列进行标识。哈夫曼算法因其高效性和普适性,在文件压缩中能够显著提高压缩比。
另外,压缩方式分为可逆压缩与非可逆压缩两种。像JPEG格式的图像文件属于非可逆压缩,解压后可能会丢失部分信息,导致还原后的图像质量有所下降;而GIF格式的图像文件则采用了可逆压缩方法,虽然在色彩数量上有一定限制,但可以完全还原至原始状态。
在阅读第六章之前,可能我们对文件压缩的具体方法并不了解,比如RLE算法,若不经介绍,面对一串连续相同的字符时,我们很难想到可以通过记录字符及其重复次数来进行压缩。书中还特别指出,由于文本文件中字符重复次数不多,使用RLE算法往往效果不佳,压缩后的数据量甚至可能大于原文件。
此外,文中还提到了莫尔斯编码以及哈夫曼算法这两种不同的压缩技术。其中,莫尔斯编码要求我们改变看待字符的方式,不再将其视为固定长度的字节,而是根据特定规则重新编码。哈夫曼算法则通过构造哈夫曼树这一数学结构来实现压缩,其工作原理类似自然界中的树,但生长顺序恰好相反,是从叶子生长出枝干并汇聚成根部。
最后,书本介绍了几种常见的图像文件格式,如未压缩的BMP格式,以及经过不同程度压缩的JPEG、TIFF、GIF等格式。在阅读此书之前,也许我们只知道GIF这一种格式,而对其它图像文件格式及其背后的数据压缩原理知之甚少。总之,通过对第六章的学习,我们对文件压缩的各种机制和方法有了更深入的理解。
标签:读后感,哈夫曼,字符,RLE,压缩,程序,算法,第六章,图像文件 From: https://www.cnblogs.com/van311/p/18017332