支付宝代扣协议取消:Mr.OH!數位講座 第23講 影像檔案壓縮格式 JPEG

来源:百度文库 编辑:中财网 时间:2024/04/25 23:52:13

Mr. OH!主述
ANAN 策劃
一個數位影像檔案有多大?
傳統攝影時代,底片是一捲一捲地,每卷底片或可記錄24張、36張,完全按照規格標示,使用者既清楚又不容易搞混。不過,當數位攝影時代來臨底片罐逐漸被一張張的記憶卡所取代,拍攝剩餘張數不單是隨著記憶卡的空間而改變,更會依照同學所選擇的解析度和壓縮比不同,而跟著增加或減少。越來越多的 數位照片透過影像檔案壓縮格式來 儲存,同學可知道一張三百萬畫素的照片所佔得記憶空間有多大嗎?

答案是 2048(畫素長)X1536(畫素寬)=3145728畫素;假如同學拍攝的是彩色影像,使用的是 24bit 彩色影像儲存方式,那麼解析起來,RGB三原色通道各包含了 8bit 的資料或可轉換為 1Byte 的記憶容量;也因此每一個畫素都包含了 3個 Bytes 的資料,換算起來 3145728 X3 = 9437184Byte;如果同學們有接著修電腦概論的課程,就知道這個數字再除以 1024 就等於 9216KB,那再除以 1024 就可以得到約 9MB 的數據。頭昏了嗎?
數位影像中的數學資料
上節我們只是簡單的條列出一個數位影像檔案的基本數學,在開始討論多樣的電腦圖檔格式之前,Mr.OH! 先讓同學瞭解一部電腦是如何排列這些數字成為影像資料 !我們瞭解一般的電子圖檔主要是靠像素(Pixel)所構成的,一個影像檔就是以上百、上千乃至上百萬個像素以格狀的排列方式來顯示。電腦用一個或多個位元的資料組合記錄每一個像素的亮度和色彩。影像資料的位元數越大,其儲存的資料量也就越大,也就是所佔的MB(記憶體)也越大。 如果我們單以影像儲存的色彩表現區分則可概分單位元影像(一般稱文字或黑白模式)、灰階影像和彩色影像三種類型。

數位色彩所佔據的空間
單位元影像,每個像素只用一個位元來記錄,其又分成兩種不同的類型:黑白影像(Line Art)和半色調影像(Halftone)。黑白影像(Line Art),最為簡單,以黑點和白點來記錄影像的變化,一般用於OCR的判讀。半色調影像(Halftone)則可產生近似灰階影像的錯覺效果,和黑白影像(Line Art)不同的是,較暗的區域是以較多的黑點來表示,而較亮的區域用較少的黑點來表示。因此,可以製造出成影像的層次感,報紙上看到的圖片多半屬於這類半色調影像。

黑白影像(Line Art)半色調影像(Halftone)

灰階影像(GREY)彩色影像(RGB)
灰階影像,雖然也是黑白影像的一種,單它包含了更多黑色和白色的資料,特別是真實的紀錄了灰階層次!對於灰階影像而言,每個像素用更多的位元來表示,例如要表現 16 階的灰階層次需要用到 4 個位元,再更進一步,8 個位元則可以表現多達 256 階的灰階層次,也使得黑白照片的層次表現更加立體與真實。

分割階度示意圖,一個全彩色可以 1677萬種組合(True Color)
彩色影像包含的資料最為複雜。為了獲取彩色影像,數位相機和掃描器使用分色處理( RGB(紅色 Red 、綠色 Green 和藍色 Blue))來分析接收到的影像光線。透過這個模式,影像中所有的色彩都可以用紅綠藍三原色以不同強度還原而成。而隨著您所使用數位相機或掃描器的機型不同,依其設計可對色彩記錄的極限可達 24 位元、30 位元或 36 位元 RGB 像素不等。越多的色彩位元的資料代表越多顏
位元可記錄 1677 萬色, 30 位元可記錄 10 億色, 36 位元則記錄多達 687 億種色彩),但同樣的你的記憶也消耗的越快。 壓縮資料縮減記憶空間 數位影像的早期,記憶體的價格還沒有像現在這麼便宜與普及,想要讓電腦
位元可記錄 1677 萬色,30 位元可記錄 10 億色,36 位元則記錄多達 687 億種色彩),但同樣的你的記憶也消耗的越快。
壓縮資料縮減記憶空間
數位影像的早期,記憶體的價格還沒有像現在這麼便宜與普及,想要讓電腦處理複雜的真實數位影像相當困難。很大一部份的原因就是龐大的影像資料所造成的處理速度緩慢, 更糟糕的是攜帶不便等種種缺點。終於,電腦專家們想出了「影像壓縮」這種解決之道。影像壓縮可以根據原始影像資料來產生另外一組資料,這組資料就稱之為「壓縮結果」。壓縮結果的所佔的記憶體大小通常比原始影像檔案小很多。而某些檔案格式所提供的壓縮結果是可還原的,透過適當的反壓縮法使能還原成原始影像。

