1-2 利用程序huff_enc和huff_dec进行以下操作(在每种情况下,利用由被压缩图像生成的码本)。
(a) 对Sena、Sensin和Omaha图像时行编码。
答:图片Sena、Sensin和Omaha的原图大小均为64.0KB,压缩后Sena、Sensin和Omaha的图片大小分别为56.1KB、60.2KB、57.0KB,所以几张图片的压缩比分别为:0.877、0.941、0.891
1-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=-( P(a1)*log2* P(a1)+
P(a2)*log2* P(a2)+
P(a3)*log2* P(a3)+
P(a4)*log2* P(a4)+
P(a5)*log2* P(a5))
=-(0.15* log2*0.15+0.04* log2*0.04+0.26* log2*0.26+
0.05* log2*0.05+0.50* log2*0.50)
=0.548 bits/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.83bits/symbol
冗余:
l-H=1.282bits/symbol
1-5 一个符号集A={a1, a2, a3, a4,},其概率为P(a1)=0.1,P(a2)=0.3,P(a3)=0.25,P(a4)=0.35,使用以下过程找出一种霍夫曼码:
(a) 本章概述的第一种过程:
(b) 最小方差过程。
答:
(a) 以空码开始;计算所有符号的频率/概率;对所有符号按其概率排序;将符号集合划为两个概率差异最小集合;在第一个集合的码字前加‘0’,在第二个集合的码字前加‘1’;对划分得到的两个子集递归编 码,直到每个集合不能再被划分。
(b) A={a1, a2, a3, a4,}={001,001,00,1}
H=-(0.1* log2*0.1+0.3* log2*0.3+0.25* log2*0.25+
0.35* log2*0.35)
=0.568bits/symbol
平均码长:
l=0.1*3+0.3*3+0.25*2+0.35*1
=1.85bits/symbol
冗余:
l-H=1.282bits/symbol
最小方差过程:
S2=0.1(3-1.282)2+0.3(3-1.282)2+0.25(2-1.282)2+0.35(1-1.282)2
=1.337
2-6 在配套的数据集中有几个图像和语音文件。
(a) 编写一段程序,计算其中一些图像和语音文件的一阶熵。
(b) 选择一个图像文件,并计算其二阶熵。试解释一阶熵与二阶熵之间的差别。
(c) 对于(b)中所用的图像文件,计算其相邻像素之差的熵。试解释你的发现。
答:
(a)程序代码是老师提供的,由程序计算出文件中的一些图像和语音文件的一阶熵分别为: EARTH.IMG=4.770801bit/字符; DMAHA.IMG=6.942426bit/字符; SENA.IMG=6.834299bit/字 符;SENSIN.IMG=7.317944bit/字符; BERK.RAW=7.151537bit/字符; GABE.RAM=7.116338bit/字符;
(b)图片EARTH.IMG的二阶熵为2.568358bit/字符,由(a)知图片EARTH.IMG的一阶熵为4.770801bit/字符,比较该图片的一阶熵和二阶熵可以得出,二阶熵要小,所以出现概率较低。
(c)图片EARTH.IMG的相邻像素之差的熵为3.962697bit/字符,由结果可知相邻像素之差位于图片的一阶熵和二阶熵之间。