跳转至

图片压缩

JPEG扫描整张图片,再把人眼感知不到的图片信息删掉。人眼看到的画面和真实的画面存在一定的差距。

人眼有两种感光细胞:

  1. 视感细胞:感知光的强度、明暗程度。
  2. 视锥细胞:感知颜色

每个眼睛有1亿个视感细胞,600万个感知颜色的视锥细胞。人眼对图片的亮度感知能力比较强。对颜色的感知能力差一点。

JPEG利用人眼的感知差距对图片压缩。

图片的最小单元是像素,每个像素由红蓝绿三个颜色组成。根据深浅每个颜色都有0~255的颜色值(RGB值),组合起来就是一个像素的颜色。

  1. 在格式转换时,算法根据每个像素的RGB的3个值,算出3个新的数值(亮度、蓝色色度、红色色度)。这一步没有删除任何数据,图片文件没有变小。
  2. 因为人眼对颜色的感知能力比较差,JPEG算法先将蓝色和红色的色度图层按2X2像素的一个区块来划分,然后计算每个区块的色度平均值,并删掉重复的信息,再缩小图像,使这个区块只占一个像素空间。眼睛感知不到的色度信息被缩减到了1/4,亮度图层保持不变。此时图片变为了原来一半的大小。查看图片时,蓝色和红色色度图层会放大到和亮度图层一样的大小,3个图层堆叠起来生成一组新的RGB值,图片看起来依然丰富饱满。因为JPEG删除掉的都是人眼感知不到的信息。
  3. 人眼感知不到的还有高频率的元素,JPEG将这一特性用到了算法中。高频率颜色数据难以甄别。相机拍摄自然风景时部分画面是失焦的,同样可以删除人眼难以察觉的高频率的颜色变化。JPEG会扫描图像的各个部分,并找到高频率色度或亮度的像素,把这些人眼难以感知的元素进行删除。删除多余信息同样也是合并的过程,然后将红色和蓝色色度的区块放大与亮度的图层堆叠。根据图片中高频率范围的大小,合并的区块可以是16*16像素。
  4. 手机拍摄的效果远超我们看到的表面,因为相机的镜头比人眼能捕捉更多的细节。