WinRAR 3.14版的操作畫面
如果同學們常常使用電腦交流檔案,應該很瞭解 ZIP 與 RAR 這種壓縮檔案格式。WinZip 可以透過特殊的演算法將一個或多個檔案打包成一個較小的檔案,方便使用者在網路或 E-mail 系統裡傳輸。同樣的原理也可以應用在數位影像檔案之中,所不同的是現今的作業系統已經直接支援相關的壓縮演算法,你不需要進行解壓縮的動作,你的看圖軟體或網頁瀏覽器就會自動幫你解開數位影像檔案。
追求更精簡的空間要求 - JPEG 破壞性壓縮格式
然而,可還原的壓縮方式對於資料量龐大的數位影像仍是少有助益,為了更進一步提升壓縮效率與節省空間「失真」式的壓縮演算法被提出。失真式(Lossy)的影像壓縮 主要是依據人眼特性的考量,保留下數位影像檔案中的明度細節,而將大量的色彩資料轉換成較精簡的模式以達到節省空間的目的。無失真檔案的壓縮技術,壓縮前的原始影像與壓縮後還原的結果 可以絲毫不差。但我們所熟知的JPEG(Joint Photographic Coding Expert Group)卻不行,因為這是屬於有失真的影像壓縮格式。
JPEG 壓縮法對色彩資料的處理
JPEG 由國際標準組織(International Organization for Standardization ,簡稱ISO) 和國際電話電報諮詢委員會(International Telegraph and Telephone Consultative Committee ,簡稱CCITT) 所建立的一個數位影像壓縮標準,主要是用於靜態影像壓縮方面。JPEC 採用可失真(Lossy) 編碼法的概念,利用數位餘弦轉換法(Discrete Cosine Transform,簡稱DCT) 將影像資料先切割成 8X8 各區域,再依照每一個區域中的資料較不重要的色彩部份予以去除,僅保留重要明度的資訊,以達到高壓縮率的目的。

圖左:原始影像的位元色彩分割圖 / 圖右:經過 JPEG 演算法處理過的分割圖
JPEG 著名的壓縮色彩計算,很大一部份是將前面所提及的 RGB 數據,分解成 YCrCb 色彩空間,該色彩空間的公式如下:
Y= 0.299R + 0.587G + 0.114B 則另外兩組顏色的值可以換算以下:
Cr =  0.713(R-Y) = 0.5000R- 0.4187G-  0.0813B
Cb = 0.564(B-Y) =-0.1687R- 0.3313G + 0.5000B
JPEG 工作流程會將RGB色彩數據予以量化後,從中擷取係數中最接近的整數;係數矩陣的左上角量被定義為直流分量,該數值大小正比于分割區塊中所有畫素灰度值的平均亮度。此直流分量也將被設為單維預測器,並用霍夫曼(Huffman)方法編碼;由於量化後的交流係數在高頻區塊上會留下很多零係數,因此零係數演算程可將二維DCT係數矩陣按“之”字形順序轉換為一維向量,然後採用零係數演算程與霍夫曼相結合的方法編碼這些向量,直流與交流係數編碼後的碼流就是壓縮圖像。解壓縮方法可按壓縮演算法的逆方向進行,但,因為量化過程之不可逆,從而還原後的影像與原來的不同產生失真。

處理後的 JPEG 數據資料,依『之』字形方式存入檔案中,以副檔名 JPG 或 JPE 識別
飽受駭客攻擊與失真所苦的 JPEG 格式
對人類視覺來說,JPEG 可以說完全地在數位資料量與真實景物色彩之間取得了平衡。但是,此種演算法仍有相當多的缺點,特別是當風景圖片上包含有文字字型時,即使使用低壓縮比例的JPEG,還原演算回來的照片仍有可見的失真。雖然,JPEG 的失真比例可以利用參數來加以控制 ,一般而言,壓縮率選擇在 75%上下時,JPEG 可得適當的影像品質。

