抛弃把戏
有损压缩的一个简单且有效的方法是直接抛弃一些数据。让我们来研究一下“抛弃”把戏(leave-it-out trick)如何在黑白照片上运用。我们首先要了解一点黑白照片如何在计算机上存储的知识。照片由大量小点组成,这些小点被称为“像素”。每个像素只有一种颜色,这种颜色可以是黑,也可以是白,或黑与白之间的任意灰度。当然,我们通常不会意识到这些像素,因为它们太小了,但如果你离显示器或电视屏足够近,就能看到单个像素。
在计算机中存储的黑白照片里,每个可能的像素颜色都由一个数字代表。比如,让我们假设越大的数字代表越白的颜色,100是最大的数字。因此100代表白色,0代表黑色,50代表中等灰度,90代表浅灰等等。像素按照矩形方阵排列,其中每个像素都代表图片中一些非常小的部分的颜色。方阵的行列总数就是图像的“解析度”。比如,许多高清电视的解析度是1 920×1 080,这意味着图像有1 920列和1 080行像素。像素总数就是1 920乘以1 080,也就是逾两百万像素!数字相机也使用相同的术语。“megapixel”只是个用来表示百万像素的花哨名字。因此,一台500万像素的相机有足够多行和足够多列的像素,当你将行数和列数相乘后,得到的数就会超过500万。当照片存储在计算机中时,它就是一个数字列表,每个像素都由数字代表。
下图中左上方的带角楼的房屋照片,比高清电视的解析度低很多:只有320×240。不过,其像素数目仍然相当大(320×240 = 76 800),存储这张照片的文件,在未压缩形式下占用了超过230 KB的存储空间。1 KB约相当于1 000个文本字符——差不多是一段电子邮件的体积。因此,左上方的图在作为文件存储时,需要占用的空间约等于200条短电子邮件消息。
我们可以用下列非常简单的技术来压缩这个文件:每两行或每两列像素就忽略或“抛弃”一行或一列。抛弃把戏就是这么简单!在这个例子中,结果是得到了一张解析度更小的照片,这张解析度为160×120的新照片在图中原照片下面显示。新文件的体积只有原文件的四分之一(约57 KB)。这是因为新图片的像素只有原图片像素的四分之一多——我们同时去除了原图片宽和高各一半的像素。相当于原图片的体积减小了一半——一次是水平方向,一次是垂直方向——结果就是最终体积只有原体积的1/4。
我们还可以再用一次抛弃把戏。将新的160×120像素图片每两行或每两列像素抛弃一行或一列,得到另一张80×60的新图片,结果显示在下图的左下方。这张图片的体积又缩小了3/4,其最终体积只有14 KB。相当于原始文件体积的6%,这一压缩比率令人印象非常深刻。