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