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

摘要: 這個(gè)名稱(chēng)代表 Joint Photographic Experts Group(聯(lián)合圖像專(zhuān)家小組)。聯(lián)合圖像專(zhuān)家小組1992年發(fā)布了JPEG的標(biāo)準(zhǔn)而在1994年獲得了ISO 109...

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

其實(shí)JPEG不是一種文件格式,它是由聯(lián)合圖像專(zhuān)家小組推出的一種圖像壓縮方法(類(lèi)似于視頻中的H.264等編解碼標(biāo)準(zhǔn))。而JPG或者JFIF格式僅僅是一種數(shù)據(jù)的包裝容器(類(lèi)似于視頻中MP4、MOV等封裝格式)。

1. 概述

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

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

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

首先,我們將RGB(紅綠藍(lán))轉(zhuǎn)換為一種稱(chēng)為YCrCb (YUV)的不同色彩空間。

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

RGB空間到Y(jié)UV空間轉(zhuǎn)換公式為:

JPEG圖像壓縮原理簡(jiǎn)介


下圖為分解開(kāi)的Y、U、V的示例:

 


3. 采樣(Downsampling)

下采樣、也就是減少人類(lèi)視覺(jué)系統(tǒng)不敏感的色度(U和V的成分)。雖然減少了顏色數(shù)量,但是人眼并不會(huì)察覺(jué)到圖像質(zhì)量有任何的差異。

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

如圖:

JPEG圖像壓縮原理簡(jiǎn)介


4. 分塊 (Dividing Patch)

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

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

離散余弦變換是一種類(lèi)似于傅里葉變換的數(shù)學(xué)工具(不清楚傅里葉變換的同學(xué)可以移步:
https://www.bilibili.com/video/av19141078來(lái)簡(jiǎn)單了解傅里葉變換).它將信號(hào)從時(shí)間域轉(zhuǎn)換到頻率域。

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