为什么数字图像可以被压缩?

01、图片是由像素块组成的,像素经实际测量后,把真实值与预测值的差值求出来,并利用这个差值来表示第二个格子的色彩,后面的色彩值就可以滚雪球似的一个个求出来,被称为无损压缩 。如果把很少的差值彻底丢弃,这种方法属于有损压缩 。

为什么数字图像可以被压缩?

文章插图
如果想要搞清楚这个问题,就要从图像是如何被数字化的谈起 。先来看一张玩具鸭子的图片是怎么被数字化的 。
为什么数字图像可以被压缩?

文章插图
首先,要把这张图片分成若干小块,每个小块中的颜色用一个数字来表示 。如果图像是纯黑纯白两色的,那每块只用1 或0 表示即可 。如果图像是16 色的,那每块就要用4 位二进制数来表示,因为4 位二进制数有16 种组合,每种组合表示一种颜色,正好可以表示16 种颜色 。而真彩色位图的每个小块,都是由不同等级的红、绿、蓝三种色彩组合的,表达起来就更复杂一些 。如果每种颜色有28 个等级,那就可以有224 种颜色,这样一来,每小块就需要24 位二进制数来表示,才能囊括所有色彩 。
由此可见,数字图像色彩越绚丽,需要记录的二进制数就越多 。小色块越多,分布得越密,则一幅图的总数据量就越大 。
回头来看这个玩具鸭子图片,如果像图中所示被分成了154 个色块(11?4)(11?4),并按真彩色位图来计算,则总数据量就是154?4=3696154?4=3696比特 。这些小格子显然是太大了,如果这样来切分图片,还原后的图片就不能表现图片的细节 。在实际应用中切分的格子要密得多 。这些格子其实就是我们常说的像素 。格子分得越多表示像素越高,也就是分辨率越高,大家都熟悉的显示器分辨率就是1024?681024?68 。所谓数字化图片,就是将图片的画面信息用二进制数字来表示 。
为什么数字图像可以被压缩?

文章插图
知道了图像数字化的道理,再来看图像为什么可以被压缩和还原 。先看一张滑雪图,由于人体的色彩变化比较多,而天空和雪的色彩却非常单调,可以想象,天空与雪所代表的每个小格颜色的数值应该非常接近,图右下的原始数据是8个相邻格子的色彩数据,由于两个相邻格子的数据差异很小,所以可以用第一个格子的数据来表达第二个格子数据的预测值,经实际测量后,把真实值与预测值的差值求出来,并利用这个差值来表示第二个格子的色彩,那么,实际记录下的就是第三行差值 。恢复数据时,用前面一个值加上差值,就是当前的色彩值,只要有第一位的基础值,后面的色彩值就可以滚雪球似的一个个求出来 。用差值来记录色彩,只是简单地进行了很多个减法运算,在还原时再加回来,数据并没有一丁点的损失,因此被称为无损压缩 。如果把很少的差值彻底丢弃,在还原时让一个格子的色彩信息代表了周围很多格子的色彩,则压缩率更高,但这样一来格子之间的微小差别就丢失了,这种方法属于有损压缩 。
压缩文件有很多种格式,你在自己的图片文件后看到的“.bmp”或“.jpg”就是文件格式的名称 。bmp 格式是将图像的每个格子都独立记录的,因此数据量很大 。如果按照前述的预测差值运算后,就变成了有损压缩式,jpg 格式就是其中之一 。对于画质基本相同的两幅图像,jpg 格式的数据量要比bmp 小得多 。不过,虽然jpg 是有损压缩的,但画质的损失非常小 。因为它是很智能的,比如它可以自动对有大面积相似色彩的飞机图片给予较大的压缩率,而对人群图片给予较小的压缩率 。

推荐阅读