淺談影像壓縮
陳
同 孝 國立勤益工商事科學校資訊管理科副教授張 真 誠 國立中正大學資訊工程學系教授
摘要
由於影像資料的體積一般都非常龐大,因此在使用它們之前,通常需要先將其壓縮後,再將它們放到網路上傳送,或是儲存在硬碟裡。影像壓縮不但可以節省影像資料佔用記憶體的空間,並且可以加速其傳輸時間,故影像壓縮是目前非常熱門的研究課題。影像壓縮與一般檔案壓縮並不完全相同,一般檔案是屬於線性的資料,而且解壓縮後的結果必須與原始檔案完全一模一樣;然而,影像是一種平面性的資料,而且由於人類眼睛天生的限制,人們很難察覺兩張近似影像間的些許差異,因此部分影像資料在壓縮前後是容許有少許失真的。由於影像資料的特質,目前已有很多影像壓縮法及儲存格式被推出。基本上,這些方法可以分為「無失真」及「有失真」兩類。前者能確保影像資料的完整性及正確性,而後者會利用影像容許失真的特性來提高影像資料的壓縮率,因此各有優缺點,在本篇文章中,我們將簡介數種重要的影像壓縮格式,並且利用實驗來說明它們壓縮的效果及比較它們的個別差異。
壹、前言
在過去,由於電腦的記憶體積很小,而且處理速度極慢,放大多僅能處理簡單的文字或數字資料,很少有能力來處理影像資料。然而,經過科學家們多年來的努力,現在的電腦已經擁有了大量的記憶空間、快速的處理能力、及傳輸速度,因此有能力來處理體積龐大的影像資料。而且,如今網際網路非常的盛行,影像資料已被廣泛的應用在網路上面,除此之外,
Word-Wide-Web(WWW) 更大量的利用影像資料,配合著文字的描述,供網路上的使用者使用,提供更具親和力的使用環境,以提高使用者的興趣。可是影像資料的體積實在是太龐大了,以一張
640所謂「影像壓縮」乃是一種方法,它可以根據原始影像資料來產生另外一組資料。這組資料就稱之為「壓縮後的結果」。壓縮後結果的體積通常自比原始影像資料小很多,因此有影像壓縮的效果;除此之外,壓縮後結果必須是可還原的,它應該可以被適當的解壓縮法還原成原始影像。特別值得注意的是,影像壓縮後的結果並非一張影像,它必須經過解壓縮的程序後才能看到原始影像的真面貌。
目前影像壓縮的方法有很多種,這些方法基本上可以分為「無失真」及「有失真」兩類。例如我們常見的
PCX 、GIF 、TIFF 、及TGA 等格式就是屬於無失真的影像壓縮格式。它們利用傳統檔案的壓縮原理及技術來處理影像壓縮,所以壓縮前的原始影像與壓縮後還原的結果絲毫不差。至於VQ(Vector Quantization) 及JPEG(Joint Photographic Coding Expert Group) 等則是屬於有失真的影像壓縮格式。影像資料如經VQ 及JPEG 等壓縮法處理過,還原後的影像資料會和原始影像十分接近,其間雖然會有少許的差距,但是這些差距都應在人類肉眼所接受的誤差範圍之內。影像壓縮的方法既然有那麼多,而且各有其特色,故本篇文章將針對各種常見的影像壓縮方法作一簡介,並且利用實驗來比較它們的壓縮效果,並闡述它們的優缺點。
貳、常見的影像壓縮格式
本節中,我們將介紹六種常見的影像壓縮格式。它們分別是
PCX 、TGA 、TIFF 、GIF 、JPEG[3-6] 及VQ[2] 等。其中PCX 、TIFF 及TGA 是非常傳統而著名的影像儲存格式GIF 及JPEG 則是目前網路應用上最廣為應用的影像格式;至於VQ ,它是一種影像壓縮方法,其基本觀念非常簡單,一般常在學術界中討論。下面我們依序介紹這六種常見的影像壓縮格式。
一、無失真的影像壓縮格式
1. PCX
PCX 這種影像壓縮格式是由Zsoft 公司所設計發展出來的,它是以變動長度編碼法(Run Length Encoding ,簡稱RLE)[1] 為其核心壓縮技術,並以位元為基本單位,水平式(Row by Row) 的進行編碼。所謂變動長度編碼法,簡單而言即是以 「資料的重複次數」加上「原始資料內容」來編碼的方法,故它將每段重複的資料以二個位元組來表示。由於變動長度編碼法的演算法簡單、易懂、且程式設計十分簡單,所以被廣泛的運用在影像儲存方面。目前幾乎所有支援影像的軟體,都會使用 PCX 的檔案格式。然而,由於變動長度編碼法對於資料的內容相當敏感,隨著影像複雜度的不同,其壓縮率也會大幅的變動,因PCX 常不能保持一定的壓縮水準,有時遇到重複性極低的影像資料, PCX 處理過的影像體積常常會不減反增;因此,PCX 並不是一個理想的影像壓縮格式。
2. TGA
TGA 是由AT&T 研發出來的影像壓縮格式,其主要的目的是用來做影像擷取時使用的。由於影像擷取時是以像素(Pixel) 為其處理的基本單位,而且每次可以擷取到影像中的一列像素,故TGA 也是以像素為其壓縮的基本單位,而且以影像中的一列像素為其一個段落來進行編碼。TGA 使用類似於PCX 的影像壓縮方式( 即變動長度編碼法) 來壓縮它所擷取到的影像資料,因為TGA 具備儲存全彩圖形的能力,故支援它的軟體大多具有高階的圖形擷取及數位影像處理之功能,故其早期是影像應用領域中非常重要的檔案格式之一。TGA 的檔案架構較PCX 複雜,但其可儲存的圖形模式則較廣泛,而且檔案架構的延展性亦較強,使用者可依自己的需求來指定 TGA 格式以儲存影像。
3. TIFF
TIFF 也是一個非常重要的影像壓縮格式。它的第一個版本是由 Aldus Corporation 的Aldus Developers 於1986 年所公佈的。它利用標籤(Tag) 為其組成的基本架構,具有極大的擴充性。由於標籤的架構非常複雜,我們在此無法對其作詳細的解說,有興趣的讀者可以查看參考書目中的相關書籍 [3-6] ,以獲得進一步的資料。TIFF 有三個重要的特色如下:
4. GIF
GIF 是1987 牢由Compu-serve 所提出的影像壓縮格式,所使用的壓縮方法是「藍波- 立夫- 衛曲編碼法」,又可稱為「字串表(String Table) 壓縮法」。其基本的原理是將原始影像資料中重複的字串編成一個表,然後再利用表上的索引值來取代原始影像資料中的字串,由於索引值的體積遠比原始影像中的字串體積來的小,故GIF 能影像有壓縮的效果。然而,GIF 中所使用的藍波- 立夫- 衛曲編碼法並非標準的藍波- 立夫- 衛曲法,它是經改良過後的版本,它跟標準的藍波- 立夫- 衛曲編碼法最大的不同點在於:GIF 的藍波- 立夫- 衛曲編碼法其字串表沒有最大體積的限制,而且以「可變長度碼」來編碼其索引值,故可有效的節省壓縮後的空間,提高壓縮的比例。GIF 的缺點是由於藍波- 立夫- 衛曲編碼法的程式設計很困難,要花費較多的時間。但是由於它的高壓縮效率,故還是能讓GIF 在影像壓縮處理上佔有一席之地。目前我們在WWW 、DOS 、MS Windows 、Macintosh 、X-windows 上,到處都可以看見支援GIF 的各種應用軟體。然而GIF 的色彩支援只到256 色,在現今全球影像使用頻率愈來愈,高的情況下,GIF 並不能完全滿足使用者的需求。
二、有失真的影像壓縮格式
1. JPEG
JPEG 由國際標準組織(International Organization for Standardization ,簡稱ISO) 和國際電話電報諮詢委員會(International Telegraph and Telephone Consultative Committee ,簡稱CCITT) 所建立的一個數位影像壓縮標準,主要是用於靜態影像壓縮方面。JPEC 採用可失真(Lossy) 編碼法的概念,利用數位餘弦轉換法(Discrete Cosine Transform,簡稱DCT) 將影像資料中較不重要的部份去除,僅保留重要的資訊,以達到高壓縮率的目的。雖然被JPEC 處理後的影像會有失真的現象,但由於JPEG 的失真比例可以利用參數來加以控制;一般而言,當壓縮率( 即壓縮過後的體積除以原有資料量的結果) 在5% ∼15% 之間時,JPEC 依然能保証其適當的影像品質,這是一般無失真壓縮法根本作不到的。為了讓讀者能親身了解JPEC 壓縮格式的效果,在本文中,我們將以圖一為例,然後利用不同的JPEC 壓縮參數來壓縮它,其壓縮的結果如圖二、圖三、及圖四。圖二的影像品質與原圖十分接近,而壓縮率已達4.8% ;至於圖三,其壓縮率為2.7% ,壓縮效果良好,但此時影像品質已經有明顯的失真了,圖四的失真情況更嚴重。由於JPEG 的壓縮率高,且影像品質可以接受,所以是目前最受歡迎的壓縮法之一。JPEG 能應用於壓縮全彩或是8 位元的灰階影像。一般而言,凡是照片或是色彩連續的影像都非常適合利用JPEG 來壓縮。值得一提的是,目前支援JPEG 的應用軟體非常多。
2. VQ
VQ
是一種非常基本的失真影像壓縮法[2]
。有很多重要的影像壓縮技術(
例如JPEG)
都應用到VQ
的基本觀念;因此,改良VQ
的壓縮結果將會對其他的相關影像壓縮技術有所幫助,故VQ
是學術界最廣被用來研究影像壓縮的重要格式。傳統VQ
的基本作法首先將壓縮的影像分割成許多大小相同的小方格。例如一張512
512
點的影像,我們通常會將它分割成128
128
個4
4
點的小方格。按著查詢事先完成的編碼書(Code book)
,找出跟每一個影像方格最接近(
即最相似)
的編碼字(Code word)
。然後,再利用這些最接近的編碼字之索引值,組成一張索引表,如此即完成影像的壓縮。這張索引表即是VQ
壓縮後的結果,因為索引表的體積通常會比原影像小方格的體積小很多,故VQ
能有很好的壓縮效果。以一本含有256
個編碼字的編碼書而言,VQ
的壓縮率通常是十六分之一(
約6%)
。至於影像還原,由於VQ
解碼器可以利用壓縮後的索引表找出每個影像小方格的最相似編碼字,故可還原出原始影像來。雖然還原的原始影像與真正的原始影像並非完全相同,但必定十分相似。一般而言,VQ
的影像品質決定於編碼書內編碼字的數量之多寡及代表性之優劣。總之,一本大小適中且內容良好的編碼書才可以確保VQ
壓縮的影像品質。
參、分析與比較
影像壓縮格式這麼多,針對某一張影像,我們應該選用那一種影像壓縮格式來處理才是最適合的呢?這是一個很有趣,但也是很重要的問題。在本節中,我們將利用圖一這張蒙娜麗莎的微笑為原圖,來實驗各種影像壓縮格式的效果,以比較它們的優缺點。
我們首先利用影像處理工具將圖一調整成三種不同色彩模式的圖形,它們介別是全彩、灰階、及
256 色的影像。然後再以不同的壓縮格式來壓縮它們,並記錄它們的壓縮結果。我們的實驗結果分別列於表一、表二、及表三中,其中所謂的壓縮率即是指原始圖形資料的位元組數除以壓縮後的位元組數之結果。壓縮率的結果愈小愈好;但是若所使用的壓縮法是有所失真的,那麼我們還必須將壓縮後的影像品質也列入考量。表一所列出的資料是我們針對全彩模式下所作的實驗結果,我們使用了
PCX 、TGA 、TIFF 、JPEG 及VQ 等影像格式來壓縮全彩的影像。由於GIF 的色彩模式並不支援全衫,所以我們並沒有將其列在表一中。從表一的結果顯示,無失真的影像壓縮法並不適合全彩的影像資料: 因為它們的壓縮率都很差,有些壓縮法反而會使資料的體積膨脹。故針對全彩的影像,我們建議使用有失真的影像壓縮格式來儲存。這個結論與以往的研究報告是相吻合的。針對灰階模式的影像資料,我們可以選用
PCX 、TGA、TIFF、JPEG 及VQ 等影像格式來壓縮。表二列出了其實驗結果。從表二中,我們可以發現和表一相同的結果,無失真的影像壓縮法並不適合灰階模式的影像資料,故針對灰階模式的影像,我們也建議使用有失真的影像壓縮格式來儲存它們。至於
256 色的影像資料,可以用來壓縮它們的影像格式有PCA 、TGA 及TIFF 等。我們針對256 色的影像資料所作的實驗結果列於表三中。從表三中,我們可以清楚的看到TIFF 及GIF 是不錯的影像壓縮格式,而且GIF 的表現最為傑出。這一點也和目前網路上使用惰況是一致的。目前在網路上,凡是256 色的影像都會利用GIF 格式來儲存。整體而言,從我們的實驗結果中我們可以發覺,在全彩及灰階的色彩模式下,影像資料較適合利用
JPEG 及VQ 等壓縮格式來處理,因為利用JPEG 及VQ 等壓縮格式可以把影像資料利用最小的空間儲存起來。但是值得注意的是,JPEG 和VQ 處理過的影像都會有某些程度的失真,故使用者應該依自己的需求來定義參數,並控制失真的程度。此外在256 色的色彩模式下,我們認為GIF 的壓縮格式效果最好,而且它還不會失真。
表一、全彩影像的壓縮結果
原始影像體積 |
壓縮格式 |
壓縮後之體積 |
壓縮率 |
有無失真 |
1401K位元組 |
PCX |
1448K位元 |
104% |
無 |
1401K位元 |
TGA-RLE |
1387K位元組 |
99% |
無 |
1401K位元 |
TIFF-LZW |
1430K位元組 |
103% |
無 |
1401K位元組 |
JPEG |
67K位元組 |
4.8% |
有 |
1401K位元組 |
VQ |
87.9K位元組 |
6.25% |
有 |
表二、灰階影像的壓縮結果
原始影像體積 |
壓縮格式 |
壓縮後之體積 |
壓縮率 |
有無失真 |
156K位元組 |
PCX |
161K位元組 |
104% |
無 |
156K位元組 |
TGA-RLE |
143K位元組 |
91.7% |
無 |
156K位元組 |
TIFF-LZW |
128K位元組 |
82.6% |
無 |
156K位元組 |
JPEG |
4.73K位元組 |
3.03% |
有 |
156K位元組 |
VQ |
9.75K位元組 |
6.25% |
有 |
表三、
256色影像的壓縮結果
原始影像體積 |
壓縮格式 |
壓縮後之體積 |
壓縮率 |
有無失真 |
977K位元組 |
PCX |
1064K位元組 |
110% |
無 |
977K位元組 |
TGA-RLE |
903K位元組 |
92.6% |
無 |
977K位元組 |
TIFF-LZW |
306K位元組 |
31.3% |
無 |
977K位元組 |
GIF |
244K位元組 |
25% |
無 |
肆、結論
由於網路的盛行及多媒體的普及,影像已經是未來資料傳輸的重要趨勢;然而,由於影像資料體積龐大,若未經過壓縮就直接放到網路上傳送,其必定會使得原本已經相當忙碌的網路更加動彈不得。為了舒緩網路傳輸的壓力,我們應該使用適當的影像壓縮格式來處理我們的影像。正確的影像壓縮法可以有效的減少影像的體積、加速網路的傳輸、進而節省我們的金錢。在本篇文章中,我們不僅介紹了幾種重要的影像壓縮格式,同時更利用實驗來顯示各種壓縮格式的效果。結果我們發現:一、有失真的影像壓縮格式其壓縮效果通常遠比無失真的影像壓縮格式好很多;因此,如果使用者可以接受有少許失真的影像資料,那麼他們將可以獲得很好的壓縮率
( 以JPEG 為例,在使用者幾乎無法察覺的失真情況下,JPEG 的壓縮率可以達到5% ∼15%) 。二、在256 色的色彩模式下,目前最佳的影像壓縮格式是GIF ,這兩點結論和目影像前資料使用的趨勢是一致的。目前我們在網路上所有看到的影像資料,不是JPEG 的格式就是GIF 的格式,而且,舉凡照片等內容複雜且色彩連續的影像,都是以JPEG 來處理;至於其他內容單純、色彩較少的影像,例如標誌或卡通等圖片,其顏色的變化大多不超過256 色,大多是利用GIF 來處理的。
參考文獻