霍夫曼编码

霍夫曼在1952年提出了霍夫曼编码,霍夫曼编码是一种无损的统计编码方法,利用信息符号概率分布特性来改编字长进行编码。适用于多元独立信源。霍夫曼编码对于出现概率大的信息符号用字长小的符号表示,对于出现概率小的信息用字长大的符号代替。如果码字长严格按照所对应符号出现的概率大小逆序排列,则编码结果的平均字长一定小于其他排列形式。

a. 编码效率:

熵:平均信息量度,图像中各灰度级比特数的统计平均值。

      (无记忆信源)

M:灰度级数

Pk:灰度级Wk出现的概率

平均码长:

编码效率:

     ~熵编码的目的:使R尽可能减少至H。

霍夫曼编码设计过程

霍夫曼编码的分配过程

编码结果为:I1=0,I2=11,I3=100,I4=101;

根据上述数据求得图像信息源熵为:H=1.78;

平均码字长度:R=1.81;

编码效率:

冗余度:

在实际应用中霍夫曼编码构造出来的编码值往往不是唯一的,这是因为对概率分配大小的0和1值不同造成的,但由于其平均码字长度总是相同的,所以不影响编码效率和数据压缩的性能。

相关的matlab函数:

 [dict,avglen]=huffmandict(sym,prob):该函数用于产生霍夫曼编码的编码词典。sym是待编码的符号数组,prob为每个符号出现的概率。dict为编码词典,avglen为平均码字长度。

enco=huffmanenco(sig,dict)利用上述函数产生的dict对sig进行编码。

dsing=huffmandeco(enco,dict)该函数利用dict对enco进行解码。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值