A. 壓縮編碼
在介紹圖象的壓縮編碼之前,先考慮一個問題:為什麼要壓縮?其實這個問題不用我回答,你也能想得到。因為圖象信息的數據量實在是太驚人了。舉一個例子就明白:一張A4(210mm×297mm) 幅面的照片,若用中等解析度(300dpi)的掃描儀按真彩色掃描,其數據量為多少?讓我們來計算一下:共有(300×210/25.4) ×(300×297/25.4)個象素,每個象素佔3個位元組,其數據量為26M位元組,其數據量之大可見一斑了。
如今在Internet上,傳統基於字元界面的應用逐漸被能夠瀏覽圖象信息的WWW(World Wide Web)方式所取代。WWW盡管漂亮,但是也帶來了一個問題:圖象信息的數據量太大了,本來就已經非常緊張的網路帶寬變得更加不堪重負,使得World Wide Web變成了World Wide Wait。
總之,大數據量的圖象信息會給存儲器的存儲容量,通信干線信道的帶寬,以及計算機的處理速度增加極大的壓力。單純靠增加存儲器容量,提高信道帶寬以及計算機的處理速度等方法來解決這個問題是不現實的,這時就要考慮壓縮。
壓縮的理論基礎是資訊理論。從資訊理論的角度來看,壓縮就是去掉信息中的冗餘,即保留不確定的信息,去掉確定的信息(可推知的),也就是用一種更接近信息本質的描述來代替原有冗餘的描述。這個本質的東西就是信息量(即不確定因素)。
壓縮可分為兩大類:第一類壓縮過程是可逆的,也就是說,從壓縮後的圖象能夠完全恢復出原來的圖象,信息沒有任何丟失,稱為無損壓縮;第二類壓縮過程是不可逆的,無法完全恢復出原圖象,信息有一定的丟失,稱為有損壓縮。選擇哪一類壓縮,要折衷考慮,盡管我們希望能夠無損壓縮,但是通常有損壓縮的壓縮比(即原圖象占的位元組數與壓縮後圖象占的位元組數之比,壓縮比越大,說明壓縮效率越高)比無損壓縮的高。
圖象壓縮一般通過改變圖象的表示方式來達到,因此壓縮和編碼是分不開的。圖象壓縮的主要應用是圖象信息的傳輸和存儲,可廣泛地應用於廣播電視、電視會議、計算機通訊、傳真、多媒體系統、醫學圖象、衛星圖象等領域。
壓縮編碼的方法有很多,主要分成以下四大類:(1)象素編碼;(2)預測編碼;(3)變換編碼;(4)其它方法。
所謂象素編碼是指,編碼時對每個象素單獨處理,不考慮象素之間的相關性。在象素編碼中常用的幾種方法有:(1)脈沖編碼調制(Pulse Code Molation,簡稱PCM);(2)熵編碼(Entropy Coding);(3)行程編碼(Run Length Coding);(4)位平面編碼(Bit Plane Coding)。其中我們要介紹的是熵編碼中的哈夫曼(Huffman)編碼和行程編碼(以讀取.PCX文件為例)。
所謂預測編碼是指,去除相鄰象素之間的相關性和冗餘性,只對新的信息進行編碼。舉個簡單的例子,因為象素的灰度是連續的,所以在一片區域中,相鄰象素之間灰度值的差別可能很小。如果我們只記錄第一個象素的灰度,其它象素的灰度都用它與前一個象素灰度之差來表示,就能起到壓縮的目的。如248,2,1,0,1,3,實際上這6個象素的灰度是248,250,251,251,252,255。表示250需要8個比特,而表示2隻需要兩個比特,這樣就實現了壓縮。
常用的預測編碼有Δ調制(Delta Molation,簡稱DM);微分預測編碼(Differential Pulse Code Molation,DPCM),具體的細節在此就不詳述了。
所謂變換編碼是指,將給定的圖象變換到另一個數據域(如頻域)上,使得大量的信息能用較少的數據來表示,從而達到壓縮的目的。變換編碼有很多,如(1)離散傅立葉變換(Discrete Fourier Transform,簡稱DFT);(2)離散餘弦變換(Discrete Cosine Transform,簡稱DCT);(3)離散哈達瑪變換(Discrete Hadamard Transform,簡稱DHT)。
其它的編碼方法也有很多,如混合編碼(Hybird Coding)、矢量量化(Vector Quantize,VQ) 、LZW演算法。在這里,我們只介紹LZW演算法的大體思想。
值得注意的是,近些年來出現了很多新的壓縮編碼方法,如使用人工神經元網路(Artificial Neural Network,簡稱ANN)的壓縮編碼演算法、分形(Fractl)、小波(Wavelet) 、基於對象(Object Based)的壓縮編碼演算法、基於模型(Model –Based)的壓縮編碼演算法(應用在MPEG4及未來的視頻壓縮編碼標准中)。