news 2026/10/14 20:44:41

AV1 变换编码:流程位置、量化关系与压缩增益

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AV1 变换编码:流程位置、量化关系与压缩增益

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 ↓ → 失真↓ 码率↑ │ └──────────────────────────────────────────┘

关键要点:

  1. 变换本身不损失信息(理论可逆),损失发生在量化
  2. 变换是为量化服务的——能量集中后量化才高效
  3. AV1 通过变换类型、尺寸、量化参数的联合 RDO实现最优压缩
  4. 量化是编码质量与码率权衡的总开关

七、压缩增益与整体贡献

回到本文开头的结论:

整体上,AV1 相比 VP9/HEVC 在变换域的增益,大致贡献了 10–20% 的码率节省(具体视内容而定),是 AV1 整体 20–35% 码率优势的重要来源之一。

这一增益的来源可以归纳为:

增益来源说明
更丰富的变换类型16 种组合更精准匹配残差能量分布
更灵活的变换尺寸矩形变换、大块变换更贴合内容结构
频率相关量化量化矩阵针对人眼特性优化比特分配
联合 RDO 与系数优化在率失真层面挖掘每一比特的价值

需要注意的是,实际增益高度依赖内容:

  • 屏幕内容/图形:IDTX 等工具贡献突出,增益偏高
  • 平稳自然场景:DCT 已较优,变换域额外增益相对有限
  • 高动态/复杂纹理:ADST 与灵活尺寸的优势更明显

变换域的优化与 AV1 的预测、滤波等其他模块协同叠加,最终共同构成了相比上一代标准 20–35% 的整体码率优势,使 AV1 在相同画质下显著节省带宽与存储成本。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/14 20:42:54

微信小程序二手交易平台源码解析:云开发与订单状态机实战

简介:这是一套面向微信小程序开发学习者的二手交易平台完整源码,覆盖商品发布、浏览、议价、支付及订单管理等核心流程,适合希望快速上手小程序电商开发的初中级开发者。资源包为zip压缩格式,共54个文件,包含wxml页面结…

作者头像 李华
网站建设 2026/10/14 20:39:36

React Native集成鸿蒙原生组件:从ArkTS桥接到调试全指南

我记得第一次在React Native项目里接到“要支持鸿蒙组件”这个需求时,整个人是懵的。RN是跨端框架没错,但鸿蒙OS不是Android,也不是iOS,它有自己的生态、自己的UI框架,甚至连线程模型都不一样。你不可能指望一个“Andr…

作者头像 李华
网站建设 2026/10/14 20:38:14

ShardingSphere分库分表实战:从选型到避坑的完整指南

1. 为什么我要认真啃一遍 ShardingSphere 最早接触分库分表,是在一个订单量刚过千万级的系统里。当时单表数据量逼近两千万行,查询开始出现肉眼可见的延迟,索引维护成本也越来越高。团队第一反应是“加索引、加缓存”,但治标不治本…

作者头像 李华