参考书《数据压缩导论(第4版)》Page 66
2.利用程序huff_enc和huff_dnc进行以下操作
(a)对Sena、Sensin和Omaha图像进行编码。
所给资料code截图:
由code可得到如下表:
文件名 | 源文件大小(KB) | 压缩后大小(KB) | 压缩比 |
Sena | 64KB | 57KB | 89.06% |
Sensin | 64KB | 61KB | 95.31% |
Omaha | 64KB | 58KB | 90.62% |
(b)编写一段程序,得到相邻像素之差,然后利用huffman对差值图像进行编码。
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)计算这个信源的熵。
H=-0.15*log20.15-0.04*log20.04-0.26*log20.26-0.05*log20.05-0.50*log20.50
=0.411+0.186+0.505+0.216+0.50
=1.818 bit
(b)求这个信源的霍夫曼码。
a1:010
a2:0111
a3:00
a4:0110
a5:1
(c)求(b)中代码的平均长度及其冗余度。
平均长度l =0.15*3+0.04*4+0.26*2+0.05*4+0.5*1
=1.83 bit
冗余度l-H
=1.83-1.818
=0.012 bit
5 一个符号集A={a1, a2, a3, a4,},其概率为P(a1)=0.1,P(a2)=0.3,P(a3)=0.25,P(a4)=0.35,使用以下过程找出一种霍夫曼码:
(a)本章概述的第一种过程:
(1)按照概率的大小顺序将信号源符号排列。
(2)将出现概率最小的进行相加,并对其中的一个赋“1”,另一个赋“0”(可自定义),相加得到的结果再次按照这种方式与其它的比较进行相加,最后得到概率相加为1结束。
(b)最小方差过程。
P(a4)=0.35
P(a2)=0.3
P(a3)=0.25
P(a1)=0.1
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
参考书《数据压缩导论(第4版)》Page 30
6.在本书配套的数据集中有几个图像和语音文件。
(a)编写一段程序,计算其中一些图像和语音文件的一阶熵。
EARTH的一阶熵:
OMAHA的一阶熵:
BERK的一阶熵:
SENA.IMG的一阶熵
SENSIN.IMG的一阶熵
GABE.RAW的一阶熵
(b)选择一个图像文件,并计算其二阶熵。试解释一阶熵与二阶熵之间的差别。
GABE.RAW的一阶熵的为
GABE.RAW的二阶熵:
对比GABE文件的一阶熵和二阶熵得出,二阶熵比一阶熵要小。
(c)对于(b)中所用的图像文件,计算其相邻像素之差的熵。试解释你的发现。
GABE.RAW差熵
对比(b)中文件 GABE.RAW的一阶熵和二阶熵,可以发现差熵比一阶熵与二阶熵都要大。