音视频学习(七十六):熵编码

熵编码在视频压缩中的作用

在视频压缩体系中,熵编码是最后一道压缩关卡,其主要任务是:

在不再引入任何失真的前提下,进一步减少码率

一个典型的视频编码流程为:

复制代码
预测 → 变换 → 量化 → 熵编码

其中:

  • 预测、变换、量化负责消除时域、空域冗余并进行有损压缩
  • 熵编码只做无损压缩,消除统计冗余

可以说:

熵编码决定最终码流是否"足够小",但不影响画质

信息熵与熵编码基础

1. 信息熵的概念

熵(Entropy)源自信息论,由香农提出,用于衡量信息的不确定性:

含义:

  • 出现概率越大的符号,携带的信息量越少
  • 出现概率越小的符号,携带的信息量越大

熵编码的目标是:

让码字长度接近符号的理论最小熵值

2. 为什么视频编码适合熵编码

经过预测、变换和量化后,视频数据具有以下特征:

  • 大量 0 或小整数
  • 符号分布极不均匀
  • 相邻符号强相关

这些特性非常适合熵编码算法进行压缩。

熵编码的基本思想

熵编码遵循的核心原则是:

高概率符号用短码表示,低概率符号用长码表示

典型例子:

  • 0 出现概率最高 → 用最短码
  • 大幅度残差概率低 → 用长码

熵编码不改变符号的值,只改变表示方式。

常见熵编码方法

1. 游程编码(RLE)

原理

  • 利用连续相同符号的特性
  • 将多个相同值表示为「值 + 长度」

在视频编码中的应用

  • Zigzag 扫描后大量连续 0
  • 0-run-length 编码

特点

  • 实现简单
  • 只对连续重复有效
  • 通常作为辅助编码手段

2. 哈夫曼编码(Huffman Coding)

原理

  • 基于符号概率构建最优前缀码
  • 短码表示高概率符号

优点

  • 编码效率高
  • 实现相对简单

缺点

  • 码字长度必须是整数比特
  • 对概率变化不够灵活

应用

  • MPEG-2
  • JPEG
  • H.264 CAVLC 中的部分表

3. 算术编码(Arithmetic Coding)

原理

  • 将整个符号序列映射到一个区间
  • 可使用非整数比特表示

优点

  • 接近香农极限
  • 压缩效率高

缺点

  • 计算复杂
  • 专利和实现成本较高(早期)

应用

  • H.264 CABAC
  • H.265 CABAC
  • AV1(ANS 变种)

H.264 中的熵编码

H.264 提供了两种熵编码方式:

编码方式 特点 应用
CAVLC 简单、速度快 Baseline
CABAC 压缩率高 Main / High

1. CAVLC(Context-Adaptive Variable Length Coding)

核心思想

  • 基于上下文的可变长编码
  • 主要针对 4×4 变换块

编码内容包括:

  • 非零系数个数
  • 拖尾 1 的个数
  • 系数幅值
  • 零游程

编码流程

mathematica 复制代码
Zigzag 扫描
 → 统计非零系数
 → 编码 Trailing Ones
 → 编码 Level
 → 编码 Run Before

特点

优点:

  • 计算复杂度低
  • 无算术编码
  • 硬件实现简单

缺点:

  • 压缩效率有限
  • 对高分辨率不友好

2. CABAC(Context-Adaptive Binary Arithmetic Coding)

设计目标

  • 最大限度压缩码率
  • 利用上下文建模

核心组成

CABAC 包含三个关键步骤:

  1. 二值化(Binarization)
  2. 上下文建模(Context Modeling)
  3. 算术编码(Arithmetic Coding)

二值化

将非二值符号拆成二进制串,例如:

  • Unary
  • Truncated Unary
  • Exp-Golomb

上下文建模

  • 根据邻块、历史符号选择概率模型
  • 每个 bin 使用不同概率状态

算术编码

  • 使用二进制算术编码器
  • 动态更新概率模型

CABAC 优势

  • 比 CAVLC 节省 10%~15% 码率
  • 对复杂视频更明显

缺点:

  • 实现复杂
  • 编码延迟较高

H.265 / HEVC 中的熵编码

1. 统一使用 CABAC

HEVC 移除了 CAVLC:

  • 所有语法元素均使用 CABAC
  • 压缩效率进一步提升

2. HEVC 的改进点

  • 更精细的上下文模型
  • 更少的 bin 数
  • 更高并行度支持

结果:

在相同画质下,HEVC 比 H.264 节省约 30%~40% 码率

AV1 中的熵编码

AV1 使用的是:

  • ANS(Asymmetric Numeral Systems)

特点:

  • 介于哈夫曼与算术编码之间
  • 高压缩效率
  • 更适合并行实现
  • 无专利限制

AV1 的熵编码:

  • 更复杂
  • 感知优化更强
  • 压缩效率领先

熵编码与上下文建模

上下文建模是熵编码成功的关键:

常见上下文来源:

  • 邻近块的非零系数数目
  • 预测模式
  • 帧类型
  • 运动矢量大小

好的上下文模型可以:

  • 提高概率预测准确度
  • 减少平均码字长度

熵编码对性能的影响

1. 压缩效率

  • CABAC > CAVLC > Huffman
  • AV1 ANS 目前最优

2. 计算复杂度

  • CAVLC:低
  • CABAC:中高
  • AV1:高

3. 实时性权衡

在实时编码场景:

  • 可牺牲部分压缩率
  • 换取编码速度和低延迟

总结

熵编码是视频压缩中:

  • 唯一无损压缩模块
  • 压缩效率的最后保障
  • 决定码流体积的重要因素

一句话总结:

预测与量化决定"剩多少",熵编码决定"怎么装"

相关推荐
RTC实战笔记5 天前
Android 实时音视频接入教程:媒体补充增强信息(SEI)
音视频·媒体·rtc
潜创微科技6 天前
HDMI1.3 无线传输芯片方案 空旷 150 米量产级音视频方案
音视频
VidDown6 天前
VidDown 工具站:免费、本地优先的开发者工具箱
javascript·编辑器·音视频·视频编解码·视频
换个昵称都难6 天前
音频格式之WAV
音视频
AI创界者6 天前
PilotTTS 一键整合包(Win/Mac):8G 显存畅跑,实测解锁情绪与副语言的精准控制
人工智能·macos·aigc·音视频
u152109648496 天前
S.S.Audio PRO A2音频隔离器
嵌入式硬件·音视频·实时音视频·视频编解码·视频
VidDown6 天前
显卡处理视频技术详解:从硬解码到 NVENC,GPU 如何让视频处理起飞?
javascript·编辑器·音视频·视频编解码·视频
EasyDSS6 天前
全能音视频平台/私有化音视频系统EasyDSS!直播/点播/会议/集群对讲一站式落地
音视频
Damon_X6 天前
车载音频复习
音视频
3DVisionary6 天前
告别数据中断:XTDIC-VG视频引伸计在金属疲劳测试中3个真实案例
人工智能·音视频·应用案例·xtdic-vg·视频引伸计·疲劳测试·实战复盘