zoukankan      html  css  js  c++  java
  • 第二次作业

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

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

    文件名 压缩前 压缩后 压缩比
    SENA  64KB  57KB  89.0%
    SINAN  64KB  61KB  95.3%
    OMAHA  64KB  58KB  90.6%

      

    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(ai)logP(Ai)

    =-( P(a1)log2P(a1)+P(a2)log2P(a2)+P(a3)log2P(a3)+P(a4)log2P(a4)+P(a5)log2P(a5) )

    = -0.15log2 (0.15)-0.04log2 (0.04)-0.26log2 (0.26)-0.05log2 (0.05)-0.50log2 (0.50)

    =0.41+0.19+0.51+0.22++0.50

    =1.817(bits)

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

    解:

             所以:

             a1的霍夫曼编码为001

             a2的霍夫曼编码为0000

              a3的霍夫曼编码为01

              a4的霍夫曼编码为0001

              a5的霍夫曼编码为1

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

                平均码长:L=1*0.5+2*0.26+3*0.15+4*0.05+4*0.04=1.83(bits/symbol)

                冗余度:L-H=0.013(bits/symbol)

    5.一个符号集A={a1,a2,a3,a4},其概率为P(a1)=0.1,P(a2)=0.3,P(a3)=0.25,P(a4)=0.35,使用以下过程找出一种霍夫曼码:

    (a)本章概述的第一种过程;

    答:(a)

            1.将每个符号出现的概率大小按照从小到大的顺序从上到下排列。

            2.将最小的两个符号的概率相加,并继续这一步骤,始终将较高的概率分支放在下部,得到新的概率。

            3.再将得到的这个新的概率放到剩下的符号的概率中进行比较重复步骤1、2,直到最后相加的概率为1。

            5.画出每个信源符号概率到1处的路径,记下沿路径的1和0。

            5.则从右到左就得到霍夫曼编码。

    符号 编码
    a1 000
    a2 01
    a3 001
    a4 1

               

               

     平均码长:L=1*0.35+2*0.3+3*0.25+3*0.1=2

    S2=0.1(3-2)2+0.3(2-2)2+0.25(3-2)2+0.35(1-2)2

             =0.70

                

    (b)最小方差过程

    符号 编码
    a1 11
    a2 01
    a3 10
    a4 00

          平均码长l=0.1*2+0.3*2+0.25*2+0.35*2=2

    S2=0.1(2-2)2+0.3(2-2)2+0.25(2-2)2+0.35(2-2)2

             =0

    (a)(b)相比较,最小方差树是第二种!

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

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

    文件名 一阶熵
    SENA.IMG 6.834299
    SENSIN.IMG 7.317944
    OMAHA.IMG 6.942426
    EARTH.IMG 4.770801
    GABE.RAW 7.116338
    BERK.RAW 7.151537
     test.txt  4.315677

           

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

    文件名 二阶熵
    SENA.IMG  3.625204 
    SENSIN.IMG  4.301673 
    OMAHA.IMG  4.488626
    EARTH.IMG  2.568358 
    GABE.RAW  6.654578
    BERK.RAW  6.705169
     test.txt  3.122731

         

    通过这些图像的一阶熵、二阶熵表的对比,可以看出,二阶熵都比一阶熵小。

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

            答:

    文件名 差分熵
    SENA.IMG  3.856899 
    SENSIN.IMG  4.541547
    OMAHA.IMG  6.286834
    EARTH.IMG  3.962697 
    GABE.RAW  8.978236
    BERK.RAW  8.976150 
     test.txt  6.099982

    图片的差分熵位于一阶熵和二阶熵之间。而RAW格式的文件的差分熵似乎都比一阶熵,二阶熵要大。

  • 相关阅读:
    The Hungarian algorithm Template
    用二进制方法求两个整数的最大公约数(GCD)
    <climits>头文件使用方法
    开大Stack的一个小技巧
    2014 HDU多校弟五场J题 【矩阵乘积】
    2014 HDU多校弟五场A题 【归并排序求逆序对】
    POJ 2449 求第K短路
    UVALive 6467 Strahler Order 拓扑排序
    POJ 1041 John's trip 无向图的【欧拉回路】路径输出
    Ural 1450 求最长路 SPFA
  • 原文地址:https://www.cnblogs.com/zhaoyue1/p/4813589.html
Copyright © 2011-2022 走看看