JPEG是Joint Photographic Exports Group的英文縮寫,中文稱之為聯(lián)合圖像專家小組。
JPEG專家組開發(fā)了兩種基本的壓縮算法、兩種熵編碼方法、四種編碼模式。如下所示:
壓縮算法:
(1)有損的離散余弦變換DCT(Discrete?Cosine?Transform)
(2)無損的預(yù)測壓縮技術(shù);
熵編碼方法:
(1)Huffman編碼;
(2)算術(shù)編碼;
編碼模式:
(1)基于DCT的順序模式:編碼、解碼通過一次掃描完成;
(2)基于DCT的漸進(jìn)模式:編碼、解碼需要多次掃描完成,掃描效果由粗到精,逐級遞增;
(3)無損模式:基于DPCM,保證解碼后完全精確恢復(fù)到原圖像采樣值;
(4)層次模式:圖像在多個空間分辨率中進(jìn)行編碼,可以根據(jù)需要只對低分辨率數(shù)據(jù)做解碼,放? 棄高分辨率信息;
1.分塊
????? JPEG 編碼是以每8x8個點為一個單位進(jìn)行處理的.所以如果原始圖片的長寬不是8的倍數(shù),都需要先補成8的倍數(shù),使其可以進(jìn)行一塊塊的處理。將原始圖像數(shù)據(jù)分為8*8的數(shù)據(jù)單元矩陣之后,還必須將每個數(shù)值減去128,然后一一帶入DCT變換公式,即可達(dá)到DCT變換的目的。圖像的數(shù)據(jù)值必須減去128,是因為DCT公式所接受的數(shù)字范圍是-128到127之間。
2.DCT變換
? ? DCT中變換結(jié)果沒有復(fù)數(shù),全是實數(shù)。低頻部分集中在每個8*8塊的左上角,高頻部分在右下角。
3.量化
?????? 量化:像素值÷量化表對應(yīng)值所得的結(jié)果。由于量化表左上角的值較小,右上角的值較大,這樣就起到了保持低頻分量,抑制高頻分量的目的。JPEG使用的顏色是YUV格式。我們提到過,Y分量代表了亮度信息,UV分量代表了色差信息。相比而言,Y分量更重要一些。我們可以對Y采用細(xì)量化,對UV采用粗量化,可進(jìn)一步提高壓縮比。所以上面所說的量化表通常有兩張,一張是針對Y的;一張是針對UV的。
?????? 量化過程實際上就是對 DCT 系數(shù)的一個優(yōu)化過程。它是利用了人眼對高頻部分不敏感的特性來實現(xiàn)數(shù)據(jù)的大幅簡化。量化過程實際上是簡單地把頻率領(lǐng)域上每個成份,除以一個對于該成份的常數(shù),且接著四舍五入取最接近的整數(shù)。這是整個過程中的主要有損運算。以這個結(jié)果來說,經(jīng)常會把很多高頻率的成份四舍五入而接近0,且剩下很多會變成小的正或負(fù)數(shù)。整個量化的目的是減小非“0”系數(shù)的幅度以及增加“0”值系數(shù)的數(shù)目。量化是圖像質(zhì)量下降的最主要原因。因為人眼對亮度信號比對色差信號更敏感,因此使用了兩種量化表:亮度量化值和色差量化值。
4.編碼
?????? 由于兩個相鄰的8×8子塊的DC系數(shù)相差很小,所以對它們采用差分編碼DPCM,可以提高壓縮比,也就是說對相鄰的子塊DC系數(shù)的差值進(jìn)行編碼。8×8的其它63個元素是交流(AC)系數(shù),采用行程編碼。這里出現(xiàn)一個問題:這63個系數(shù)應(yīng)該按照怎么樣的順序排列?為了保證低頻分量先出現(xiàn),高頻分量后出現(xiàn),以增加行程中連續(xù)“0”的個數(shù),這63個元素采用了“之”字型(Zig-Zag)的排列方法。
reference:
http://blog.chinaunix.net/uid-24517893-id-3074462.html
http://jilie0226.blog.163.com/blog/static/36792254200902072746964/