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

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

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

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

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

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

其中:

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

可以说:

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

信息熵与熵编码基础

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

在实时编码场景:

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

总结

熵编码是视频压缩中:

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

一句话总结:

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

相关推荐
程序猿追4 小时前
在昇腾NPU上实战部署LongCat-Video:从环境配置到长视频生成的完整指南
python·大模型·华为云·音视频
Yutengii4 小时前
小红书的视频怎么下载到本地,实测6款下载工具
音视频
非凡ghost4 小时前
Topaz Video(人工智能视频增强软件)
人工智能·windows·学习·音视频·软件需求
zbguolei4 小时前
Windows平台下SRS实时视频服务器的搭建
服务器·windows·音视频
骄傲的心别枯萎4 小时前
RV1126 NO.58:ROCKX+RV1126人脸识别推流项目之读取人脸数据库并保存到map
linux·数据库·计算机视觉·音视频·rv1126
萌虎不虎14 小时前
【在鸿蒙系统中实现录制视频预览功能】
华为·音视频·harmonyos
GISer_Jing18 小时前
AI在前端开发&营销领域应用
前端·aigc·音视频
音视频牛哥1 天前
深入探讨后台摄像头|麦克风采集与轻量级RTSP服务|RTMP推流架构设计
音视频·大牛直播sdk·安卓camera2采集推送·安卓camera2后台采集推流·安卓camera2后台rtmp·安卓camera2后台rtsp·camera2后台rtsp服务
音视频牛哥1 天前
【深度扫盲】音视频开发:拆解黑盒,从入门到精通的成长之路
人工智能·机器学习·计算机视觉·音视频·大牛直播sdk·超低延迟rtsp播放器·超低延迟rtmp播放器