图像压缩基本原理

数字图像压缩利用人类视觉系统的特性与图像数据的统计冗余,在可接受的失真范围内最大化压缩比。压缩过程分为三个核心步骤:变换编码、量化与熵编码。

压缩流程总览:
原始图像 (RGB/YCbCr) │ ▼ ┌─────────────────┐ │ 色彩空间转换 │ RGB → YCbCr │ Y: 亮度 │ • 人眼对亮度敏感 │ Cb: 蓝色差 │ • 对色度分辨率低 │ Cr: 红色差 │ • 允许色度下采样 └────────┬────────┘ ▼ ┌─────────────────┐ │ 分块处理 │ 划分为 8×8 像素块 │ Block Division │ • 局部特征捕捉 └────────┬────────┘ • 并行处理 ▼ ┌─────────────────┐ │ DCT变换 │ Discrete Cosine Transform │ 空域 → 频域 │ • 能量集中 └────────┬────────┘ • 去相关 ▼ ┌─────────────────┐ │ 量化 │ Quantization │ 精度降低 │ • 损失压缩核心 └────────┬────────┘ • 高频系数粗量化 ▼ ┌─────────────────┐ │ 之字形扫描 │ Zigzag Scan │ 排列重组 │ • 低频→高频顺序 └────────┬────────┘ • 聚集零系数 ▼ ┌─────────────────┐ │ 熵编码 │ Entropy Coding │ Huffman/算术 │ • 无损压缩 │ 编码 │ • 变长编码 └────────┬────────┘ ▼ 压缩数据流

DCT离散余弦变换

DCT将空间域的像素值转换到频率域的系数。低频系数代表图像的主要结构,高频系数代表细节与边缘。能量集中特性使得大部分信息聚集在少数低频系数中。

二维DCT正变换

对于8×8像素块 f(x,y):

F(u,v) = (1/4) C(u) C(v) Σ Σ f(x,y) x=0 y=0 × cos[(2x+1)uπ/16] × cos[(2y+1)vπ/16] C(u) = { 1/√2, if u=0 { 1, if u≠0

物理意义:

• F(0,0): DC系数,块平均亮度
• F(0,7): 水平高频
• F(7,0): 垂直高频
• F(7,7): 对角高频(噪声集中区)

能量分布特性

自然图像的DCT系数能量分布极不均匀:

低频区(左上3×3) 85-90%能量
中频区 8-12%能量
高频区(右下) 2-5%能量

这种能量集中性是压缩的理论基础:丢弃高频信息损失小,但压缩比显著提升。

DCT系数矩阵示例(8×8块):
原始像素值: DCT系数(取整): ┌─────────┐ ┌────────────┐ │ 52 55 │ │ 415 12 │ ← DC与低频AC │ 60 63 │ │ 22 3 │ │ ......│ │ 8 1 │ │ 58 61 │ │ 2 0 │ ← 高频系数接近0 └─────────┘ └────────────┘ 能量集中可视化: ███████░░ ← F(0,0) DC: 最大系数 ███░░░░░░ ← F(0,1), F(1,0): 主要AC ██░░░░░░░ █░░░░░░░░ ░░░░░░░░░ ← 高频:接近零

量化:有损压缩核心

量化将连续的DCT系数映射到离散级别,实现压缩与质量的权衡。量化表的设计基于人眼对频率的敏感度曲线。

标准量化表(Q50)

亮度量化矩阵(JPEG标准): ┌────────────────────────────────┐ │ 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│ └────────────────────────────────┘ 特点: • 左上角小:精细量化低频 • 右下角大:粗略量化高频 • 对角线递增:频率越高,量化越粗

量化过程

量化公式:

F_quantized(u,v) = round( F(u,v) / Q(u,v) ) 反量化(解码时): F_dequant(u,v) = F_quantized(u,v) × Q(u,v)

示例:

DCT系数 F(3,3) = 115
量化表 Q(3,3) = 29
量化后 = round(115/29) = 4
反量化 = 4 × 29 = 116
误差 = 116 - 115 = 1

质量因子(Quality Factor)调整:
QF=100(无损): Q(u,v) = 1(几乎无量化)
QF=50(标准): 使用标准量化表
QF=10(高压缩): Q(u,v) × 9(严重量化)

QF每降低10,文件大小约减半,但质量损失加速。QF<30时块效应明显。

熵编码:无损压缩阶段

Huffman编码

基于符号出现频率的变长编码:

符号频率统计: 符号 | 频率 | Huffman码 ─────┼──────┼────────── 0 | 45% | 0 1 | 20% | 10 -1 | 15% | 110 2 | 10% | 1110 -2 | 7% | 11110 其他| 3% | 11111... 构建过程: ┌─(100%)─┐ │ │ (45%) (55%) [0] ┌───┴───┐ (20%) (35%) [1] ┌──┴──┐ (15%) (20%) [-1] ┌─┴─┐ (10%)(10%) [2] [...]

高频符号用短码,低频符号用长码,平均码长最小化。

游程编码(RLE)

之字形扫描后,连续零的游程编码:

量化后DCT系数(之字形顺序): [415, 22, 12, 8, 3, 2, 1, 0, 0, 0, 0, ...] ↑____________↑ 连续4个零 RLE表示: (0,415) ← 0个零,值415 (0,22) ← 0个零,值22 (0,12) (0,8) (0,3) (0,2) (0,1) (4,0) ← 4个零后,值0(实际是EOB标记) EOB (End of Block): 剩余全零

自然图像高频系数量化后多为零,RLE大幅减少数据量。

压缩性能分析

质量等级 QF值 压缩比 文件大小 视觉质量 应用场景
极高质量 90-100 5:1 - 10:1 ~500KB (1MB原图) 几乎无损 专业摄影、印刷
高质量 80-90 10:1 - 15:1 ~80KB 优秀 网站展示图
标准质量 50-80 15:1 - 30:1 ~40KB 良好 社交媒体、一般网页
中等质量 30-50 30:1 - 50:1 ~25KB 可接受 缩略图、快速加载
低质量 10-30 50:1 - 100:1 ~12KB 明显块效应 占位图、极限环境

压缩伪影类型:
块效应(Blocking Artifact):8×8块边界可见,QF<40时显著
振铃效应(Ringing):边缘附近的波纹状失真,高频量化过粗导致
颜色失真:色度过度下采样(4:2:0),色彩边界模糊
蚊式噪声(Mosquito Noise):高对比边缘周围的动态噪声