---恢复内容开始---
2. 利用程序huff_enc和huff_dec进行以下操作(在每种情况下,利用由被压缩图像生成的码本)。
(a) 对Sena、Sensin和Omaha图像时行编码。
给出以上每一次实验得出的文件大小并求压缩率,并解释其差别。
答:
图像名 | 压缩前 | 压缩后 | 压缩率 |
sena.img | 64kb | 56.1kb | 87.65625% |
sinan.img | 64kb | 60.2kb | 94.0625% |
mana.img | 64.kb | 57.0kb | 89.0625% |
sena压缩率:87.65625%
sinan压缩率:94.0625%
mana压缩率:89.0625%
4.一个信源从符号集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=-(0.15*log20.15+0.04*log20.04+0.26*log20.26+0.045*log20.05+0.50*log20.50)=0.548bit/symbol
(b)这个信源的霍夫曼码是A{a1,a2,a3,a4,a5}={110,1111,10,1110,0}
(c)平均码长:l=0.15*3+0.04*4+0.26*2+0.05*4+0.50*1=1.83bit/symbol
5.一个符号集A{a1,a2,a3,a4},其概率为p(a1)=0.1,p(a2)=0.3,p(a3)=0.25,p(a4)=0.35,使用以下过程找出霍夫曼码:
(a)本章概述的第一过程;
! 以空码开始;
!! 计算所有符号的频率/概率;
!!! 对所有符号按其概率排序;将符号集合划为两个概率差异最小集合;
!!!! 在第一个集合的码字前加‘0’,在第二个集合的码字前加‘1’;
!!!!! 对划分得到的两个子集递归编码,直到每个集合不能再被划分。
(b)最小方差过程。
答:这个信源的霍夫曼码是A{a1,a2,a3,a4}={001,001,00,1}
平均码长是:l=0.1*3+0.3*2+0.25*3+0.35*1=1.85
H=-(0.1*log20.1+0.3*log20.3+0.25*log20.25+0.35*log20.35)=0.568bit/symbol
冗余:l-H=2-0.568=1.282bit/symbol
方差:S2=0.1*(3-1.1.282)2+0.3*(3-1.282)2+0.25*(2-1.282)2+0.35*(1-1.282)2=1.337