JPEG 学习笔记陈硕chenshuo@chenshuo.com2005 年 11 月JPEG 静态图像压缩的基本(baseline)算法分 4 个步骤[1]:1. 按 8 × 8 象素分块2. 离散余弦变换(DCT)3. 量化4. 熵编码如果图片是彩色的,那么通常在第一步同时做色彩空间变换(RGB → YCbCr)。编码算法的框图见图1。图 1 - JPEG 编码器框图[1]解码算法是编码算法的逆过程,框图见图2。图 2 - JPEG 解码器框图[1]JPEG 标准[2]中还定义了无损压缩算法,不过基本没人用。除了 baseline方式,还有progressive 方式和 hierarchical 方式,本文只谈 baseline 方式。1目录1 算法描述与比较 . . . . . . . . . . . . . . . . . . . . . . . . . . . .31.1分块及预处理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31.2变换编码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31.3量化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61.4行程编码与熵编码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72 实现细节. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82.1ijg-jpeg 实现分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92.1.1预处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112.1.2色彩转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132.1.3扩展边界 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .142.1.4下采样 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .152.1.5JPEG 压缩 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .172.1.6DCT 与量化 . . . . . . . . . . . . . . . . . . . . . . . . . . . .182.1.7“之” 字型扫描与熵编码 . . . . . . . . . . . . . . . . . . ....