2.4 圖像壓縮編碼
2.4.1 資訊編碼
資料的傳輸和存儲都需要很大的成本,所傳輸資料量越大,成本就越高(因為傳輸的資料量大,流量就越大,耗費電力、路由等一系列計算資源的成本就越多),資料量大,存儲所占的空間也就越多,成本也會越大。盡管由于成本的原因 ,有很多的資料仍然不是用最精簡的方式儲存的,而是用最适宜于處理這些資料的方式儲存的。比如字處理軟體中用ASCII的格式儲存文本,因為這樣處理友善;計算機的程式用二進制代碼進行儲存,因為其能直接在計算機上執行。和最精簡的編碼方式相比,這些容易直接使用和友善處理的編碼方式所形成的檔案大概要大一倍左右。對于很多其他的應用,精簡的編碼方式會更加有效,我們将解決這類問題的技術通稱為資料壓縮技術。
資料壓縮技術就是對資訊采用高效的編碼,資料壓縮技術中有很多種高效的壓縮算法。通常每一個壓縮算法,都是将資料的編碼方式從容易處理的編碼方式轉換為較精簡的編碼方式,精簡的方式雖然并不是最容易處理的方式,但是其所占得空間較小,傳輸會更快。在需要處理的時候,我們再将編碼的方式轉化為容易處理的方式。
圖像檔案的一個明顯特點就是占用空間大。是以,研究圖像編碼與壓縮是數字圖像處理與圖像通信中必不可少的内容。近年來,随着計算機與數字通信技術的迅速發展,網絡和多媒體技術的興起,圖像編碼與壓縮作為資料壓縮的一個分支,已受到越來越多的關注。
我們舉一個執行個體來說明圖像壓縮的應用。大家知道,數字圖像有不同的檔案格式(編碼格式),有位圖形式的(bmp格式),也有JPEG格式的,我們會發現,同樣大小的圖像,通常JPEG檔案比位圖檔案所占的空間要小很多,這是因為位圖檔案是沒有對圖像進行壓縮的檔案,而JPEG是對原始圖像進行壓縮後形成的檔案。當需要對JPEG檔案進行顯示的時候,我們需要首先将其解碼成位圖檔案(可以直接顯示圖像格式),然後再進行顯示。
壓縮的政策有很多種,有相對簡單的政策,也有比較複雜的。我們可以按照資訊是否在壓縮的過程中存在丢失将壓縮的政策分為無損壓縮和有損壓縮。
2.4.2 無損壓縮
無損壓縮的技術可以将壓縮後的檔案通過解碼完全還原成壓縮前的檔案,而沒有任何資訊失真,無損壓縮在很多情況下是必須需要保證的,比如二進制可執行檔案,如果壓縮過程中存在資訊丢失,還原後的二進制檔案即使隻有一個位資訊被修改(0變成1,或1變成0),造成的結果都将是不可想象的,對字處理軟體所産生的檔案進行壓縮,同樣要保證資訊的無損性。在後續的章節中,我們會介紹,無算的壓縮方法有行程(run-length)編碼、哈弗曼編碼(Huffman)、delta編碼和LZW編碼。這些編碼的算法我們會在第三章來詳細闡述。
2.4.3 有損壓縮
在很多的領域,比如圖像和信号領域,我們在很多的時候沒有必要儲存原始的資料。隻要這些改變不會很大的影響我們的感覺的效果,其實,在現實的測量和數字化的過程中,本來就引入了噪音資料,如(數字化過程中由于電路的噪音引起的(如溫度升高會帶來量化上的某些變化)),如果我們壓縮的變化類似于這種噪音資料,這樣的變化就是我們可以接受的。和無損壓縮不同的是,有損壓縮的壓縮比通常會更好,越大的壓縮比,噪音資料成份就會越多。我們用一個詳細的執行個體來說明有損壓縮的重要性,拿網際網路上的圖檔來說,假設我們通過一個33.6kbps的調試解調器(modem,貓)來浏覽一個具有圖檔的網頁,如果圖檔沒有壓縮(比如TIFF格式),它會具有600kB的資料。如果用無損壓縮技術(如GIF格式),資料量大約少一半,有300KB;如果采用有損壓縮(如JPEG格式)技術,資料量就會減少到50KB。對應的是,我們下載下傳的時間分别是142秒,71秒和12秒,這之間有這麼大的差距,如果讓一個沖浪者用142秒的時間等待一幅圖檔,可想而知這樣的使用者體驗是多麼的難以接受。