1、 参考书《数据压缩导论(第4版)》Page 66
3-2 利用程序huff_enc进行以下操作(在每种情况下,利用由被压缩图像生成的码本)。
(a) 对Sena、Sensin和Omaha图像时行编码。
答:(a) Sena:压缩前 : 64.0 KB (65,536 字节) —— 压缩后 : 56.1 KB (57,503 字节) 压缩比:88%
Sensin: 压缩前 : 64.0 KB (65,536 字节) —— 压缩后 : 60.2 KB (61,649 字节) 压缩比:94%
Omaha: 压缩前 :64.0 KB (65,536 字节) —— 压缩后 :56.1 KB (57,503 字节) 压缩比:89%
3-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)log2P(a1) - P(a2)log2P(a2) - P(a3)log2P(a3) - P(a4)log2P(a4) - P(a5)log2P(a5)
= - 0.15 * log2 (0.15) - 0.04 * log2 (0.04) - 0.26 * log2 (0.26) - 0.05 * log2 (0.05) - 0.5 * log2 (0.5)
=0.411+0.1856+0.5044+0.216+0.5
=1.817(bits)
(b)
答: 霍夫曼编码:a1 001
a2 0000
a3 01
a4 0001
a5 1
(c)
L=P(a1)*l(a1)+P(a2)*l(a2)+P(a3)*l(a3)+P(a4)*l(a4)+P(a5)*l(a5)
=0.15*3+0.04*4+0.26*2+0.05*4+0.5*1
=1.83(bits)
冗余度为H-L=2.368-1.83=0.538
2-6. 在本书配套的数据集中有几个图像和语音文件。
(a)编写一段程序,计算其中一些图像和语音文件的一阶熵。
(b)选择一个图像文件,并计算其二阶熵。试解释一阶熵和二阶熵之间的差别。
(c)对于(b)中所用的图像文件,计算其相邻像素之差的熵。试解释你的发现。
答:
(a):
文件名 | 一阶熵 | 二阶熵 | 差分熵 |
SENA.IMG | 6.834299 | 3.625204 | 3.856899 |
SENSIN.IMG | 7.317944 | 4.301673 | 4.541547 |
OMAHA.IMG | 6.942426 | 4.488626 | 6.286834 |
EARTH.IMG | 4.770801 | 2.568358 | 3.962697 |
GABE.RAW | 7.116338 | 6.654578 | 8.978236 |
BERK.RAW | 7.151537 | 6.705169 | 8.976150 |
(b).二阶熵都比一阶熵小
(c).像素之差的熵比一阶熵和二阶熵都大