JPEG(Joint Photographic Experts Group)是聯合映像專家小組的英文縮寫。它由國際電話與電報諮詢委員會CCITT(The International Telegraph and Telephone Consultative Committee)與國際標準組織ISO於1986年聯合成立的一個小組,負責制定靜態數位影像的編碼通訊協定。
小組一直致力於標準化工作,開發研製出連續色調、多級灰階、靜止映像的數位影像壓縮編碼方法,即JPEG演算法。JPEG演算法被確定為國際通用標準,其適用範圍廣泛,除用於靜態映像編碼外,還推廣到電視映像序列的幀內映像壓縮。而用JPEG演算法壓縮出來的靜態圖片檔案稱為JPEG檔案,副檔名通常為*.jpg、*.jpe*.jpeg。
一.JPEG編碼器和解碼器的基本系統結構。
1.1 JPEG檔案格式簡介
JPEG檔案使用的資料存放區方式有多種。最常用的格式稱為JPEG檔案交換格式(JPEG File Interchange Format,JFIF)。而JPEG檔案大體上可以分成兩個部分:標記碼(Tag)和壓縮資料。標記碼由兩個位元組構成,其前一個位元組是固定值0xFF,後一個位元組則根據不同意義有不同數值。在每個標記碼之前還可以添加數目不限的無意義的0xFF填充,也就說連續的多個0xFF可以被理解為一個0xFF,並表示一個標記碼的開始。而在一個完整的兩位元組的標記碼後,就是該標記碼對應的壓縮資料流,記錄了關於檔案的諸種資訊。
常用的標記有SOI、APP0、DQT、SOF0、DHT、DRI、SOS、EOI。注意,SOI等都是標記的名稱。在檔案中,標記碼是以標記代碼形式出現。例如SOI的標記代碼為0xFFD8,即在JPEG檔案中的如果出現資料0xFFD8,則表示此處為一個SOI標記。
1.2 JPEG編解碼基本過程
JPEG基本系統結構
二 ,JPEG編碼過程。
2.1 RGB格式轉換為YUV格式
RGB介紹:
在記錄電腦映像時,最常見的是採用RGB(紅、綠,藍)顏色分量來儲存顏色資訊,例如非壓縮的24位的BMP映像就採用RGB空間來儲存映像。一個像素24位,每8位儲存一種顏色強度(0-255),例如紅色儲存為 0xFF0000。
YUV介紹:
YUV是被歐洲電視系統所採用的一種顏色編碼方法,我國廣播電視也普遍採用這類方法。其中“Y”表示明亮度(Luminance或Luma),也就是灰階值;而“U”和“V”表示的則是色度(Chrominance或Chroma)。彩色電視採用YUV空間正是為了用亮度訊號Y解決彩色電視機與黑白電視機的相容問題,使黑白電視機也能接收彩色電視訊號。
YUV與RGB相互轉換的公式如下(RGB取值均為0-255):
Y = 0.299R + 0.587G + 0.114B
U = -0.147R - 0.289G + 0.436B
V = 0.615R - 0.515G - 0.100B
R = Y + 1.14V
G = Y - 0.39U - 0.58V
B = Y + 2.03U
2.2 將映像8*8分塊
將原始映像轉換為YUV格式後,對映像按一定的採樣格式進行採樣,常見的格式有4:4:4,4:2:2和4:2:0。
取樣完成後,將映像按8*8(pixel)劃分成MCU。
2.3 離散餘弦變換(DCT)
離散餘弦變換DCT(Discrete Cosine Transform)是數位率壓縮需要常用的一個變換編碼方法。任何連續的實對稱函數的付立葉變換中只含餘弦項,因此餘弦變換與付立葉變換一樣有明確的物理意義。DCT是先將整體映像分成N*N像素塊,然後對N*N像素塊逐一進行DCT變換。由於大多數映像的高頻分量較小,相應於映像高頻分量的係數經常為零,加上人眼對高頻成分的失真不太敏感,所以可用更粗的量化。
因此,傳送變換係數的數位率要大大小於傳送映像像素所用的數位率。到達接收端後通過反離散餘弦變換回到樣值,雖然會有一定的失真,但人眼是可以接受的。二維正反離散餘弦變換的算式:
其中N是像塊的水平、垂直像素數,一般取N=8。N大於8時效率增加不多而複雜性大為增加。8*8的二維資料區塊經DCT後變成8*8個變換係數,這些係數都有明確的物理意義。譬如當U=0,V=0時F(0,0)是原64個樣值的平均,相當於直流分量,隨著U,V值增加,相應係數分別代表逐步增加的水平空間頻率和垂直空間頻率分量的大小。當我們先只考慮水平方向上一行資料(8個像素)的情況時,:
可見映像訊號被分解成為直流成分;以及從低頻到高頻的各種餘弦成分;而DCT係數只是表示了該種成分所佔原映像訊號的份額大小;顯然,恢複映像資訊可以表示為這樣一個矩陣形式:F(n)=C(n)*E(n)
式中E(n)是一個基底 ,C(n)是DCT係數,F(n)則是映像訊號。
如果再考慮垂直方向上的變化,那麼,就需要一個二維的基底,即該基底不僅要反映水平方向頻率的變化;而且要反映垂直空間頻率的變化;對應於8*8的像素塊;其空間基底2所示:它是由64個像素值所組成的映像,通常也稱之為基本映像。把它們稱為基本映像是因為在離散餘弦變換的反變換式中,任何像塊都可以表示成64個係數的不同大小的組合。既然基本映像相當於變換域中的單一的係數,那麼任何像元也可以看成由64個不同幅度的基本映像的組合。這與任何訊號可以分解成基波和不同幅度的諧波的組合具有相同的物理意義。
原文出處:http://blog.sina.com.cn/s/blog_61d40cc30100f5e1.html
作者:quennel