第二作业——肖祥英

P66

2.利用程序huff_enc和huff_dec进行一下操作(在每种情况下,利用由被压缩图像生成的码本)。

(a)对Sena、Sensin和Omaha图像进行编码。

给出以上每一试验得出的文件大小,并解释其差别。

答:根据文件程序调试结果如下图所示:

文件名

压缩前

压缩后

压缩率

Sena

64

57

89%

Sensin

64

61

95%

Omaha

64

58

90%

所以压缩率一般是越小越好,但是压得越小,解压时间就越长。

 

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=-0.15*(log2(0.15))-0.04*(log2(0.04))-0.26 *(log2(0.26))-0.05*(log2(0.05))-0.50*(log2(0.50))=1.83

(b)根据上述的概率得:

字母

概率

码字

a1

0.15

000

a2

0.04

0010

a3

0.26

01

a4

0.05

0011

a5

0.50

1

   (c)L=0.15*3+0.04*4+0.26*2+0.05*4+0.5*1=1.83

        L-H=0

 

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)一、为每个字符创建一个集合

字母        

概率        

码字

集合

集合的概率

a1       

0.1  

 

a1

0.1  

a2    

0.3    

 

a2

0.3    

a3       

0.25

 

a3

0.25

a4       

0.35

 

a4

0.35

二、根据集合的概率对集合进行排序(升序)

字母        

概率        

码字

集合

集合的概率

a1       

0.1  

 

a1

0.1  

a2    

0.3    

 

a3

0.25 

a3       

0.25

 

a2

0.3

a4       

0.35

 

a4

0.35

三、对最前面集合的字母的码字中插入前缀 ‘1’

字母        

概率        

码字

集合

集合的概率

a1       

0.1  

1

a1

0.1  

a2    

0.3    

 

a3

0.25 

a3       

0.25

 

a2

0.3

a4       

0.35

 

a4

0.35

四、对第二个集合中字母的码字中插入前缀‘0’

字母        

概率        

码字

集合

集合的概率

a1       

0.1  

1

a1

0.1  

a2    

0.3    

 

a3

0.25 

a3       

0.25

0

a2

0.3

a4       

0.35

 

a4

0.35

五、合并最前面的两个集合

字母        

概率        

码字

集合

集合的概率

a1       

0.1  

1

a1a3

0.35

a2    

0.3    

 

a2

0.3

a3       

0.25

0

a4

0.35

a4       

0.35

 

 

 

六、根据集合的概率对集合进行排序(升序)

字母        

概率        

码字

集合

集合的概率

a1       

0.1  

1

a2

0.3

a2    

0.3    

 

a1a3

0.35

a3       

0.25

0

a4

0.35

a4       

0.35

 

 

 

 

七、对最前面集合的字母的码字中插入前缀 ‘1’

 

字母        

概率        

码字

集合

集合的概率

a1       

0.1  

1

a2

0.3

a2    

0.3    

1

a1a3

0.35

a3       

0.25

0

a4

0.35

a4       

0.35

 

 

 

 

 

 

 

 

 

 

 

 

 

八、对第二个集合中字母的码字中插入前缀‘0’

字母        

概率        

码字

集合

集合的概率

a1       

0.1  

01

a2

0.3

a2    

0.3    

1

a1a3

0.35

a3       

0.25

00

a4

0.35

a4       

0.35

 

 

 

九、合并最前面的两个集合

字母        

概率        

码字

集合

集合的概率

a1       

0.1  

01

a1a2 a3

0.65

a2    

0.3    

1

a4

0.35

a3       

0.25

00

 

 

a4       

0.35

 

 

 

十、根据集合的概率对集合进行排序(升序)

字母        

概率        

码字

集合

集合的概率

a1       

0.1  

01

a4

0.35

a2    

0.3    

1

a1a2 a3

0.65

a3       

0.25

00

 

 

a4       

0.35

 

 

 

十一、对最前面集合的字母的码字中插入前缀 ‘1’

字母        

概率        

码字

集合

集合的概率

a1       

0.1  

01

a4

0.35

a2    

0.3    

1

a1a2 a3

0.65

a3       

0.25

00

 

 

a4       

0.35

1

 

 

十二、对第二个集合中字母的码字中插入前缀‘0’

字母        

概率        

码字

集合

集合的概率

a1       

0.1  

001

a4

0.35

a2    

0.3    

01

a1a2 a3

0.65

a3       

0.25

000

 

 

a4       

0.35

1

 

 

十三、合并最前面的两个集合

字母        

概率        

码字

集合

集合的概率

a1       

0.1  

001

a1a2a3a4

 

a2    

0.3    

01

 

 

a3       

0.25

000

 

 

a4       

0.35

1

 

 

  则平均码长l=0.1*3+0.3*2+0.25*3+0.35*1=2;

 

P66

6 .  在本书配套的数据集中有几个图像和语音文件。

(a)编写一段程序 ,计算其中一些图像和语音文件的一阶熵

(b)选择一个图像文件,并计算其二阶熵。是解释一阶熵与二阶熵之间的差别。

(c)对于(b)中所用的图像文件,计算其相邻像素之差的熵。并解释你的发现。

 

文件名

一阶熵

二阶熵

差分熵

BERK

7.151537

 6.705169

8.976150 

EARTH

4.770801

2.568358 

3.962697 

GABE

7.116338

 6.654578

 8.978236

OMAHA

6.942426

 4.488626

 6.286834

SENA

6.834299

3.625204 

3.856899 

SENSIN

7.317944

4.301673 

4.541547 

 

 

 

 

 

 

 

 

 

 

 

 

答:(a)BERK、EARTH、GABE图像的一阶熵分别为 7.151537、4.770801、7.116338;

        OMAHA、SENA、SENSIN语音的一阶熵分别为6.942426、6.834299、7.317944。

    (b)EARTH图像的二阶熵为2.568358,一阶熵为4.770801。可以明显看出一阶熵比二阶熵大。

    (C)EARTH图像的一阶熵为4.770801,二阶熵为2.568358,差分熵为3.962697,我们可以看出差分熵在一阶熵和二阶熵之间。

 

posted @ 2015-09-09 11:22  肖祥英  阅读(175)  评论(0编辑  收藏  举报