一種基于部分霍夫曼樹(shù)的數(shù)據(jù)壓縮編碼方法
【專利摘要】本發(fā)明涉及一種基于部分霍夫曼樹(shù)的數(shù)據(jù)壓縮編碼方法,該方法首先通過(guò)較為粗略但計(jì)算十分簡(jiǎn)便的方法為所有需編碼的字符預(yù)先分配一個(gè)編碼長(zhǎng)度,從而構(gòu)成一個(gè)分層的編碼表稱為預(yù)編碼表;然后以預(yù)編碼表為基礎(chǔ)對(duì)霍夫曼樹(shù)中一些特定部分進(jìn)行構(gòu)建;在構(gòu)建部分霍夫曼樹(shù)的同時(shí),動(dòng)態(tài)的調(diào)整字符的編碼長(zhǎng)度,實(shí)現(xiàn)對(duì)預(yù)編碼表的修改,直到其滿足了最優(yōu)編碼表的條件為止。這樣不用構(gòu)建一個(gè)完整的霍夫曼樹(shù),就能獲得與經(jīng)典霍夫曼算法同樣的編碼效果。采用本發(fā)明可以有效地消除經(jīng)典霍夫曼算法中的冗余計(jì)算,提高了編碼效率,用于對(duì)數(shù)據(jù)的編碼過(guò)程,提高實(shí)時(shí)性,同時(shí)降低對(duì)能源的消耗。
【專利說(shuō)明】一種基于部分霍夫曼樹(shù)的數(shù)據(jù)壓縮編碼方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)壓縮領(lǐng)域,更具體地涉及一種基于部分霍夫曼樹(shù)的數(shù)據(jù)壓縮編碼 方法,以通過(guò)構(gòu)建部分霍夫曼樹(shù)實(shí)現(xiàn)快速數(shù)據(jù)壓縮編碼的方法。
【背景技術(shù)】
[0002] 隨著計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的蓬勃發(fā)展,整個(gè)網(wǎng)絡(luò)的數(shù)據(jù)量正呈指數(shù)型增長(zhǎng)。雖然計(jì) 算機(jī)的處理速度、硬盤(pán)容量以及網(wǎng)絡(luò)帶寬也有了巨大的進(jìn)步,但仍難以適應(yīng)數(shù)據(jù)增長(zhǎng)的速 度。如何將數(shù)據(jù)壓縮的更小,壓縮的更快一直以來(lái)都是人們積極研究的方向。
[0003] 熵編碼是數(shù)據(jù)壓縮的一種重要方式。簡(jiǎn)單地說(shuō),熵編碼的內(nèi)涵就是對(duì)一段數(shù)據(jù)中 出現(xiàn)概率高的字符用較短的碼字代替,相應(yīng)的較少出現(xiàn)的字符則用相對(duì)長(zhǎng)的碼字代替,這 樣就達(dá)到了對(duì)數(shù)據(jù)壓縮的目的,所以熵編碼可以看作是一個(gè)分配碼字的過(guò)程。在由q個(gè)字 符組成的字符集{叫,a 2,…,a,}中,字符ai(i=l,2,…,q)發(fā)生的概率為Pi,分配給它的編碼 長(zhǎng)度為Q,最優(yōu)編碼便是指平均編碼長(zhǎng)度:
[0004]
【權(quán)利要求】
1. 一種基于部分霍夫曼樹(shù)的數(shù)據(jù)壓縮編碼方法,所述的編碼方法包括步驟: 1) 統(tǒng)計(jì)數(shù)據(jù)中各個(gè)字符的出現(xiàn)概率,得到字符集及與其相對(duì)應(yīng)的概率集; 2) 對(duì)數(shù)據(jù)的字符集中的各個(gè)字符預(yù)先分配一個(gè)預(yù)編碼長(zhǎng)度,構(gòu)成分層的預(yù)編碼表;其 中,所述的預(yù)編碼表中每一層的字符擁有相同的編碼長(zhǎng)度,較低層字符的概率小于較高層 字符的概率;該預(yù)編碼表中相鄰的兩層之間有一個(gè)固定的概率邊界,且相鄰兩個(gè)邊界值為 二倍關(guān)系; 3) 以預(yù)編碼表為基礎(chǔ)自底向上的逐層構(gòu)建部分霍夫曼樹(shù);在構(gòu)建過(guò)程中,首先遞推的 計(jì)算各層的節(jié)點(diǎn)個(gè)數(shù);如果一層中節(jié)點(diǎn)個(gè)數(shù)為偶數(shù),則繼續(xù)計(jì)算上一層的節(jié)點(diǎn)個(gè)數(shù);如果 一層中節(jié)點(diǎn)個(gè)數(shù)為奇數(shù),需首先對(duì)該層節(jié)點(diǎn)個(gè)數(shù)偶數(shù)化,并動(dòng)態(tài)調(diào)整字符的編碼長(zhǎng)度,同時(shí) 更新編碼表;如果調(diào)整后的編碼表滿足最優(yōu)編碼表的條件,則終止構(gòu)建部分霍夫曼樹(shù),否則 重復(fù)步驟3)繼續(xù)計(jì)算上一層的節(jié)點(diǎn)個(gè)數(shù); 其中,所述最優(yōu)編碼表的條件為
為編碼表中各個(gè)字 符的編碼長(zhǎng)度; 4) 根據(jù)經(jīng)過(guò)上述步驟3)修改后的預(yù)編碼表輸出最優(yōu)編碼表,對(duì)數(shù)據(jù)進(jìn)行壓縮編碼。
2. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)壓縮編碼方法,其特征在于,所述的預(yù)編碼表的層序即 該層字符的編碼長(zhǎng)度。
3. 根據(jù)權(quán)利要求1或2所述的數(shù)據(jù)壓縮編碼方法,其特征在于,所述的預(yù)編碼表的建立 方法包括步驟: 21) 確定分層邊界,規(guī)定第n層與第n-1層概率邊界值為:Un=2-n+°_5,第n層與第n+1層 概率邊界值為:Un+1=2f°_5 ; 22) 在字符集{叫,a2, ? ? ?,aq}中,若字符屮的概率Pi滿足Un < Pi彡Un+1,則將屮填入 預(yù)編碼表的第n層。
4. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)壓縮編碼方法,其特征在于,所述的步驟3)中計(jì)算部分 霍夫曼樹(shù)中各層的節(jié)點(diǎn)個(gè)數(shù)的公式為: Sn=Cn+Sn+1/2 (n=l,2,...,M); 其中,Sn為部分霍夫曼樹(shù)中第n層的節(jié)點(diǎn)個(gè)數(shù),Cn為預(yù)編碼表第n層的字符個(gè)數(shù),M為 最大層序。
5. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)壓縮編碼方法,其特征在于,所述的步驟3)中部分霍夫 曼樹(shù)第n層節(jié)點(diǎn)個(gè)數(shù)Sn為奇數(shù)時(shí),對(duì)于該層節(jié)點(diǎn)個(gè)數(shù)進(jìn)行偶數(shù)化具體包括以下步驟: 31) 找到第n層概率最大的節(jié)點(diǎn)C_與第n-1層概率最小的節(jié)點(diǎn)Cmin以及以它們?yōu)楦?節(jié)點(diǎn)的樹(shù)T_和Tmin; 32) 以這兩棵樹(shù)作為左右子樹(shù),構(gòu)成一棵新樹(shù); 33) 節(jié)點(diǎn)Cmax與節(jié)點(diǎn)Cmin的概率之和如果大于第n-1層的上界值,子樹(shù)Tmax中的所有節(jié) 點(diǎn)提升一層,否則就將子樹(shù)Tmin中的節(jié)點(diǎn)下降一層; 34) 找到被調(diào)整的子樹(shù)T_或者Tmin中所含的葉子節(jié)點(diǎn),更新預(yù)編碼表中與其對(duì)應(yīng)的字 符層序。
6. 根據(jù)權(quán)利要求5所述的數(shù)據(jù)壓縮編碼方法,其特征在于,所述的步驟31)中尋找C_、 Tmax與Cmin、Tmin的具體步驟包括: 311) 設(shè)定一個(gè)層序的中間變量p,初始值為p=M ; 312) 將第p層概率最大的21?個(gè)節(jié)點(diǎn)按概率大小順序排列,依次作為左右子節(jié)點(diǎn)構(gòu)建 2pti個(gè)新節(jié)點(diǎn),新節(jié)點(diǎn)的概率等于其左右子節(jié)點(diǎn)概率的和;將這些新節(jié)點(diǎn)的概率逐個(gè)與編 碼表中第P-1層字符的概率進(jìn)行比較,得到這兩部分中概率最大的前21?個(gè)節(jié)點(diǎn); 313) 類似于步驟312)將第p層概率最小的前2p_n+1個(gè)節(jié)點(diǎn)按概率大小順序排列,依次 作為左右子節(jié)點(diǎn)構(gòu)建2^個(gè)新節(jié)點(diǎn),新節(jié)點(diǎn)的概率等于其左右子節(jié)點(diǎn)概率的和;將這些新 節(jié)點(diǎn)的概率逐個(gè)與編碼表中第P-1層字符的概率進(jìn)行比較,得到這兩部分中概率最小的前 2p_n個(gè)節(jié)點(diǎn); 314) 如果p大于n,將p減1,重復(fù)執(zhí)行步驟312)與步驟313);如果p等于n+1則輸出 第n層概率最大節(jié)點(diǎn)Cmax,并追溯該節(jié)點(diǎn)的構(gòu)成,找出Tmax,將p減1,并執(zhí)行步驟313);如果 P等于n則結(jié)束循環(huán),輸出Cmin并追溯該節(jié)點(diǎn)的構(gòu)成,找出Tmin ;。
7.根據(jù)權(quán)利要求1所述的數(shù)據(jù)壓縮編碼方法,其特征在于,所述的步驟4)中對(duì)最優(yōu)編 碼表的輸出采用范式霍夫曼編碼規(guī)范。
【文檔編號(hào)】H03M7/40GK104283568SQ201310294301
【公開(kāi)日】2015年1月14日 申請(qǐng)日期:2013年7月12日 優(yōu)先權(quán)日:2013年7月12日
【發(fā)明者】臺(tái)玉朋, 王海斌, 汪俊 申請(qǐng)人:中國(guó)科學(xué)院聲學(xué)研究所