圖像壓縮比(JPEG圖像壓縮原理簡介)

摘要: 這個名稱代表 Joint Photographic Experts Group(聯合圖像專家小組)。聯合圖像專家小組1992年發布了JPEG的標準而在1994年獲得了ISO 109...

這個名稱代表 Joint Photographic Experts Group(聯合圖像專家小組)。聯合圖像專家小組1992年發布了JPEG的標準而在1994年獲得了ISO 10918-1的認定。JPEG與視頻音頻壓縮標準的MPEG(Moving Picture Experts Group)很容易混淆,但兩者是不同的組織及標準。

其實JPEG不是一種文件格式,它是由聯合圖像專家小組推出的一種圖像壓縮方法(類似于視頻中的H.264等編解碼標準)。而JPG或者JFIF格式僅僅是一種數據的包裝容器(類似于視頻中MP4、MOV等封裝格式)。

1. 概述

JPEG編碼的主要流程是:色彩空間轉換 (Color Conversion)、下采樣(Downsampling)、 分塊 (Dividing Patch) 、離散余弦變換(Discrete cosine transform)、量化(Quantization)、熵編碼技術(Entropy coding)。

2. 色彩空間轉換(Color Conversion)

我們使用傳感器采集到的原始(RAW)圖像使用的是RGB色彩空間來表示的。也就是說,按照每一個像素的RGB(Red, Green, Blue)值填充到對應的像素位置。

首先,我們將RGB(紅綠藍)轉換為一種稱為YCrCb (YUV)的不同色彩空間。

?Y成分表示一個像素的亮度 (luminance) ?U成分表示色度(飽和度)(Chrominance)?V成分表示色度(飽和度)

RGB空間到YUV空間轉換公式為:

JPEG圖像壓縮原理簡介


下圖為分解開的Y、U、V的示例:

 


3. 采樣(Downsampling)

下采樣、也就是減少人類視覺系統不敏感的色度(U和V的成分)。雖然減少了顏色數量,但是人眼并不會察覺到圖像質量有任何的差異。

JPEG上這種縮減取樣的比例可以是4:4:4(無縮減取樣),4:2:2(在水平方向2的倍數中取一個,顏色為之前的 1/2),以及最普遍的4:2:0(在水平和垂直方向 2 的倍數中取一個,顏色為之前的 1/4)。

如圖:

JPEG圖像壓縮原理簡介


4. 分塊 (Dividing Patch)

源圖像中每點的 3 個分量是交替出現的,先要把這 3 個分量分開,存放到 3 張表中去。然后由左及右,由上到下依次讀取 8*8 的子塊,存放在長度為 64 的表中,即可以進行DCT變換。如果原始圖片的長寬不是 8 的倍數, 都需要先補成 8 的倍數, 使其可以進行一塊塊的處理。編碼時,程序從源數據中讀取一個 8*8的數據塊后,進行 DCT 變換,量化,編碼,然后再讀取、處理下一個 8\times8 的數據塊。圖像的數據值必須減去128,是因為 DCT 公式所接受的數字范圍是 -128 到 127 之間。

5、離散余弦變換(Discrete Cosine Transform)

離散余弦變換是一種類似于傅里葉變換的數學工具(不清楚傅里葉變換的同學可以移步:
https://www.bilibili.com/video/av19141078來簡單了解傅里葉變換).它將信號從時間域轉換到頻率域。

這一步,將視頻中的每個成分(Y, U, V)生成三個區域,每一個區域再劃分成如瓷磚般排列的一個個的 8*8 子區域,每一子區域使用二維的離散余弦變換(DCT)轉換到頻率空間。