这是什么意思呢?低频信号,是这种指像素之间变化比较平缓的线条。比如整片的天空和岩石表面。而高频信号,是指这种像素之间变化比较剧烈的线条,比如复杂纹理。

比如你可能根本没发现,这张图片的左下角还藏着一只花豹。这就是因为你的眼睛对高频信号不敏感。

下载.jpg

所以只要把图片中的高频信号删掉一些,就可以把图片再压小一点。

但问题是,怎么区分高频和低频信号呢?这里,就涉及到JPEG算法的精髓了。

让我们请出小李子当一下模特:如果我们只看其中一行像素的亮度值,那它的频率变化曲线是这样的,非常复杂

下载.jpg

但所有复杂的事物,都可以还原为简单事物的集合。比如不管多复杂的图案,都可以用最基础的积木搭建出来。任何一条曲线,都可以还原为若干余弦波的叠加。这行像素的频率变化曲线也一样。利用这8条基础频率曲线,就可以把它给拼凑出来。

下载.jpg

一行像素是一维的,但图片是二维的。那再把8条频率曲线竖着排一列,重叠的位置两两叠加,我们就得到了一张由64个基函数构成的“基图”。

关键就在这里,这“基图”中的这64个基函数,每个都相当于一块积木。任何一张图片的颜色和亮度图层,都可以用这些积木搭建出来。

比如我们可以把亮度图层中每8*8个像素划分成一个区块,然后用基函数去“量”这个区块,得到一个矩阵。矩阵中的每一个数字,就代表这张图需要用到多少块不同的积木。

下载.jpg

这里的275.5,就代表它需要用275.5个第一种积木,59.5个第二种积木......

下载.jpg

更妙的是,观察整个矩阵,你会发现左上角的数字远大于右下角,因为左上角的“积木”代表的是低频信号。而绝大多数图片中的主要信息,都是低频信号。而高频信号,比如你脸上的鼻孔、痘痘、皱纹,跟那张大脸比起来,只是一小部分而已。

下载.jpg

为了进一步区分低频和高频信号,专家组还提供了一组量化矩阵。只要用处理好的亮度和色度图层分别除以量化矩阵,就能得到一大堆0,只剩下9个非0的数字

下载.jpg