圖左的影像品質與原圖十分接近壓縮率已達65%  / 圖右壓縮率為25% ,但此時影像品質已經有明顯的失真了
近來 JPEG 檔案格式更被電腦駭客發現處理過程中存在緩衝區溢出的安全漏洞,其中 ActiveX 控制項(GDI+ Detection Tool)可能導致被侵入系統執行遠端代碼。所有應用程式在處理JPEG圖片時都存在此安全問題,駭客如成功利用此漏洞可能獲得電腦的完全控制權。目前此一漏洞已經由微軟發佈的修補程式加以補強了。
未普及的 JPEG 2000 JPEG 諸多缺點部份是制訂時技術未達所致,新版的 JPEG 2000 同樣是由JPEG 組織負責制定。早在 1997年三月就開始歸畫,但到了 2000年底 JPEG2000才制定完成。不過,網路的傳播效應早已讓 JPEG 成
未普及的 JPEG 2000
JPEG 諸多缺點部份是制訂時技術未達所致,新版的 JPEG 2000 同樣是由JPEG 組織負責制定。早在 1997年三月就開始歸畫,但到了 2000年底 JPEG2000才制定完成。不過,網路的傳播效應早已讓 JPEG 成為家喻戶曉的名詞,JPEG 2000 又與傳統 JPEG 大不相同,主要在於它放棄了 JPEG 所採用的以離散餘弦轉換 (Discrete Cosine Transform) 為主的區塊編碼方式,而以波動轉換(Wavelet transform) 作為解析編碼方式。
雖然 JPEG2000 具有以下優點:比 JPEG 更高的壓縮率、可同時支援失真和無失真壓縮(JPEG 只能失真壓縮)以及漸進傳輸功能(類似GIF 格式影像具有『漸現』之特性(不像現在的 JPEG由上到下慢慢顯示);此外,更新版的 JPEG2000 還支援『指定區域壓縮』特性,你可以任意指定影像上不同區域的壓縮品質,還可以選擇指定的部份先解壓縮。儘管 JPEG2000的應用範圍較 JPEG 更為廣泛,但多數的數位照相機等硬體廠商,仍不見大動作使用此一規格,反倒積極研發獨家的 RAW 原始檔案格式。這使得目前 JPEG 2000 僅在影像軟體上生存,普及性遠不如 JPEG 。
網路上其他常見的影像檔案壓縮格式
GIF : 是1987 年由Compu-serve 所提出的影像壓縮格式,所使用的壓縮方法是「藍波- 立夫- 衛曲編碼法」,又可稱為「字串表(String Table) 壓縮法」。其基本的原理是將原始影像資料中重複的字串編成一個表,然後再利用表上的索引值來取代原始影像資料中的字串,由於索引值的體積遠比原始影像中的字串體積來的小,故GIF 能影像有壓縮的效果。然而,GIF 中所使用的藍波- 立夫- 衛曲編碼法並非標準的藍波- 立夫- 衛曲法,它是經改良過後的版本,它跟標準的藍波- 立夫- 衛曲編碼法最大的不同點在於:GIF 的藍波- 立夫- 衛曲編碼法其字串表沒有最大體積的限制,而且以「可變長度碼」來編碼其索引值,故可有效的節省壓縮後的空間,提高壓縮的比例。GIF 的缺點是由於藍波- 立夫- 衛曲編碼法的程式設計很困難,且由於編法的限制GIF 的色彩支援只到256 色。因此如果影像只是由單純的少數色彩所組成,例如用於網頁上的文字或商標,則 GIF 是一種相當合適的檔案格式。但若為連續色調或是有複雜色彩的影像,則 GIF 並不合適。
PCX : PCX 這種影像壓縮格式是由Zsoft 公司所設計發展出來的,它是以變動長度編碼法(Run Length Encoding ,簡稱RLE)為其核心壓縮技術,並以位元為基本單位,水平式(Row by Row) 的進行編碼。所謂變動長度編碼法,簡單而言即是以 「資料的重複次數」加上「原始資料內容」來編碼的方法,故它將每段重複的資料以二個位元組來表示。由於變動長度編碼法的演算法簡單、易懂、且程式設計十分簡單,所以被廣泛的運用在影像儲存方面。目前幾乎所有支援影像的軟體,都會使用 PCX 的檔案格式。然而,由於變動長度編碼法對於資料的內容相當敏感,隨著影像複雜度的不同,其壓縮率也會大幅的波動,因此PCX 並不能保持一定的壓縮水準,有時遇到重複性低的影像資料時, PCX 處理過的影像記憶體常常會不減反增。