熵编码(一)-熵编码概述

1. 什么是熵

熵是什么? 熵是系统混乱程度的度量。系统越混乱无序,则熵值越大;反之熵值越小

2. 信息熵

信息熵表示信息的规律程度。信息熵值越高,说明信息的规律越少,越杂乱,也就越难以压缩。信息熵概念通常应用在数字图像编码中,因为图像像素信息、码流的句法元素值都属于信息。信息熵是信息中排出冗余后的平均信息量,信息熵的提出解决了对信息的量化度量问题。
输入信源X={x1,x2,...xn},符号概率pi表示第i个符号的概率
符号的信息量数学定义:I(X) = -logpi
I(X)表示符号的信息量,对数的底是2的时候,熵的单位是比特bit,对数的底是e的时候,熵的单位是纳特(nat/symbol)
信息熵的数学定义:H(X) = E(I(X)) = - \(\sum_{i=0}^n\) pi*logpi
H(X)表示信源X的熵即信源的每个符号平均信号量,对数的底是2的时候,熵的单位是比特(bit/symbol),对数的底是e的时候,熵的单位是纳特(nat/symbol)

3. 熵编码

熵编码:利用信源的统计特性进行码率压缩的编码,称之为熵编码,也叫做统计编码。
熵编码基本思想:使前后的码字之间尽量更加随机,减少前后相关性,使编码后码字的平均码长逼近熵极限。

  • 熵编码具有消除数据之间冗余的功能。编码器的最后一道工序,将句法元素写入输出码率
  • 熵解码是解码器的第一道工序,将码流解析出句法元素用于后续的图像重建

编码后的平均码长越接近熵,熵编码的效率越高。熵编码是一种无损编码方法,包含:香农-范诺编码、哈夫曼编码、指数哥伦布熵编码,CAVLC、CABAC等

4. 熵编码分类

算法 代表
变长编码 香农-范诺编码、哈夫曼编码、指数哥伦布编码、CAVLC
算术编码 CABAC

5. 变长编码

变长编码是一种数据编码方式,采用一个码字代表一个输入信息符号,其中码字的长度根据需要变化。

  • 指数哥伦布编码:属于可变长前缀码的一种
  • 哈夫曼编码:属于可变字长编码(VLC)的一种,使用通过评估源码字出现的概率得到的变长码表对源码字进行编码
  • CAVLC:基于上下文自适应的变长编码。根据已编码句法元素的情况动态的选择编码中使用的码表,并且随时更新拖尾系数的后缀长度,从而获得极高的压缩比
指数哥伦布编码 哈夫曼编码
信源相关性 信源无关性 依赖信源的概率分布
额外信息 无需携带额外信息 需存在与信源匹配的编码码表
压缩效率 压缩效率较低,甚至毫无压缩效果 压缩效率高

6. 算术编码

算术编码是图像压缩的主要算法之一,是一种熵编码算法。和其他熵编码方法不同,其他熵编码采用将输入信号分割成符号再对每个符号进行编码,而算术编码是直接将整个输入信号编码为一个满足(0.0<=n<1)的浮点数n

  • CABAC:基于上下文自适应的二进制算术编码,CABAC是H264/AVC标准中两种熵编码的一种,它的核心编码算法就是算术编码
posted @ 2024-07-20 09:27  尹佑壮  阅读(23)  评论(0编辑  收藏  举报