压缩可以把数据占用的空间压得更小,用更少的bits表示数据。
我们用上集的4像素*4像素图片作为例子。图像存成一长串的连续字节数据,由元数据+像素值组成,今天忽略元数据。每个像素的颜色有三原色的组合(红绿蓝)混合而成,每个颜色用一个字节存,数字范围0-255。
这个图像有16个像素,每个像素3个字节,共48字节。压缩这48个字节的一种方法时减少重复信息,最简单的方法就叫做“游程编码”(run-length encoding),适合于经常出现相同值的文件。具体方法就是从多个连续的、相同的像素值中保留一个,然后用一个额外字节记录下重复的个数。处理前:
处理后:
这种压缩方式没有损失任何数据,叫做无损压缩(lossless compression),数据压缩前后完全一样。另一种无损压缩可以用更紧凑的方式表示数据块,为此我们需要一个字典来存储编码和数据之间的对应关系,我们看一个例子。我们首先将图像将两个像素当成1块
二十一、压缩
本文介绍了数据压缩的基本原理,通过实例讲解了无损压缩方法中的游程编码和霍夫曼编码。游程编码通过减少连续相同像素的重复信息进行压缩,而霍夫曼编码利用霍夫曼树生成无前缀编码,根据数据出现频率进行更高效的压缩。此外,文章还探讨了有损压缩的概念,如音频的感知编码和图像的JPEG压缩,以及视频压缩中利用时间冗余的技术。
摘要由CSDN通过智能技术生成