参考书《数据压缩导论(第4版)》Page 66
2. 利用程序huff_enc和huff_dec进行以下操作(在每种情况下,利用由被压缩图像生成的码本)。
(a)对Sena、Sensin和Omaha图像时行编码。
(b)编写一段程序,得到相邻之差,然后利用huffman对差值图像进行编码。
(c) 使用adap_huff重复(a)和(b)。
解:(a)
图片Sena、Sensin和Omaha的原图大小均为64.0KB,压缩后Sena、Sensin和Omaha的图片大小分别为56.1KB、60.2KB、57.0KB,所以几张图片的压缩比分别为:87.7%、94.1%、89.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(s)=0.15*log20.15+0.04*log20.04+0.26*log20.26+0.05*log20.05+0.50*log20.50
= 2.368 bit/
(b)这个信源的霍夫曼码如下:
a1 110;a2 1111;a3 10;a4 1110 ;a5 0
(c)平均长度:L=1*0.5+2*0.26+3*0.15+4*0.05+4*0.04=1.83
冗余度:H-L=2.368-1.83=0.538
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)
把各字符出现的概率从小到大排列:P(a1)=0.1,P(a2)=0.3,P(a3)=0.25,P(a4)=0.35,对划分得到的两个子集递归编 码,直到每个集合不能再被划分。
(b)
第一种方法的方差S12=0.35*(1-2)2+0.3*(2-2)2+(0.25+0.1)*(3-2)2=0.7
第二种方法的方差S22=(0.35+0.1+0.3+0.25)*(2-2)2=0
第二种编码比较实用,因为方差小,变化不大、
6.
在配套的数据集中有几个图像和语音文件。
(a) 编写一段程序,计算其中一些图像和语音文件的一阶熵。
(b) 选择一个图像文件,并计算其二阶熵。试解释一阶熵与二阶熵之间的差别。
(c) 对于(b)中所用的图像文件,计算其相邻像素的熵。之差的试解释你的发现。
解:(a)
由代码调试得:EARTH.IMG=4.770801bit/字符; DMAHA.IMG=6.942426bit/字符; SENA.IMG=6.834299bit/字符;SENSIN.IMG=7.317944bit/字符; BERK.RAW=4.315677bit/字符; GABE.RAM=3.856989bit/字符;
(b)由(a)知图片EARTH.IMG的一阶熵为4.770801bit/字符,图片EARTH.IMG的二阶熵为2.568358bit/字符,所以二阶熵出现概率较低
(c)相邻像素之差的熵为:4.7770801-2.568358=2.2087221bit/字符;所以该图片位于一阶熵和二阶熵之间。