例如:一張A4(210mm×297mm) 幅面的照片,若用中等分辨率(300dpi)的掃描儀按真彩色掃描,其數據量為多少?共有210*297/25.4/25.4*300=29002個象素,每個像素是24位,其數據量為29002*24=696Kb。
(補充說明dpi代表每平方英寸的點數,1英寸=1000mil=25.4mm)
例如,一幅具有中等分辨率(640*480像素)真彩色圖像(24位/像素),它的數據量約為每幀640*480*24=7.37Mb。若要達到每秒25幀的全動態顯示要求,每秒所需的數據量為184Mb,而且要求系統的數據傳輸速率必須達到184Mb/s,這在目前是無法達到的。
再例如:對聲音,用16位/樣值的PCM編碼,采樣速率選為44.1kHz,則雙聲道立體聲聲音每秒將有44.1*16*2=176KB的數據量,而1分鐘的數據量則為176KB*60=10.56MB,而一首歌通常在3-5分鐘,可想而知如果不進行數據壓縮存儲量和交換量都相當驚人。
總之,大數據量的圖象信息會給存儲器的存儲容量,通信干線信道的帶寬,以及計算機的處理速度增加極大的壓力。單純靠增加存儲器容量,提高信道帶寬以及計算機的處理速度等方法來解決這個問題是不現實的,這時就要考慮壓縮。
壓縮的理論基礎是信息論。從信息論的角度來看,壓縮就是去掉信息中的冗余,即保留不確定的信息,去掉確定的信息(可推知的),也就是用一種更接近信息本質的描述來代替原有冗余的描述。這個本質的東西就是信息量(即不確定因素)。
壓縮可分為兩大類:第一類壓縮過程是可逆的,也就是說,從壓縮后的圖象能夠完全恢復出原來的圖象,信息沒有任何丟失,稱為無損壓縮;第二類壓縮過程是不可逆的,無法完全恢復出原圖象,信息有一定的丟失,稱為有損壓縮。選擇哪一類壓縮,要折衷考慮,盡管我們希望能夠無損壓縮,但是通常有損壓縮的壓縮比(即原圖象占的字節數與壓縮后圖象占的字節數之比,壓縮比越大,說明壓縮效率越高)比無損壓縮的高。
圖象壓縮一般通過改變圖象的表示方式來達到,因此壓縮和編碼是分不開的。圖象壓縮的主要應用是圖象信息的傳輸和存儲,可廣泛地應用于廣播電視、電視會議、計算機通訊、傳真、多媒體系統、醫學圖象、衛星圖象等領域。
壓縮編碼的方法有很多,主要分成以下四大類:(1)象素編碼;(2)預測編碼;(3)變換編碼;(4)其它方法。
所謂象素編碼是指,編碼時對每個象素單獨處理,不考慮象素之間的相關性。在象素編碼中常用的幾種方法有:(1)脈沖編碼調制(Pulse Code Modulation,簡稱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 Modulation,簡稱DM);微分預測編碼(Differential Pulse Code Modulation,DPCM),具體的細節在此就不詳述了。
所謂變換編碼是指,將給定的圖象變換到另一個數據域(如頻域)上,使得大量的信息能用較少的數據來表示,從而達到壓縮的目的。變換編碼有很多,如(1)離散傅立葉變換(Discrete Fourier Transform,簡稱DFT);(2)離散余弦變換(Discrete Cosine Transform,簡稱DCT);(3)離散哈達瑪變換(Discrete Hadamard Transform,簡稱DHT)。
其它的編碼方法也有很多,如混合編碼(Hybird Coding)、矢量量化(Vector Quantize,VQ) 、LZW算法。在這里,我們只介紹LZW算法的大體思想。