1. 程式人生 > >jpeg影象壓縮原理

jpeg影象壓縮原理

jpeg格式的圖片具有很高壓縮比,是十分常見的一種圖片儲存和傳輸格式。通常由無損的RGB影象資料到最終的jpeg格式需要經過以下的步驟:

step1.顏色模式轉換

JPEG只支援YUV顏色模式(準確說是YCbCr顏色模式)的資料結構,而不支援RGB影象資料結構,所以在將彩色影象進行壓縮之前,必須先對顏色模式進行資料轉換。YUV色彩模型來源於RGB模型,Y表示明度資訊,U、V表示色度資訊。RGB和YUV之間的轉換可以通過相應的轉換公式計算得出(不必詳細知道公式,只需知道Y、U、V都是R、G、B的線性組合)。

轉換完成之後還需要進行資料取樣。一般採用的取樣比例是4:1:1或422。關於資料取樣格式表示的意義,見下圖:


step2.DCT變換

DCTDiscrete Cosine Transform是將影象訊號在頻率域上進行變換,分離出高頻和低頻資訊的處理過程(另見博文:傅立葉變換在影象處理中的應用)。然後再對影象的高頻部分(即影象細節)進行壓縮,以達到壓縮影象資料的目的。

DCT變換前首先將影象劃分為多個8*8的矩陣,為什麼是8*8呢?這與計算機的進位制規律有關,一個位元組等於8個二進位制位,這樣後面的編碼過程就可以對每個畫素用2個位元組的碼字來表示。然後對每一個8*8矩陣作DCT變換(變換公式略)。變換後得到一個頻率係數矩陣,其中的頻率係數都是浮點數。

step3.量化頻率係數

由於在後面編碼過程中使用的碼本都是整數,因此需要對變換後的浮點型頻率係數進行量化,將之轉換為整數。進行資料量化後,矩陣中的資料都是近似值,和原始影象資料之間有了差異,這一差異是造成影象壓縮後失真

的主要原因。

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

step4.編碼

編碼才是對影象真正進行壓縮的步驟,直流分量(DC)具有特殊的性質,因此要對每個8*8字塊中的1個直流分量和63個交流分量(AC)分別進行編碼。相鄰的DC採用簡單易用的差分編碼(DCPM);DA採用‘之’字型的行程編碼以保證低頻分量先出現,高頻分量後出現,他們的碼字用兩個位元組即可表示。如下圖:


經過以上四個步驟,原始影象資訊便被壓縮處理成了jpeg格式。

Reference: