zoukankan      html  css  js  c++  java
  • 作业2

    1、 参考书《数据压缩导论(第4版)》Page 66

         

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

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

             我的答案:  Sena:   压缩前 -> 64.0 KB (65,536 字节);  压缩后 -> 56.1 KB (57,503 字节)

                              压缩比=压缩后÷压缩前=56.1÷64 =87.66%

                             Sensin: 压缩前 -> 64.0 KB (65,536 字节);  压缩后 -> 60.2 KB (61,649 字节)

                              压缩比=压缩后÷压缩前=60.2÷64 =94.06%

                             Omaha: 压缩前 -> 64.0 KB (65,536 字节);  压缩后 -> 57.0 KB (58,374 字节)

                              压缩比=压缩后÷压缩前=57.0 ÷64 =79.06%

            (b) 编写一段程序,得到相邻之差,然后利用huffman对差值图像进行编码。

             我的答案

            

      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)计算这个信源的熵。

              我的答案:H= P(a1)㏒2P(a1)+P(a2)㏒2P(a2)+P(a3)㏒2P(a3)+P(a4)㏒2P(a4)+P(a5)㏒2P(a5)

                                = -0.15㏒2 0.15 - 0.04㏒2 0.04 - 0.26㏒2 0.26 - 0.05㏒2 0.05 -  0.50㏒2 0.50

                                =0.547

           (b)求这个信源的霍夫曼码。

              我的答案:其概率由大到小排列为  0.50,0.26,0.15,0.05,0.04, 即 a5,a3,a1,a,a

         第一次划分:0.50  | 0.26,0.15,0.05,0.04

         第二次划分:0.26  | 0.15,0.05,0.04

         第三次划分:0.15  | 0.05,0.04

         第四次划分:0.05  | 0.04

         故:a的编码为 110

           a的编码为 1111

           a的编码为 10

           a的编码为 1110

           a的编码为 0

           (c)求(b)中代码的平均长度及其冗余度。

              我的答案:根据平均码长l=∑pj×

            L=p(a)×l(a)+p(a)×l(a)+p(a)×l(a)+p(a)×l(a)+p(a)×l(a)

             =0.15×3+0.04×4+0.26×2+0.05×4+0.50×1

                              =1.83(bits)

                             根据冗余度r=L-H  

                                              =1.83 - 0.547

                                              =1.283

      3-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)题中所指的第一种过程即霍夫曼编码过程,其算法步骤:

                        ①按照符号出现的概率减少的顺序将待编码的符号排成序列。

                        ②从中依次选取概率最小的两个开始

                        ③上面的赋值为0,下面的赋值为1(或相反)。

                        ④依次操作,直至完成。

                     其概率由大到小排列为  0.35,0.3,0.25,0.1   即 a4a3,a2a1

                    

                b)最小方差过程

                                 

          这两种霍夫曼码的主要区别:这两种编码的冗余度是相同的,但是码字长度的方差却存在差异。方差越大,缓冲区的要求就更高,所以应尽量考虑方差较小的编码算法。

    2、 参考书《数据压缩导论(第4版)》   Page 30

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

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

           我的答案:通过执行预定程序,这些文件的一阶熵如下截图所示:

                       

                        

                        

                        

                        

                        

                       

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

           我的答案:选择图像文件EARTH.IMG。其一阶熵为: 4.770801                                    

                         

                         二阶熵为:2.568358

                       

                       从图中可以清楚的看到,这个图像的一阶熵比二阶熵要大很多。也就是说,文件经过二阶压缩处理要比一阶压缩处理要好,可以增大压缩度,减少存储空间。  

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

           我的答案:对于选择图像文件EARTH.IMG来说,其一阶熵: 4.770801; 二阶熵:2.568358; 差分熵:3.962697

                       

                        经过对比发现:差分熵介于一阶熵和二阶熵之间。较一阶熵而言,差分熵是比较理想的压缩算法。

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 排队打水问题
    Java实现 蓝桥杯VIP 算法提高 排队打水问题
    Java实现 蓝桥杯VIP 算法提高 排队打水问题
    Java实现 蓝桥杯VIP 算法提高 特殊的质数肋骨
    Java实现 蓝桥杯VIP 算法提高 特殊的质数肋骨
    Java实现 蓝桥杯VIP 算法提高 特殊的质数肋骨
    Java实现 蓝桥杯VIP 算法提高 特殊的质数肋骨
    现在使用控件, 更喜欢继承(覆盖控件已有的函数,很奇怪的一种使用方式)
    Controls 属性与继承 TShape 类的小练习(使用TShape可以解决很多图形问题)
    QT创建窗口程序、消息循环和WinMain函数(为主线程建立了一个QEventLoop,并执行exec函数)
  • 原文地址:https://www.cnblogs.com/weijiqun/p/4784686.html
Copyright © 2011-2022 走看看