AV1 变换编码:流程位置、量化关系与压缩增益
引言
变换编码是现代视频压缩的基石之一。在 AV1 编解码器中,变换处于整个编码流程的核心位置,连接着预测与熵编码两大环节。理解变换在流程中的位置及其与量化的关系,是掌握 AV1 压缩原理的关键。
值得强调的是:整体上,AV1 相比 VP9/HEVC 在变换域的增益,大致贡献了 10–20% 的码率节省(具体视内容而定),是 AV1 整体 20–35% 码率优势的重要来源之一。这一增益主要来自更丰富的变换类型、更灵活的变换尺寸,以及变换与量化的协同优化。
一、变换在编码流程中的位置
1.1 编码端整体流程
变换处于编码流程的核心,承上启下:
原始图像 │ ▼ ┌─────────┐ │ 预测 │ ◄──── 帧内/帧间预测 └─────────┘ │ ▼ 残差 = 原始 - 预测 │ ▼ ┌─────────┐ │ 变换 │ ◄──── DCT/ADST/IDTX 等 └─────────┘ │ (变换系数) ▼ ┌─────────┐ │ 量化 │ ◄──── 量化步长 Qstep └─────────┘ │ (量化系数) ▼ ┌─────────┐ │ 熵编码 │ ◄──── 系数扫描 + 上下文建模 └─────────┘ │ ▼ 比特流1.2 三个关键理解
- 变换的输入是预测残差,而非原始像素
- 变换的输出是变换系数,将能量集中到少数低频系数
- 量化是整个流程中唯一引入信息损失的环节,是有损压缩的根源
二、为什么"先变换再量化"?
2.1 变换的作用:能量集中(Energy Compaction)
残差信号经过变换后,能量集中在少数低频系数上,大部分高频系数接近于 0:
残差(空域) 变换系数(频域) ┌──┬──┬──┬──┐ ┌──┬──┬──┬──┐ │ 5│ 4│ 6│ 3│ │48│ 2│ 1│ 0│ ← 低频能量大 ├──┼──┼──┼──┤ ├──┼──┼──┼──┤ │ 4│ 5│ 3│ 6│ ──► │ 1│ 0│ 0│ 0│ ├──┼──┼──┼──┤ ├──┼──┼──┼──┤ │ 6│ 3│ 5│ 4│ │ 0│ 0│ 0│ 0│ ← 高频接近0 ├──┼──┼──┼──┤ ├──┼──┼──┼──┤ │ 3│ 6│ 4│ 5│ │ 0│ 0│ 0│ 0│ └──┴──┴──┴──┘ └──┴──┴──┴──┘2.2 量化的作用:丢弃视觉不敏感信息
- 人眼对高频细节不敏感
- 量化将大量小系数变为0,大幅减少需要编码的数据
- 配合熵编码实现高压缩比
正是"能量集中 + 量化丢弃高频"的组合,使压缩成为可能。
三、量化的数学关系
3.1 量化与反量化
量化过程(编码端):
Level=round(CoeffQstep) \text{Level} = \text{round}\left(\frac{\text{Coeff}}{\text{Qstep}}\right)Level=round(QstepCoeff)
反量化过程(解码端):
Coeff′=Level×Qstep \text{Coeff}' = \text{Level} \times \text{Qstep}Coeff′=Level×Qstep
注意:Coeff' ≠ Coeff,存在量化误差,这正是失真的来源。
3.2 AV1 中的量化参数
| 概念 | 说明 |
|---|---|
| QP(Quantization Parameter) | 量化参数,取值范围 0~255 |
| Qstep | 由 QP 通过查找表/公式映射得到 |
| DC/AC 分离 | DC 系数和 AC 系数可使用不同量化步长 |
QP 与质量的关系:
- QP 越小→ Qstep 越小 → 量化越精细 → 质量越高,码率越大
- QP 越大→ Qstep 越大 → 量化越粗糙 → 质量越低,码率越小
四、解码端流程(逆过程)
比特流 │ ▼ ┌─────────┐ │ 熵解码 │ └─────────┘ │ (量化系数 Level) ▼ ┌─────────┐ │ 反量化 │ ◄──── Coeff' = Level × Qstep └─────────┘ │ (重建系数) ▼ ┌─────────┐ │ 反变换 │ ◄──── IDCT/IADST 等 └─────────┘ │ (重建残差) ▼ 重建像素 = 预测 + 重建残差 │ ▼ ┌─────────┐ │ 环路滤波│ ◄──── 去块、CDEF、环路恢复 └─────────┘ │ ▼ 重建图像五、AV1 的特色:变换与量化的协同优化
AV1 在变换域的压缩增益,很大程度上来自以下协同优化机制。
5.1 丰富的变换类型适配残差特性
AV1 支持 DCT、ADST、Flip ADST、IDTX 的多种组合(共 16 种):
- ADST适合帧内预测残差(误差随距离增大)
- IDTX(恒等变换)对屏幕内容、锐利边缘特别有效
- 这种"按内容选变换"的能力,直接提升了能量集中效率
5.2 灵活的变换尺寸
从 4×4 到 64×64,并支持矩形变换(如 16×32、4×16 等):
- 更好匹配不同纹理结构
- 64×64 变换采用零化(zeroing),只保留左上 32×32 系数,平衡效率与复杂度
5.3 量化矩阵(Quantization Matrix)
AV1 支持频率相关量化:
- 对不同频率位置使用不同量化强度
- 高频可更激进地量化(人眼不敏感)
5.4 RDO 框架下的联合选择
编码器在率失真优化(RDO)框架下联合决定变换尺寸、变换类型与量化级别:
对每个块尝试: ├─ 变换尺寸(4×4 ~ 64×64) ├─ 变换类型(DCT/ADST/IDTX/...) └─ 量化级别(QP 调整) │ ▼ 计算 RD Cost = D + λ·R │ ▼ 选择 Cost 最小的组合其中:
- D(Distortion):失真,主要来自量化误差
- R(Rate):码率,编码系数所需比特
- λ:拉格朗日乘子,由 QP 决定
5.5 系数优化(Trellis Quantization)
- 不是简单四舍五入,而是在 RD 意义下微调每个系数
- 有时将系数调小或置 0,能在牺牲极小失真下显著降低码率
六、核心关系总结
┌──────────────────────────────────────────┐ │ 变换:空域 → 频域,能量集中(无损) │ │ ↓ │ │ 量化:丢弃高频细节(有损,失真来源) │ │ ↓ │ │ 二者配合:实现高效压缩 │ │ │ │ QP ↑ → Qstep ↑ → 失真↑ 码率↓ │ │ QP ↓ → Qstep ↓ → 失真↓ 码率↑ │ └──────────────────────────────────────────┘关键要点:
- 变换本身不损失信息(理论可逆),损失发生在量化
- 变换是为量化服务的——能量集中后量化才高效
- AV1 通过变换类型、尺寸、量化参数的联合 RDO实现最优压缩
- 量化是编码质量与码率权衡的总开关
七、压缩增益与整体贡献
回到本文开头的结论:
整体上,AV1 相比 VP9/HEVC 在变换域的增益,大致贡献了 10–20% 的码率节省(具体视内容而定),是 AV1 整体 20–35% 码率优势的重要来源之一。
这一增益的来源可以归纳为:
| 增益来源 | 说明 |
|---|---|
| 更丰富的变换类型 | 16 种组合更精准匹配残差能量分布 |
| 更灵活的变换尺寸 | 矩形变换、大块变换更贴合内容结构 |
| 频率相关量化 | 量化矩阵针对人眼特性优化比特分配 |
| 联合 RDO 与系数优化 | 在率失真层面挖掘每一比特的价值 |
需要注意的是,实际增益高度依赖内容:
- 屏幕内容/图形:IDTX 等工具贡献突出,增益偏高
- 平稳自然场景:DCT 已较优,变换域额外增益相对有限
- 高动态/复杂纹理:ADST 与灵活尺寸的优势更明显
变换域的优化与 AV1 的预测、滤波等其他模块协同叠加,最终共同构成了相比上一代标准 20–35% 的整体码率优势,使 AV1 在相同画质下显著节省带宽与存储成本。