一、jpeg压缩流程的简单介绍
jpeg压缩是基于YUV颜色空间进行压缩编码的,首先将RGB转化成YUV,然后将像素值减去128,转化到范围-128~127。后要进行采样,一般来说有3中采样方式:4:4:4,4:2:2和4:1:1;4:4:4即不进行下采样,4:1:1是指一个2x2的单元,采样4个Y,1个V和1个U(具体想了解采样的可以看下其它博客)。后直接进行8x8的DCT变换,将时域像素值转化到频域。后根据参数quality(质量因子或压缩因子)进行量化。量化之后按zigzag扫描之后进行编码。
二、量化,质量因子
jpeg压缩有两张固定的8x8的量化表,压缩时根据指定的质量因子计算其具体的量化系数进行量化,质量因子范围1~100。当质量因子是100时,量化因子都是1,质量因子是1是最大程度的压缩。libjpeg中默认量化表分别是亮度量化表、色度量化表。
亮度默认量化表:
[ 16, 11, 10, 16, 24, 40, 51, 61,
12, 12, 14, 19, 26, 58, 60, 55,
14, 13, 16, 24, 40, 57, 69, 56,
14, 17, 22, 29, 51, 87, 80, 62,
18, 22, 37, 56, 68, 109, 103, 77,
24, 35, 55, 64, 81, 104, 113, 92,
49, 64, 78, 87, 103, 121, 120, 101,
72, 92, 95, 98, 112, 100, 103, 99]
色度默认量化表:
[ 17, 18, 24, 47, 99, 99, 99, 99,
18,