靜態影像壓縮介紹(作者吳和弟)前言顧名思義,靜態影像(still image)即是指靜止不動的單張影像圖片,例如一張彩色圖片。
而有靜態就會有動態,動態影像 (motion image)則是連續性的動作,例如電視與電影畫面等。
本文將只針對靜態影像壓縮(still image compression)技術作一概略性的介紹。
影像壓縮的優點通常一般我們所見的單張彩色靜態影像,它是由很多一個點一個點的像素(pixel) 所組成,而每一個像素主要由R(紅)、G(綠 )、B(藍 )三原色所構成,每一個原色用一個字元(byte)來表示。
例如:欲儲存一張長 512 pixel 、寬 512 pixel 的彩色圖片需要的記憶體為:512 x 512 x 3 bytes = 768 kbytes由上例中可以看出:未經壓縮的影像在儲存時,會佔用非常大量的儲存空間,且未經壓縮的影像資料透過通訊網路傳送時,所需的傳輸時間也將相對地拉長。
為解決上述的問題,使用者如能將影像予以壓縮,即可達到減少儲存空間、縮短傳輸時間的雙重效能。
靜態影像壓縮的國際標準由於有感於靜態影像壓縮需要一個大家可以共同遵循的國際標準,因此由國際標準組織 (International Standardization Organization; ISO) 與國際電報電話諮詢委員會(Consultative Committee on International Telegraph and Telephone; CCITT)兩邊人員共同成立聯合影像專家群(Joint Photographic Expert Group; JPEG ) ,他們共同制定了一個稱為JPEG 的靜態影像壓縮之國際標準。
JPEG 的分類JPEG 根據壓縮技術的不同,而把靜態影像壓縮的方式分為兩種,一種是有失真模式 (Information Loss),另一種是無失真模式(Information Lossless)。
茲將此兩種壓縮模式分述如下:1. 有失真模式:‧採用離散餘弦轉換 (Discrete Cosine Transform; DCT) 的技術。
‧經過壓縮與解壓縮還原之後的影像會有失真產生,幸好人的眼睛對於少許失真不易察覺。
‧壓縮率高,壓縮 30 倍仍能獲得高品質。
‧應用於一般圖片、多媒體。
‧應用廣泛,目前的應用絕大部份都是採用此種模式。
2. 無失真模式:‧採用差值訊號編碼 (Differential Pulse Code Modulation;DPCM) 的技術。
‧經過壓縮與解壓縮還原之後的影像與原始影像相比完全沒有失真產生。
‧壓縮率低,通常在 10 倍以下。
‧主要應用於醫學影像,因為醫學上寧可壓縮率低確保影像品質,而不願高壓縮率引起的影像失真造成誤診。
‧因為壓縮率不高,除了醫學影像之外,目前的應用很少採用此種模式。
壓縮原理因為目前靜態影像壓縮大部份採用有失真模式,因此,以下將針對有失真模式進行介紹。
圖一是整個影像壓縮 (Compression) 的方塊圖,圖二則是解壓縮(Decompression)的方塊圖。
透過此二圖我們可以知道:壓縮與解壓縮的過程類似,僅是執行的順序相反而已,因此,對於解壓縮文中將不再贅述。
圖一壓縮 (Compression) 方塊圖圖二解壓縮 (Decompression) 方塊圖A. RASTER -> BLOCK如圖三所示,把整個圖片分割成多個 8 x 8 點的小方塊(block),每個小方塊有64 點也就是 64 個像素。
整個壓縮的過程是以小方塊為單位作處理。
圖三整個圖片分割成多個 8x8 點的小方塊B. RGB -> YUV原始影像每一個點 (像素) 是由紅 (R)、綠 (G)、藍 (B)三原色所構成,在此把它轉換成一個亮度訊號 (Luminance) Y 與二個色差訊號 (Chrominance) U、V。
R、G、B 轉換為 Y、U、V 的公式如下:Y = 77/256R + 150/256G + 29/256BU = -44/256R - 87/256G + 131/256B + 128V = 131/256R - 110/256G - 21/256B + 128C. DCT (Discrete Cosine Transform;離散餘弦轉換)離散餘弦轉換的輸入是 8 x 8 個點,輸出則是 8 x 8 個係數(coefficients)。
此轉換把影像由空間定義域 (space domain) 轉換到頻率定義域 (frequency domain),每個 8 x 8 小方塊裡面係數的位置愈靠近左上角,它代表的頻率愈低,愈靠近右下角,則它代表的頻率愈高。
一般而言,大部份的影像能量會集中在低頻部份,也就是轉換之後的輸出係數在低頻部份的值較大,而輸出係數在高頻部份的值很小。
所以當輸出係數經過量化 (quantization) 之後,高頻部份的值大部份都會變為 0。
文中所描述的靜態影像壓縮是採用離散餘弦轉換的壓縮技術,它的主要精神在於:能量集中。
離散餘弦轉換的公式如下:離散餘弦轉換需要冗長的運算,所以它是整個影像壓縮過程最花時間的部份。
如果以純軟體實現影像壓縮,約 75% 的時間花在離散餘弦轉換的計算。
D. QUANTIZATION此處的量化(quantization)是採用線性量化(linear quantization) 的方式,對於相同頻率的輸入值都除以一固定值。
根據測試,人的眼睛對不同頻率之敏感度不同,對低頻較敏感,然而對高頻較不敏感,因此低頻的失真應該儘量降低,而對於高頻部份則可允許有較多的失真。
所以在低頻採用小的量化位準(quantization level);而在高頻採用大的量化位準。
表一是對應於 8 x 8小方塊裡面各個不同頻率之亮度的量化位準,表二是色差的量化位準。
一般而言,人的眼睛對於亮度的失真較色差的失真敏感,因此表一比表二採用較小的量化位準。
表一亮度的量化位準 (quantization level)┌─┬─┬─┬─┬──┬──┬──┬──┐│16│11│10│16│24 │40 │51 │61 │├─┼─┼─┼─┼──┼──┼──┼──┤│12│12│14│19│26 │58 │60 │55 │├─┼─┼─┼─┼──┼──┼──┼──┤│14│13│16│24│40 │57 │69 │56 │├─┼─┼─┼─┼──┼──┼──┼──┤│14│17│22│29│51 │87 │80 │62 │ ├─┼─┼─┼─┼──┼──┼──┼──┤│18│22│37│56│68 │109 │103 │77 │ ├─┼─┼─┼─┼──┼──┼──┼──┤│24│35│55│64│81 │104 │113 │92 │ ├─┼─┼─┼─┼──┼──┼──┼──┤│49│64│78│87│103 │121 │120 │101 │ ├─┼─┼─┼─┼──┼──┼──┼──┤│72│92│95│98│112 │100 │103 │99 │ └─┴─┴─┴─┴──┴──┴──┴──┘表二色差的量化位準 (quantization level)┌─┬─┬─┬─┬─┬─┬─┬─┐│17│18│24│47│66│99│99│99│├─┼─┼─┼─┼─┼─┼─┼─┤│18│21│26│66│99│99│99│99│├─┼─┼─┼─┼─┼─┼─┼─┤│24│26│56│99│99│99│99│99│├─┼─┼─┼─┼─┼─┼─┼─┤│47│66│99│99│99│99│99│99│├─┼─┼─┼─┼─┼─┼─┼─┤│99│99│99│99│99│99│99│99│├─┼─┼─┼─┼─┼─┼─┼─┤│99│99│99│99│99│99│99│99│├─┼─┼─┼─┼─┼─┼─┼─┤│99│99│99│99│99│99│99│99│├─┼─┼─┼─┼─┼─┼─┼─┤│99│99│99│99│99│99│99│99│└─┴─┴─┴─┴─┴─┴─┴─┘表三鋸齒狀掃描 (zigzag scan) 的順序D. RUN LENGTH ENCODE經過量化之後,每個 8 x 8 的小方塊裡面除了左上角區域以外其它部份幾乎都會變為0。
為了把連續 0 的個數予以編碼,對每個 8 x 8 的小方塊做鋸齒狀掃描 (zigzag scan ) ,使得二維變成一維,掃描的順序如表三所示。
在經過掃描之後,對連續零的個數做編碼 (run length encode),以達到壓縮的目的。
E. HUFFMAN ENCODE我們可以使用哈夫曼編碼 (Huffman coding)使得資料量再一次降低。
哈夫曼編碼的主要精神是:出現機率大的符號用長度短的碼表示,出現機率小的符號用長度長的碼表示,因而其平均使用的資料量較小。
舉一個例子說明:符號 A、B 、C 、D 出現的機率分別為 0.7、0.1、0.1 、0.1。
一般編碼如表四所示,2x0.7+2x0.1+2x0.1+2x0.1=2.0平均每個符號需用 2 個位元 (bits) 表示。
表四一般編碼┌──┬─┐│符號│碼│├──┼─┤│ A │00││ B │01││ C │10││ D │11│└──┴─┘哈夫曼編碼如表五所示,1x0.7+2x0.1+3x0.1+3x0.1=1.5平均每個符號需用 1.5 個位元 (bits) 表示。
表五哈夫曼編碼┌──┬──┐│符號│ 碼│├──┼──┤│ A │ 0 ││ B │ 11 ││ C │100 ││ D │101 │└──┴──┘由上面的例子可以看出哈夫曼編碼會把需要的資料量降低。
實現方式前述的靜態影像壓縮,它的實現方式有純粹軟體、純粹硬體以及軟體加硬體三種,分述如下:1.純粹軟體使用計算機軟體程式來完成全部的工作,此方式速度最慢但是並不需要額外的硬體電路,所以成本最低。
動態影像對速度的要求較高,因為速度慢會演變成慢動作,這並不是原來所要的。
而靜態影像對於速度的要求並不是很嚴苛,因為速度慢使用者只是多等一下,並不影響整個靜態影像的品質。
同時也由於計算機的速度愈來愈快,使用純粹軟體的方式來實現靜態影像壓縮可以預料將是大勢所趨。
2.純粹硬體此方式乃整個靜態影像壓縮架構全部使用硬體電路實現,速度最快,但是相對成本也最高。
此種方式適合用在大量的影像圖片的處理。
3.軟體加硬體此乃是將靜態影像壓縮架構裡面比較花費時間的部分使用硬體電路實現,而比較不花費時間的部分使用計算機軟體程式來完成。