1. 程式人生 > >資料壓縮編碼方法

資料壓縮編碼方法

經典的資料壓縮演算法

三大類:預測編碼、變換編碼、統計編碼

常用的解除相關性的措施是預測和變換,其實質都是進行序列的對映。

一般,預測編碼有可能完全解除序列的相關性,但須確知序列的概率特性;變換編碼一般只解除向量內部的相關性,但它可有許多可供選擇的變換方法,以適應不同的信源特性。

一、預測編碼:

若有一個離散訊號序列,序列中各離散訊號之間有一定的關聯性,則利用這個序列中若干個訊號作為依據,對下一個訊號進行預測,然後將實際的值與預測的值的差進行編碼。

預測編碼中典型的壓縮演算法有DPCM、ADPCM等,它們適合於聲音、影象資料的壓縮。

(1)DPCM中文術語為差分脈衝編碼調製(differentialpulse code modulation的縮寫)

利用樣本與樣本之間存在的資訊冗餘來進行編碼的一種資料壓縮技術

基本思想:根據過去的樣本去估算下一個樣本訊號的幅度大小,這個值稱為預測值,然後對實際訊號值與預測值之差進行量化編碼,從而就減少了表示每個樣本訊號的位數

它與脈衝編碼調製(PCM)不同的是,PCM是直接對取樣訊號進行量化編碼,而DPCM是對實際訊號值與預測值之差進行量化編碼,儲存或者傳送的是差值而不是幅度絕對值,這就降低了傳送或儲存的資料量。可適應大範圍變化的輸入訊號。

差分脈衝編碼調製(DPCM)的基本出發點就是對相鄰樣值的差值進行量化編碼。由於此差值比較小,可以為其分配較少的位元數,進而起到了壓縮數位元速率的目的。

(2)ADPCM的概念

ADPCM的中文術語為自適應差分脈衝編碼調製(adaptive difference pulse code modulation的縮寫)

綜合了APCM的自適應特性和DPCM系統的差分特性,是一種效能比較好的波形編碼技術

它的核心想法是:

利用自適應的思想改變數化階的大小,即使用小的量化階(step-size)去編碼小的差值,使用大的量化階去編碼大的差值。

使用過去的樣本值估算下一個輸入樣本的預測值,使實際樣本值和預測值之間的差值總是最小。

二、變換編碼

變換編碼是指在傳送端,先對訊號進行對映變換,然後再針對變換後的訊號進行量化和編碼;在接受端,則先將收到的訊號進行解碼等操作,然後再進行反對映變換,以再現原始訊號。變換編碼是在變換域上解除相關性,以提高資訊傳輸效率的。

變換編碼中系統壓縮資料有三個步驟,即對映變換、對映變換域取樣和量化編碼。

對於影象信源等相關性更強的信源,常採用基於正交變換的變換編碼方法進行資料壓縮。

變換編碼中的關鍵技術在於正交變換。與預測編碼一樣,正交變換是通過消除信源序列中的相關性來達到資料壓縮的。它們之間的區別在於預測編碼是在空間域(或時間域)內進行的,而變換編碼則是在變換域(或頻率域)內進行的。

變換編碼用到的演算法:如離散傅立葉變換(DFT)、離散餘弦變換(DCT)、沃爾什變換(WHT)等,其中效能較接近KL變換的是離散餘弦變換(DCT),某些情況下,DCT能獲得與KL變換相同的效能,因此DCT也被稱為準最佳變換。

三、子帶編碼

子帶編碼是一種在頻率域中進行資料壓縮的演算法。其指導思想是首先在傳送端將影象訊號在頻率域分成若干子帶,然後分別對這些子帶訊號進行頻帶搬移,將其轉換成基帶訊號,再根據奈奎斯特定理對各基帶訊號進行取樣、量化和編碼,最後合併成為一個數據流進行傳送。

子帶編碼有幾個突出的優點:

 對不同的子帶分配不同的位元數可以很好控制各個子帶的量化電平數及重建訊號時的量化誤差方差值,進而獲得更好的主觀聽音質量。

 由於各個子帶相互隔開,使各個子帶的量化噪聲也相互獨立,互不影響,量化噪聲被束縛在各自的子帶內。這樣,某些輸入電平比較低的子帶訊號不會被其它子帶的量化噪聲所淹沒。

 子帶劃分的結果,使各個子帶的取樣頻率大大的降低。

四、小波變換編碼

小波變換恰巧彌補了DCT變換未能滿足寬頻影象的高資料壓縮要求的缺憾。小波變換是一種能夠在頻率上自由伸縮的變換,因此它是一種不受頻寬約束的影象壓縮方法。

小波變換的一個重要性質是它在時域和頻域均具有很好的區域性化特徵,它能夠提供目標訊號各個頻率子段的頻率資訊。這種資訊對於訊號分類是非常有用的。

 小波變換一個訊號為一個小波級數,這樣一個訊號可由小波係數來刻畫。

五、統計編碼

給已知統計資訊的符號分配程式碼的資料無失真壓縮方法。

編碼方法:夏農-範諾編碼、霍夫曼編碼、算術編碼。

哈夫曼編碼方法:

(1)將信源訊息符號按其出現的概率大小依次排列,

(2)取兩個概率最小的字母分別配以0和1兩個碼元,並將這兩個概率相加作為一個新字母的概率,與未分配的二進符號的字母重新排隊。

(3)對重排後的兩個概率最小符號重複步驟(2)的過程。

(4)不斷繼續上述過程,直到最後兩個符號配以0和1為止。

(5)從最後一級開始,向前返回得到各個信源符號所對應的碼元序列,即相應的碼字。

費諾編碼方法:

費諾編碼方法

(1)將信源訊息符號按其出現的概率大小依次排列。                                       。

(2)將依次排列的信源符號按概率值分為兩大組,使兩個組的概率之和近於相同,並對各組賦予一個二進位制碼元“0”和“1”。

(3)將每一大組的信源符號進一步再分成兩組,使劃分後的兩個組的概率之和近於相同,並又賦予兩個組一個二進位制符號“0”和“1”。

(4)如此重複,直至每個組只剩下一個信源符號為止。

(5)信源符號所對應的碼字即為費諾碼。