哈夫曼编码

1.利用程序huff_enc和huff_dec进行以下操作(在每种情况下,利用由被压缩图像生成的码本)

(a)对Sena、Sensin和Omaha图像进行编码。

(b)编写一段程序,得到相邻像素之差,然后利用huffman对差值图像进行编码。

给出以上每一次试验得出的文件大小,并解释其差别。

解:(a)


压缩比=压缩前/压缩后

则根据压缩比可得:压缩比越大,图片被压缩就越小,占用的内存就越小,就压缩空间越大。

2.一个信源从符号集A={a1,a2,a3,a4,a5}中选择字母,概率为P(a1)=0.15,P(a2)=0.04,P(a3)=0.26,P(a4)=0.05,P(a5)=0.50.

(a)计算这个信源的熵。

(b)求这个信源的霍夫曼码。

(c)求(b)中的代码的平均长度,及其冗余。

 解:

  (a) 根据公式:H(A)=-P(a1)*log2P(a1)-P(a2)*log2P(a2)-P(a3)*log2P(a3)-P(a4)*log2P(a4)-P(a5)*log2P(a5)

                              =-0.15*log20.15-0.04*log20.04-0.26*log20.26-0.05*log20.05-0.50*log20.50

                              =1.818(bit)

  (b)

        码长     码字     信源符号      出现概率

         1         1          a5            0.5

         2       01          a3            0.26

         3      001          a1            0.15

         4     0001         a4            0.05

         4     0000         a2            0.04 

则得出该信源的霍夫曼编码为:

  A1=110  A2=1111  A3=10  A4=1110  A5=0

码长:A1:3    A2:4    A3:2     A4:4     A5:1

  (c)根据公式:(码长*概率)

      代码平均长度:L=3*0.15+4*0.04+2*0.26+4*0.05+1*0.5

                        =1.83bit

      冗余:V=1-N

                =1-(H/L*100%)

                =1-(1.818/1.83*100%)

                =0.0066


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值