JPEG

姓名:李偉? ? ? 學號:17101223393

【嵌牛導讀】:大家對JPEG了解嗎?今天和大家分享一下。

【嵌牛鼻子】:DCT 變換、圖像壓縮。

【嵌牛提問】:JPEG變換的計算過程

【嵌牛正文】:

JPEG 是Joint Photographic Experts Group(聯合圖像專家小組)的縮寫,是第一個國際圖像壓縮標準。JPEG圖像壓縮算法能夠在提供良好的壓縮性能的同時,具有比較好的重建質量,被廣泛應用于圖像、視頻處理領域。人們日常碰到的“.jpeg”、‘’.jpg“等指代的是圖像數據經壓縮編碼后在媒體上的封存形式,不能與JPEG壓縮標準混為一談。

JPEG編解碼器

下圖為JPEG基本系統的編解碼器原理圖,輸入的彩色圖像為Y、U、V三個分量,JPEG對它們分別進行編碼。


壓縮步驟

由于JPEG的有損壓縮方式(Lossy mode of operation)并不比其他的壓縮方法更優秀,

因此我們著重來看它的有損壓縮中最常用的基線JPEG算法(baseline sequential)。以一幅24位彩色圖像為例,JPEG的壓縮步驟分為:

1.顏色轉換

JPEG支持圖像采用任何一個色彩空間,支持1~4個顏色分量。灰度圖像顏色分量數為1。RGB、YUV、YCbCr等擁有3種顏色分量。4種顏色分量的例子是青、洋紅、黃和黑(Cyan,Magenta,Yellow,and Black,CMYK)。為了減少色度通道包含的大量的冗余信息,本例中采用YCbCr色彩空間。首先需要進行從RGB到YCbCr的色彩空間變換:

Y = 0.299000R + 0.587000G + 0.114000B

Cb = -0.168736R - 0.331264G + 0.500002B

Cr = 0.500000R - 0.418688G - 0.081312B

其中,Y表示亮度分量,Cb和Cr表示藍紅色度分量。

2.DC電平偏移

最初,在圖像中的像素存儲在無符號的整數中。對于數學計算,在圖像中任何變換或數學計算開始之前,根本上是將這些采樣轉換成兩個補碼表示。DC電平偏移的目的是保證輸入圖像的采樣有近似地集中在零附近的動態范圍。DC電平偏移執行的圖像采樣只通過無符號數表示。

方法:假設圖片分量的采樣精度為n,那么分量中的每個像素值應減去2的(n-1)次冪。

對于圖像而言他的采樣由無符號的整數表示,例如CT(X光斷層成像)圖像,動態范圍已經集中于零附近,所以不需要DC電平偏移。

3.子采樣

色彩空間轉換之后,圖像的大多數空間信息包含在亮度分量Y中。色度分量Cb和Cr包含大量冗余的顏色信息,所以我們運用子采樣較少色度數據量以在丟失少量信息的情況下壓縮圖像。

基線JPEG常用的子采樣格式為4:2:0,同時支持4:2:2和4:4:4顏色格式。

4.DCT變換


DCT(DiscreteCosineTransform)是將圖像信號在頻率域上進行變換,分離出高頻和低頻信息的處理過程。然后再對圖像的高頻部分(即圖像細節)進行壓縮,以達到壓縮圖像數據的目的。首先將圖像劃分為多個8*8的矩陣。然后對每一個矩陣作DCT變換。變換后得到一個頻率系數矩陣,其中的頻率系數都是浮點數。

標準色度量化表


標準亮度量化表


5.量化

由于在后面編碼過程中使用的碼本都是整數,因此需要對變換后的頻率系數進行量化,將之轉換為整數。由于進行數據量化后,矩陣中的數據都是近似值,和原始圖像矩陣之間有了差異,這一差異是造成圖像失真后失真的主要原因。

量化算法


在這一過程中,質量因子的選取至為重要。值選得過大,可以大幅度提高壓縮比,但是圖像質量就比較差;反之,質量因子越小(最小為1),圖像重建質量越好,但是壓縮比越低。對此,ISO已經制定了一組供JPEG代碼實現者使用的標準量化值(如右圖所示)。

右圖的兩個量化表的設計是根據由Lohscheller做的心理視覺實驗來確定二維基函數的可見閾值。

