美文网首页
三、熵编码

三、熵编码

作者: 一亩三分甜 | 来源:发表于2024-02-18 14:54 被阅读0次

H264H265视频编解码算法文章汇总
1、熵编码概念

  • 熵:

    • 化学与热力学概念,用于度量能量退化的指标;

    • 熵越高,物体/系统做功的能力越低;

  • 信息学中的熵:

    • 用于度量消息的平均信息量,和信息的不确定性;

    • 越是随机的、前后不相关的信息,其熵越高;

  • 信源编码定理:

    • 说明了香农熵与信源符号概率之间的关系

    • 信息的熵为信源无损编码后平均码长的下限

2、熵与混乱程度

混乱程度高

image.png

混乱程度低

image.png

3、熵编码

  • 基本思想:

    • 使前后的码字之间尽量更加随机,减少前后相关性,更加接近其信源的香农熵;
  • 常用熵编码算法:

    • 变长编码:运算复杂度和编码效率都较低,常用方法:哈夫曼编码、香农-费诺编码等;

    • 算术编码:运算较复杂,但编码效率更高;

4、熵编码的简单实现------哈夫曼编码(在图像编码MJPEG中用的多,H264中用的少)

  • 哈夫曼编码:

    • 变长编码的一种,依赖于码字的概率来构造平均长度最短的编码方法;

    • 关键步骤:建立符合哈夫曼编码规则的二叉树,即哈夫曼树;

  • 哈夫曼树:

    • 一种特殊的二叉树,终端节点个数等同于码元数,且每个终端节点带有各自的权值;

    • 加权路径长度,即根节点到终端节点的路径长度乘以权值的总和最小

5、构建哈夫曼树

image.png image.png

如何构建哈夫曼树呢?将出现频次最低的两个合并生成一个新的节点,依次循环向上合并,最终生成哈夫曼树。如上图所以,可以使用C++中的优先级队列,对所有的Node进行排序。生成了从小到大的优先级队列,顶点为出现频次最小的节点,也就是哈弗曼树中最底层最后的权值最低的节点。

排序之后可以对哈夫曼树进行遍历,左子树+0,右子树+1,生成哈夫曼码字,最终生成一个完整的哈夫曼码字。如果文本文件按照哈夫曼编码,将文本文件中的每一个字符按照码表中的字符进行替换,就实现了哈夫曼编码,若重复出现的字符越多(码字越短),压缩率越高。

须保存哈夫曼编码的码表,因为不同的信源每一个符号分布情况是不一样的,获取码表才能进行还原解码,否则不知道每一个符号的概率和生成的哈夫曼树是什么样的。

image.png

相关文章

  • Huffman编码原理及实现

    Huffman编码特点: 熵编码,编码效率受限信息理论熵极限(关于这部分具体理论记不得,参考物理的熵,熵极大,就是...

  • [FFMPEG]H.264中霍夫曼编码

    H264压缩中有个重要的算法,熵编码,熵编码分为两种cavlc(哈夫曼编码也叫变长编码)和cabac(算术编码),...

  • 信息熵、交叉熵与相对熵

    熵的定义本质上是香浓信息量log(1/p)的期望。 信息熵 编码方案完美时,最短平均编码的长度 交叉熵 编码方案不...

  • 熵压缩:信息熵、Huffman编码、算数编码、ANS+FSE

    信息熵 信息熵也叫香农信息熵,百科上有介绍。主要公式: 哈夫曼编码 使用长度不一的01串编码符号,主要是为了让最后...

  • 霍夫曼编码

    概念 霍夫曼编码(Huffman Coding),又译为哈夫曼编码、赫夫曼编码,是一种用于无损数据压缩的熵编码(权...

  • 【离散数学】树(一)哈夫曼编码基本原理

    正文之前 霍夫曼编码(Huffman Coding),又译为哈夫曼编码、赫夫曼编码,是一种用于无损数据压缩的熵编码...

  • 香农信息论笔记

    香农到底解决了什么问题? 三个基本概念:信源熵,信道容量,率失真函数 三个极限定理:无失真信源编码,限失真信源编码...

  • 熵 到信息增益

    熵也代表着根据信息的概率分布对信息编码所需要的最短平均编码长度。 熵是衡量“信息量“大小的一个数值。 在信息论里面...

  • 视频编码技术基础

    目录 简介 帧内预测 帧间预测 变换编码 熵编码 参考 1.简介 传统数字视频编码采用的基本都是基于块的混合编码框...

  • C 实现 哈夫曼编码

    哈夫曼编码是一种用于数据压缩的无损熵编码,根据压缩数据符号出现频率大小进行编码, 出现频率越高,编码后占bit 越...

网友评论

      本文标题:三、熵编码

      本文链接:https://www.haomeiwen.com/subject/koopadtx.html