一、 参考书《数据压缩导论(第4版)》Page 66 2,4,5
3.10 项目与习题:
2. 利用程序huff_enc和huff_dec进行以下操作(在每种情况下,利用由被压缩图像生成的码本)。
(a)Sena、Sinan和Omaha图像时行编码。给出以上每一试验得出的文件大小,并解释其差别。
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)为:
H=0.15*log20.15+0.04*log20.04+0.26*log20.26+0.05*log20.05+0.50*log20.50
= 2.368 bit/符号
(b)求这个信源的霍夫曼码:
(b):
解: 首先按概率的降序排列{a5,a3,a1,a4,a2}
把最低的两个归为新的信源符号 概率相加
从根节点不断往下依次分配0,1
顺序如下:a2 a4最先归为新信源符号a1. p=0.09
a1. a1再归为新信源符号a2. p=0.24
a2. a3归为新的信源符号a3. p=0.5
只剩a3. a5 结束
分配如下:给a5 编码0 a3.编码1
a3 0 a2. 1
a1 0 a1. 1
a4 0 a2 1
故信源的霍夫曼编码如下:a5 0; a3 10;a1 110;a4 1110;a2 1111;其图如下:
(c)求(b)中代码的平均长度及其冗余度:
解:平均码长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,
选出最小的概率的两个分别赋值0 、1并把概率相加,再把概率和与剩下的几个进行相比,再选择最小两个赋值0、1并相加,
以次循环这样的过程直到完成,其最终结果如下
(b)最小方差过程
解:P(a1)=0.1,P(a2)=0.3,P(a3)=0.25,P(a4)=0.35
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.57bits
平均码长:L=0.1*3+0.3*3+0.25*2+0.35*1
=1.85bits
冗余度: L-H=1.28bits
最小方差过程: S2=0.1(3-1.282)2+0.3(3-1.282)2+0.25(2-1.282)2+0.35(1-1.282)
=1.337
二、 参考书《数据压缩导论(第4版)》Page 30 6
6.在本书配套的数据集中有几个图像和语音文件。
(a)编写一段程序,计算其中一些图像和语音文件的一阶熵。
(b)选择一个图像文件,并计算其二阶熵。试解释一阶熵与二阶熵的区别。
(c)对于(b)中所用的图像文件,计算其相邻像素之差的熵,试解释你的发现。
解:
(a)编写一段程序,计算其中一些图像和语音文件的一阶熵结果分别如下:
图像的一阶熵:
语音文件的一阶熵:
(b)选择一个图像文件,并计算其二阶熵,试解释一阶熵与二阶熵的区别:
一阶熵:
二阶熵:
发现:图像文件的二阶熵值比一阶熵值小得多。
(c)对于(b)中所用的图像文件,计算其相邻像素之差的熵,试解释你的发现:
联系(b)中图像文件,在计算各阶熵结果如下: