1、 參考書《資料壓縮導論(第4版)》page 66
2 利用程式huff_enc和huff_dec進行以下操作(在每種情況下,利用由被壓縮影象生成的碼本)。
(a) 對sena、sensin和omaha影象時行編碼。
(b) 編寫一段程式,得到相鄰之差,然後利用huffman對差值影象進行編碼。
(c) 使用adap_huff重複(a)和(b)。
答案:(a)。
① 對sena影象時行編碼。
②對sensin影象時行編碼。
③對omaha影象時行編碼.
綜上觀察得表:
壓縮前壓縮後
計算檔名
大小檔名
大小壓縮比
①sena.img
64kb
①sena.huff
57kb
89.0625%
②sinan.img
64kb
②sinan.huff
61kb
95.3125%
③omaha.img
64kb
③omaha.huff
58kb
90.625%
4 乙個信源從符號集a=中選擇字母,概率為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*log20.15-0.04*log20.04-0.26*log20.26-0.05*log20.05-0.50*log20.50
=0.547177bit
(b)求這個信源的霍夫曼碼。
答:將a排序得:a
(c) 求(b)中**的平均長度及其冗餘度。
答:根據平均碼長計算公式l=
∑i=1,2,3....n
p(ai)*l(ai)以及(b)中求出的碼長得:
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.50×1
=1.83(bits)
冗餘度:r=l-h
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 - h
5 乙個符號集a=,其概率為p(a1)=0.1,p(a2)=0.3,p(a3)=0.25,p(a4)=0.35,使用以下過程找出一種霍夫曼碼:
(a)本章概述的第一種過程:
答:步驟過程:
1.將信源符號案出現概率的大小排序。
2.將兩個最小的概率組合相加,並繼續這一步驟始終將較高的概率分支放在上部,直到概率達到1為止。
3.對每對組合中的上邊乙個指定為1,下邊乙個指定為0(或者相反)。
4.畫出由概率1出到每個信源符號概率的路徑,順序記下沿路徑的1和0,所得即為該符號的霍夫曼編碼。
對其進行霍夫曼編碼:
其概率由大到小排列為a4 (0.35)>a2
(b)最小方差過程。
解釋這兩種霍夫曼碼的區別。
綜上兩種霍夫曼編碼計算得出,其平均碼長均為2,
方差第一種:s2=0.1(3-2)2+0.3(2-2)2+0.25(3-2)2+0.35(1-2)2=0.70
方差第二種:s2=0.1(2-2)2+0.3(2-2)2+0.25(2-2)2+0.35(2-2)2 =0
最小方差過程就是在不同的霍夫曼編碼中,選擇編碼的方差最小情況。即選擇最優二叉樹。所以第二種最優。
2、 參考書《資料壓縮導論(第4版)》 page 30
6. 在本書配套的資料集中有幾個影象和語音檔案。
(a)編寫一段程式,計算其中一些影象和語音檔案的一階熵。
(b)選擇乙個影象檔案,並計算其二階熵。試解釋一階熵和二階熵之間的差別。
(c)對於(b)中所用的影象檔案,計算其相鄰畫素之差的熵。試解釋你的發現。
答案: 分別對.img格式,.txt格式,.raw格式的一二差分熵的計算:
檔名一階熵
二階熵差分熵
earth.img
4.770801
2.568358
3.962697
text.txt
4.315677
3.122731
6.099982
berk.raw
7.151537
6.705169
83976150
.......
........
........
.......
第二次作業
execise02 1.查詢85年以後出生的學生姓名 性別和出生日期 2.列表顯示所有可能的學生選課組合 學號 課程號 3.查詢1 2 4班中陳姓同學的資訊 4.查詢所有及格的學生姓名 所選課程名及所得分數 5.統計各門課程的及格人數 課程編號 課程名 及格人數 6.統計各門課程的總人數 及格人數和...
第二次作業
第一題 p1 1 遞迴寫法,效率低 include 1.寫乙個函式返回引數值為1的個數 比如 15 0000 1111 4個1 程式原型 int count one bits unsigned int value int fuc int x else return 0 void mainp1 p1 ...
第二次作業
檔名稱 516.cpp 作 者 闕文榮 完成日期 2016 年 3 月 11 日 版 本 號 v1.1 對任務及求解方法的描述部分 用while語句控制輸出 輸入描述 略 問題描述 現在北京有一套房子,200萬,假設房價每年 10 乙個軟體工程師每年固定能賺40萬。他想買這套房子,多大的 率能夠忍受...