JPG圖片

jpg/jpeg是24位的圖像檔案格式,也是一種高效率的壓縮格式,檔案格式是JPEG(聯合圖像專家組)標準的產物,該標準由ISO與CCI TT(國際電報電話諮詢委員會)共同制定,是面向連續色調靜止圖像的一種壓縮標準。其最初目的是使用64Kbps的通信線路傳輸720×576解析度壓縮後的圖像。通過損失極少的解析度,可以將圖像所需存儲量減少至原大小的10%。由於其高效的壓縮效率和標準化要求,目前已廣泛用於彩色傳真、靜止圖像、電話會議、印刷及新聞圖片的傳送上。

概述

Jpg/Jpeg(Joint Photographic Expert Group)

jpg/jpeg是24位的 圖像檔案格式,也是一種高效率的 壓縮格式,檔案格式是JPEG(聯合圖像專家組)標準的產物,該標準由ISO與CCI TT(國際電報電話諮詢委員會)共同制定,是面向連續色調靜止圖像的一種壓縮標準。其最初目的是使用64Kbps的 通信線路傳輸720×576 解析度 壓縮後的圖像。通過損失極少的解析度,可以將圖像所需 存儲量減少至原大小的10%。由於其高效的 壓縮效率和標準化要求,JPG圖片已廣泛用於彩色 傳真、靜止圖像、 電話會議、印刷及新聞圖片的傳送上。

綜述

