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

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

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

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

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

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

其中:

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

可以说:

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

信息熵与熵编码基础

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. 实时性权衡

在实时编码场景:

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

总结

熵编码是视频压缩中:

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

一句话总结:

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

相关推荐
REDcker4 天前
WebCodecs VideoDecoder 的 hardwareAcceleration 使用
前端·音视频·实时音视频·直播·webcodecs·videodecoder
gihigo19984 天前
基于TCP协议实现视频采集与通信
网络协议·tcp/ip·音视频
山河君5 天前
四麦克风声源定位实战:基于 GCC-PHAT + 最小二乘法实现 DOA
算法·音视频·语音识别·信号处理·最小二乘法·tdoa
音视频牛哥5 天前
Android平台RTMP/RTSP超低延迟直播播放器开发详解——基于SmartMediaKit深度实践
android·人工智能·计算机视觉·音视频·rtmp播放器·安卓rtmp播放器·rtmp直播播放器
qq_416276425 天前
通用音频表征的对比学习
学习·音视频
美狐美颜sdk5 天前
Android全局美颜sdk实现方案详解
人工智能·音视频·美颜sdk·视频美颜sdk·美狐美颜sdk
EasyDSS5 天前
私有化部署EasyDSS视频点播能力:全链路视频技术赋能,打造企业级视听新体验
音视频·hls·m3u8·点播技术·智能转码
qq_416276425 天前
DeLoRes——一种通用的音频表征学习新方法(DeLoRes(基于 Barlow Twins 的冗余最小化方法)
学习·音视频
Q_4582838685 天前
从定位到视频:808 + 1078 在各行业的落地实践
音视频
山顶望月川5 天前
实测MiniMax-Hailuo-02:当“开工大吉“变成“无字天书“,国产AI视频模型的能与之不能
人工智能·音视频