赫/哈/霍 夫曼(Huffman)编码 游程编码

数据压缩算法

游程编码

n分为定长游程编码和变长游程编码两类。

n定长游程编码是指编码的游程所使用的位数是固定的,一旦灰度相同且连续的个数超过了固定位数所能表示的最大值,则转入下一轮游程编码。

n变长游程编码则是指不同范围的游程使用不同位数来进行编码。

游程编码适合于二值图像编码,原因是二值图像的每一行(列)都是由若干个黑白像素段交替出现的,就可以将二元序列转换为游程长度的序列

YYYYYG
GBBBBY

5X5像素中,yellow blue green 三种颜色,分别标志为 Y B G

顺序下来就是YYYYYGGBBBBY …

你可以发现,很多时候一幅图像总是有很多重复的像素。

所以我们可以使用Y4 表示4个Y 。这样就只用了2个字符。重复操作。Y4G2B4Y…

解码的时候,逆过程就可以了。

我们也可以发现如果只有一种颜色的地方,如G1 ,反而由一个字符变成 了两个字符。如果一幅图像,重复很少,那么反而会使编码更大了。

当只有黑白的时候。那么可以这样表示,去掉 W B , 用 黑白的数字表示 。默认以白色开头,黑色开头的加上0 表示。文本类黑纸白字图像好用这个

赫/哈/霍 夫曼(Huffman)编码

核心原理就是利用概率学,把经常出现的用更短的编码来表示。

哈夫曼编码属于变长编码,是一种平均长度最短的即时可译码

n该编码对最常出现的符号赋予最短的码字,然后按符号出现概率递减顺序逐个赋予次长的码字。因此,使编码的平均长度最短。

image-20200923164733529
p i 是 s i 的 出 现 概 率 , l i , 是 对 s i 编 码 的 码 字 长 p_i是s_i的出现概率,l_i,是对s_i编码的码字长 pisili,si

L a v g 是 衡 量 一 个 压 缩 算 法 的 压 缩 率 。 L_{avg} 是衡量一个压缩算法的压缩率。 Lavg

举例

信号源 s={s1, s2, s3, s4, s5, s6},其概率分布为p1=0.4, p2=0.3, p3=0.1, p4=0.1, p5=0.06, p6=0.04,求其哈夫曼编码

S10.4
S20.3
S30.1
S40.1
S50.06
S60.04
  1. 将信源符号按出现概率从大到小排成一列,然后把最末两个符号的概率相加,合成一个概率。

  2. 把这个符号的概率与其余符号的概率按从大到小排列,然后再把最末两个符号的概率加起来,合成一个概率。

  3. 重复上述做法,直到最后剩下两个概率为止。

  4. 从最后一步剩下的两个概率开始逐步向前进行编码。每步只需对两个分支各赋予一个二进制码

1-3:

image-20200923171344107

4:

image-20200923172758031

括号 上部分表0 下半部分表1 (上1下0也行,选定,就不要改了)

括号作为二叉树,沿路径到到s即可编码

如 这里的 0.6 为根结点

s1的编码为 0

s2 的编码为 10 。从0.6 根结点开始 到左孩子结点

image-20200923173330395

s3:110 根-> 右孩子 -> 左孩子

image-20200923173311871

s4: 1110 依次类推。

唯一可解码和即时编码。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值