但那些被刪除的資料無法在解壓時還原,所以* .jpg/*.jpeg檔案並不適合放大觀看,輸出成印刷品時品質也會受到影響。不過,普通用戶不必擔心,因為*.jpg/*.jpeg的壓縮算法十分先進,它對圖形圖像的損失影響不是很大,一幅1 6 M(24位)的*.jpg/*.jpeg圖像看上去與照片沒有多大差別,非專業人士甚至無法分辨。同樣一幅畫面,用*.jpg/*.jpeg格式儲存的檔案是其他類型圖形檔案的1 /10~1/20。一般情況下,*.jpg/*.jpeg檔案只有幾十KB,而色彩數最高可達到24位,所以它被廣泛運用在Internet上,以節約寶貴的網路傳輸資源。同樣,為了在一張光碟上儲存更多的圖形圖像,CD出版商也樂意採用jpg/jpeg格式。

更多圖冊

jpg圖片打不開

錯誤類型:因為jpeg標誌符長度太短(該檔案可能被截斷或不完整)

這種錯誤一般可能是因為照片從相機中打開時報這種錯,而在相機里是可以看的。我們可以把這種圖片複製到電腦中,另,再用畫圖或圖片和傳真查看器打開此類圖片。

錯誤類型: jpg圖片打開後顯示無預覽。

錯類原因:這種情況可能是因為圖片被徹底刪除過,之後用比如finaldata或easyrecover等數據恢復工具找回來的圖片。這種情況多數情況下是無法進行修復的,圖片已經受到損壞!

jpg壓縮原理

JPEG壓縮過程

JPEG壓縮分四個步驟實現:

1.顏色模式轉換及採樣;

2.DCT變換;

3.量化;

4.編碼。

壓縮過程詳述

1.顏色模式轉換及採樣 RGB色彩系統是我們最常用的表示顏色的方式。JPEG採用的是YCbCr色彩系統。想要用JPEG基本壓縮法處理全彩色圖像,得先把RGB顏色模式圖像數據,轉換為YCbCr顏色模式的數據。Y代表亮度,Cb和Cr則代表色度、飽和度。通過下列計算公式可完成數據轉換。

Y=0.2990R+0.5870G+0.1140B

Cb=-0.1687R-0.3313G+0.5000B+128

Cr=0.5000R-0.4187G-0.0813B+128

人類的眼晴對低頻的數據比對高頻的數據具有更高的敏感度,事實上,人類的眼睛對亮度的改變也比對色彩的改變要敏感得多,也就是說Y成份的數據是比較重要的。既然Cb成份和Cr成份的數據比較相對不重要,就可以只取部分數據來處理。以增加壓縮的比例。JPEG通常有兩種採樣方式:YUV411和YUV422,它們所代表的意義是Y、Cb和Cr三個成份的數據取樣比例。

2.DCT變換 DCT變換的全稱是離散餘弦變換(Discrete Cosine Transform),是指將一組光強數據轉換成頻率數據,以便得知強度變化的情形。若對高頻的數據做些修飾,再轉回原來形式的數據時,顯然與原始數據有些差異,但是人類的眼睛卻是不容易辨認出來。 壓縮時,將原始圖像數據分成8*8數據單元矩陣,例如亮度值的第一個矩陣內容如下:

JPEG將整個亮度矩陣與色度Cb矩陣,飽和度Cr矩陣,視為一個基本單元稱作MCU。每個MCU所包含的矩陣數量不得超過10個。例如,行和列採樣的比例皆為4:2:2,則每個MCU將包含四個亮度矩陣,一個色度矩陣及一個飽和度矩陣。 當圖像數據分成一個8*8矩陣後,還必須將每個數值減去128,然後一一代入DCT變換公式中,即可達到DCT變換的目的。圖像數據值必須減去128,是因為DCT轉換公式所接受的數字範圍是在-128到+127之間。 DCT變換公式:

x,y代表圖像數據矩陣內某個數值的坐標位置f(x,y)代表圖像數據矩陣內的數個數值u,v代表DCT變換後矩陣內某個數值的坐標位置F(u,v)代表DCT變換後矩陣內的某個數值 u=0 且 v=0 c(u)c(v)=1/1.414 u>0 或 v>0 c(u)c(v)=1 經過DCT變換後的矩陣數據自然數為頻率係數,這些係數以F(0,0)的值最大,稱為DC,其餘的63個頻率係數則多半是一些接近於0的正負浮點數,一概稱之為AC。

3、量化 圖像數據轉換為頻率係數後,還得接受一項量化程式,才能進入編碼階段。量化階段需要兩個8*8矩陣數據,一個是專門處理亮度的頻率係數,另一個則是針對色度的頻率係數,將頻率係數除以量化矩陣的值,取得與商數最近的整數,即完成量化。 當頻率係數經過量化後,將頻率係數由浮點數轉變為整數,這才便於執行最後的編碼。不過,經過量化階段後,所有數據只保留整數近似值,也就再度損失了一些數據內容,JPEG提供的量化表如下:

4、編碼 Huffman編碼無專利權問題,成為JPEG最常用的編碼方式,Huffman編碼通常是以完整的MCU來進行的。編碼時,每個矩陣數據的DC值與63個AC值,將分別使用不同的Huffman編碼表,而亮度與色度也需要不同的Huffman編碼表,所以一共需要四個編碼表,才能順利地完成JPEG編碼工作。

DC編碼

DC是彩採用差值脈衝編碼調製的差值編碼法,也就是在同一個圖像分量中取得每個DC值與前一個DC值的差值來編碼。DC採用差值脈衝編碼的主要原因是由於在連續色調的圖像中,其差值多半比原值小,對差值進行編碼所需的位數,會比對原值進行編碼所需的位數少許多。例如差值為5,它的二進制表示值為101,如果差值為-5,則先改為正整數5,再將其二進制轉換成1的補數即可。所謂1的補數,就是將每個Bit若值為0,便改成1;Bit為1,則變成0。差值5應保留的位數為3,下表即列出差值所應保留的Bit數與差值內容的對照。

在差值前端另外加入一些差值的霍夫曼碼值,例如亮度差值為5(101)的位數為3,則霍夫曼碼值應該是100,兩者連線在一起即為100101。下列兩份表格分別是亮度和色度DC差值的編碼表。根據這兩份表格內容,即可為DC差值加上霍夫曼碼值,完成DC的編碼工作。

AC編碼

AC編碼方式與DC略有不同,在AC編碼之前,首先得將63個AC值按Zig-zag排序,即按照下圖箭頭所指示的順序串聯起來。

63個AC值排列好的,將AC係數轉換成中間符號,中間符號表示為RRRR/SSSS,RRRR是指第非零的AC之前,其值為0的AC個數,SSSS是指AC值所需的位數,AC係數的範圍與SSSS的對應關係與DC差值Bits數與差值內容對照表相似。 如果連續為0的AC個數大於15,則用15/0來表示連續的16個0,15/0稱為ZRL(Zero Rum Length),而(0/0)稱為EOB(Enel of Block)用來表示其後所剩餘的AC係數皆等於0,以中間符號值作為索引值,從相應的AC編碼表中找出適當的霍夫曼碼值,再與AC值相連即可。

例如某一組亮度的中間符為5/3,AC值為4,首先以5/3為索引值,從亮度AC的Huffman編碼表中找到1111111110011110霍夫曼碼值,於是加上原來100(4)即是用來取[5,4]的Huffman編碼1111111110011110100,[5,4]表示AC值為4的前面有5個零。

由於亮度AC,色度AC霍夫曼編碼表比較長,在此省略去,有興趣者可參閱相關書籍。

實現上述四個步驟,即完成一幅圖像的JPEG壓縮。

參考資料

林福宗 《圖像檔案格式(上)——Windows 編程》,清華大學出版社, 1996年

李振輝、李仁各編著,《探索圖像檔案的奧秘》,清華大學出版社,1996年

黎洪松、成實譯《JPEG靜止數據壓縮標準》,學苑出版社,1996年

相關詞條

相關搜尋

熱門詞條

聯絡我們