這些表也不適用于各種各樣的圖像,但他們為大多8位精度自然圖像進行亮度和色度采樣提供了合理的、出色的結果。

6.編碼

從前面過程我們可以看到,顏色轉換完成到編碼之前,圖像并沒有得到進一步的壓縮,DCT變換和量化可以說是為編碼階段做準備。

編碼采用兩種機制:一是0值的行程長度編碼;二是熵編碼(EntropyCoding)。

zig_zag


①之字形排序(Zig-zag ordering)

在JPEG中,采用曲徊序列,即以矩陣對角線的法線方向作“之”字排列矩陣中的元素。這樣做的優點是使得靠近矩陣左上角、值比較大的元素排列在行程的前面,而行程的后面所排列的矩陣元素基本上為0值。

②使用RLE對交流系數(AC)進行編碼

行程長度編碼是非常簡單和常用的編碼方式,在此不再贅述。

需要注意的是,AC系數的之字形序列編碼中有兩個特殊符號——(0,0)和(15,0)。第一個特殊符號指的是塊的結束(end-of-block,EOB),用來表明在之字形塊中剩余的元素都是零。另一個特殊符號是指零游程長度(zero-run-length,ZRL),用來表明16個零游程。基線JPEG允許的零游程最大長度是16個。如果這里的零超過16個,那么這個游程分成幾個長度為16的零游程。

③使用DPCM對直流系數(DC)進行編碼

DCT系數量化之后,通過差分編碼對量化后的DC系數編碼。當前塊的DC系數減去前個塊的DC系數,然后對其差值進行編碼,如右圖所示。這就利用了鄰接塊DC值之間的空間相關性。

④熵編碼

編碼實際上是一種基于統計特性的編碼方法。在JPEG中允許采用HUFFMAN編碼或者算數編碼。而基線JPEG算法(baseline sequential)采用的是前者。

經過RLE編碼的AC系數可以映射成兩個標志(RUNLENGTHCATEGORY)和(AMPLITUDE),前者采用的是霍夫曼編碼,而后者采用的是VLI編碼。同理經過DPCM編碼的DC系數同樣可以映射成兩個標志(CATEGORY)和(AMPLITUDE),,前者采用霍夫曼編碼,后者采用VLI編碼。

基線JPEG允許使用4個霍夫曼表,兩個用于AC系數編碼,兩個用于DC系數編碼。具體的編碼表請查詢ITU-T.81的表K.3~K.6

數據壓縮格式

1.JPEG定義了三種壓縮數據格式:

a) 交換格式 (interchange format)

b) 壓縮圖像數據的縮略格式(abbreviated format for compressed image data,)

c) 規范表數據的縮略格式(abbreviated format for table-specification data)

2.壓縮數據規范的基本內容(General aspects of the compressed data formatspecifications)

在結構上,壓縮數據格式包含一個由參數、標志和熵編碼數據段組成的有序集合。參數和標記往往又形成標志段。由于所有這些組成部分是由字節對齊的代碼表示的,因此每一個壓縮數據格式由一個8-bits字節的有序序列組成。對于每一個字節,都定義了一個最高有效位(MSB)和一個最低有效位(LSB)。[4]

插圖的語法規定示例


3.插圖的語法規定(Conventions for syntax figures)

如右圖:



為了便于了解JPEG壓縮數據流中每一個frame和scan的內容,必須掌握以下語法

– 參數/標記指示符:一個細線框包含一個標志或一個單獨的參數;

– 段指示符:一個粗線框包含一個標志段、一個熵編碼段或他們的結合;

– 參數長度指示符:細線框的寬度與其包含的參數或標志的位長成正比(如圖B.1中的E(4位),B(8位)和D(16位)所示)。相反,粗線框的寬度是無意義的;

– 可選的/有條件的指示符:方括號標明,在壓縮數據中,當前標志段或標記只是可選的或有條件的。

– 次序:交換格式中,圖中所示的參數或標志都先于其右邊所示的參數或標志,并跟在它左邊的參數后面。

– 熵編碼數據指示符:尖括號標明,其包圍的內容是已經經過了熵編碼的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,333評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,491評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,263評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,946評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,708評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,409評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,939評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,774評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,641評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,872評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,650評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內容