【正文】
就被稱為JPEG算法。同時(shí)這種算法也被確定為JPEG標(biāo)準(zhǔn)。JPEG標(biāo)準(zhǔn)是用于多個(gè)灰度和色度連續(xù)變化的自然圖像編碼的國(guó)際標(biāo)準(zhǔn),不僅適用于靜止圖像的壓縮,也適用于電視圖像序列的幀內(nèi)圖像的壓縮。JPEG的目的是為了給出一個(gè)適用于連續(xù)色圖像的壓縮方法,使之能滿足以下要求:A. 達(dá)到或接近當(dāng)前壓縮比與圖像保真度的技術(shù)水平,能覆蓋一個(gè)較寬的圖像質(zhì)量等級(jí)范圍, 能達(dá)到“很好”到“極好”的評(píng)估,與原始圖像相比,人的視覺難以區(qū)分。B. 能適用于任何種類的連續(xù)色調(diào)的圖像,且長(zhǎng)寬比都不受限制,同時(shí)也不受限于景物內(nèi)容、圖像的復(fù)雜程度和統(tǒng)計(jì)特性等。C. 計(jì)算的復(fù)雜性是可以控制的,其軟件可在各種CPU上完成,算法也可用硬件實(shí)現(xiàn)。JPEG算法,具體有以下四種操作方式:1. 順序編碼每一個(gè)圖像分量按從左到右,從上到下掃描,一次掃描完成編碼。累進(jìn)編碼圖像編碼在多次掃描中完成。2. 無(wú)失真編碼無(wú)失真編碼方法能保證編碼后,完全精確地恢復(fù)源圖像的采樣值,其壓縮比低于有失真壓縮編碼方法。3. 分層編碼圖像在多個(gè)空間分辨率進(jìn)行編碼。正是由于JPEG的高壓縮比,使得它廣泛地應(yīng)用于多媒體和網(wǎng)絡(luò)程序中。根據(jù)以上的目的,JPEG實(shí)際上定義了3種編碼系統(tǒng):基于DCT的有損編碼基本系統(tǒng),使用于絕大多數(shù)壓縮應(yīng)用場(chǎng)合。用于高壓縮比、高精確比或者漸進(jìn)重建應(yīng)用的擴(kuò)展編碼系統(tǒng)。用于無(wú)失真應(yīng)用場(chǎng)合的無(wú)損系統(tǒng)。這其中最常用的就是基于離散余弦變換(DCT變換)的順序型模式,以下將對(duì)這種模式的理論算法進(jìn)行討論。 基于DCT的JPEG圖像壓縮編碼理論算法 基于離散余弦變換(DCT變換)的JPEG編碼方法變換編碼技術(shù)是指對(duì)圖像信號(hào)作數(shù)學(xué)變換,產(chǎn)生一組變換系數(shù),然后對(duì)這些系數(shù)進(jìn)行量化、編碼,使其有利于壓縮目標(biāo)的實(shí)現(xiàn)。變換編碼的目的是除去圖像信號(hào)的相關(guān)性,屬于有損編碼。一般采用正交變換。其中KarhunenLoeve變換(KL變換)是一種最佳變換,其變換后的系數(shù)是互不相關(guān)的。但就變換的成本和實(shí)時(shí)性來(lái)說(shuō),KL變換通常被認(rèn)為是最困難的一種變換。而DCT變換則被認(rèn)為是性能最接近KL變換的準(zhǔn)最佳變換。DCT變換是一種與傅立葉變換緊密相關(guān)的數(shù)學(xué)運(yùn)算。在傅立葉級(jí)數(shù)展開式中,如果被展開的函數(shù)是實(shí)偶函數(shù),那么其傅立葉級(jí)數(shù)中只包含余弦項(xiàng),再將其離散化可導(dǎo)出余弦變換,因此稱之為離散余弦變換。DCT變換是對(duì)固定的某一像素塊(通常是88)進(jìn)行的變換,其64個(gè)像素的二維空間頻率分量的幅值稱為DCT系數(shù),以標(biāo)識(shí)像素值的相關(guān)程度?;陔x散余弦變換的JPEG編碼方法為順序編碼。其步驟是:首先,將圖像分為88的像素塊,根據(jù)從左到右,從上到下的光柵掃描方式進(jìn)行排序。DCT 對(duì)88的像素塊進(jìn)行計(jì)算,再對(duì)64個(gè)DCT系數(shù)用均勻量化表進(jìn)行標(biāo)量量化,均勻量化表是依據(jù)心理聽覺的實(shí)驗(yàn)得出的。這種均勻的標(biāo)量量化表可以作JPEG 標(biāo)準(zhǔn)的一部分。將DCT系數(shù)量化后,塊中的系數(shù)再根據(jù)“Z”形掃描方式排序,得到的比特流用行順序編碼生成中間的符號(hào)序列,然后這些符號(hào)進(jìn)過(guò)Huffman編碼用于傳輸或存儲(chǔ)。 基于DCT的JPEG圖像壓縮編碼算法的過(guò)程表述源圖像YUV圖像①②88子塊③DCT變換量化編碼壓縮圖像數(shù)據(jù)量化表編碼表⑤⑥④基于DCT編碼的JPEG編碼壓縮過(guò)程框圖如圖35所示。圖35 基于DCT編碼的JPEG壓縮過(guò)程簡(jiǎn)化框圖在編碼過(guò)程中,首先將輸入圖像顏色空間轉(zhuǎn)換后分解為88大小的數(shù)據(jù)塊,然后用正向二維DCT把每個(gè)塊轉(zhuǎn)變成64個(gè)DCT系數(shù)值,其中1個(gè)數(shù)值是直流(DC)系數(shù),即88空域圖像子塊的平均值,其余的63個(gè)是交流(AC)系數(shù),接下來(lái)對(duì)DCT系數(shù)進(jìn)行量化,最后將變換得到的量比的DCT系數(shù)進(jìn)行編碼和傳送,形成壓縮后的圖像格式。在解碼過(guò)程中,先對(duì)已編碼的量子化的DCT系數(shù)進(jìn)行解碼,然后求逆量化并把DCT系數(shù)轉(zhuǎn)化為88樣本像塊(使用二維DCT反變換),最后將操作完成后的塊組合成一個(gè)單一的圖像。這樣就完成了圖像的壓縮和解壓過(guò)程。 基于DCT的JPEG圖像壓縮編碼步驟1. 顏色空間的轉(zhuǎn)換和采樣JPEG文件使用的顏色空間為1982年推薦的電視圖像數(shù)字化標(biāo)準(zhǔn)CCIR 601 (現(xiàn)為ITURB )。在這個(gè)色彩空間中,每個(gè)分量、每個(gè)像素的電平規(guī)定為255級(jí),用8位代碼表示。JPEG只支持顏色模式。其中代表亮度,代表色度。全彩色圖像模式轉(zhuǎn)換到模式,變換公式如式(31):(31)其逆變換如式(32):(32)JPEG是以88的塊為單位來(lái)進(jìn)行處理的,由于人眼對(duì)亮度的敏感度比色度的敏感度大的多,所以采用縮減取樣的方式,通常采用YUV422取樣,如圖36所示:圖36 YUV422取樣示意圖即對(duì)于1616的塊,取4個(gè)88的塊,各取2個(gè)88的塊。也有YUV411方式,取4個(gè)88的塊,各取1個(gè)88的塊。YUV422取樣方式,數(shù)據(jù)減少1/3。YUV411取樣方式,數(shù)據(jù)減少1/2。縮減取樣一般采用如圖37所示方法:abcd……b39。d39。e圖37 壓縮取樣示意圖2. 二維離散余弦變換[8]DCT變換利用傅立葉變換的性質(zhì),采用圖像邊界褶翻將圖像變換為偶函數(shù)形式,然后對(duì)圖像進(jìn)行二維傅立葉變換,變換后僅包含余弦項(xiàng),在將其離散化由此可導(dǎo)出余弦變換,或稱之為離散余弦變換(DCT,Discrete Cosine Transform)。二維離散余弦正變換公式為(33)式中。二維離散余弦逆變換公式為(34)式中, 。JPEG采用的是88大小的子塊的二維離散余弦變換。在編碼器的輸入端,把原始圖像順序地分割成一系列88的子塊,子塊的數(shù)值在128到127之間。采用余弦變換獲得64個(gè)變換系數(shù)。變換公式如下:(35)式中。DCT變換結(jié)果如圖38所示:(1) (2)圖38 圖像顯示及圖像DCT變換后頻譜顯示由運(yùn)行結(jié)果圖38(2)可知,DCT變換具有能量集中的性質(zhì),數(shù)據(jù)集中在左上角。因此進(jìn)行圖像壓縮時(shí)離散余弦變換矩陣可以舍棄右下角的高頻數(shù)據(jù)。DCT逆變換結(jié)果如圖39所示:圖39 DCT逆變換后圖像3. DCT系數(shù)的量化量化是對(duì)經(jīng)過(guò)DCT變換后的頻率系數(shù)進(jìn)行量化,其目的是減小非“0”系數(shù)的幅度以及增加“0”值系數(shù)的數(shù)目,它是圖像質(zhì)量下降的最主要原因。對(duì)于基于DCT的JPEG圖像壓縮編碼算法使用如圖310所示的均勻量化器進(jìn)行量化,量化步距是按照系數(shù)所在的位置和每種顏色分量的色調(diào)值來(lái)確定。因?yàn)槿搜蹖?duì)亮度信號(hào)比對(duì)色差信號(hào)更敏感,因此使用了如表31所示的兩種量化表。此外,由于人眼對(duì)低頻分量的圖像比對(duì)高頻分量的圖像更敏感,因此原始圖像中的左上角的量化步距要比右下角的量化步距小。量化系數(shù)輸出DCT系數(shù)輸入圖310 均勻量化器表31 JPEG壓縮色度和亮度量化表亮度量化表色度量化表161110162440516117182447999999991212141926586055182126669999999914131624405769562426569999999999141722295187806247669999999999991822375668109103779999999999999999243555648110411392999999999999999949647887103121120101999999999999999979929598112100103999999999999999999量化會(huì)產(chǎn)生誤差,上表是綜合大量的圖像測(cè)試的實(shí)驗(yàn)結(jié)果,對(duì)于大部分圖像都有很好的結(jié)果。表中可以看出,高頻部分對(duì)應(yīng)的量化值大,目的就是將高頻部分編程接近于0,以便以后處理。JPEG可以在壓縮比和圖像質(zhì)量間作取舍。方法就是改變量化值。如果量化值放大一倍,則有更多的系數(shù)量化為0,提高了壓縮比。4. 量化系數(shù)的編排量化后的系數(shù)要重新編排,目的是為了增加連續(xù)的“0”系數(shù)的個(gè)數(shù),就是“0”的游程長(zhǎng)度,方法是按照Z(yǔ)字形的式樣編排。DCT變換后低頻分量多呈圓形輻射狀向高頻率衰減,因此可以看成按Z字形衰減,如圖311所示。因此,量化系數(shù)按Z字形掃描讀數(shù),這樣就把一個(gè)88的矩陣變成一個(gè)164的矢量,頻率較低的系數(shù)放在矢量的頂部。圖311 量化DCT系數(shù)的編排5. DC系數(shù)的編碼88子塊的64個(gè)變換系數(shù)經(jīng)量化后,按直流系數(shù)DC和交流系數(shù)AC分成兩類處理。坐標(biāo)u=v=0的直流系數(shù)DC實(shí)質(zhì)上就是空域圖像中64個(gè)像素的平均值。圖像塊經(jīng)過(guò)DCT變換之后得到的DC直流系數(shù)有兩個(gè)特點(diǎn),一是系數(shù)的數(shù)值比較大,二是相鄰88圖像塊的DC系數(shù)值變化不大。根據(jù)這個(gè)特點(diǎn),JPEG算法使用了差分脈沖調(diào)制編碼技術(shù)。差分脈沖編碼調(diào)制(DPCM),是一種對(duì)模擬信號(hào)的編碼模式,先根據(jù)前一個(gè)抽樣值計(jì)算出一個(gè)預(yù)測(cè)值,再取當(dāng)前抽樣值和預(yù)測(cè)值之差作為編碼用。此差值稱為預(yù)測(cè)誤差。抽樣值和預(yù)測(cè)值非常接近(因?yàn)橄嚓P(guān)性強(qiáng)),預(yù)測(cè)誤差的可能取值范圍比抽樣值變化范圍小。所以可用少幾位編碼比特來(lái)對(duì)預(yù)測(cè)誤差編碼,從而降低其比特率。這是利用減小冗余度的辦法,降低了編碼比特率。因此,對(duì)DC系數(shù)編碼進(jìn)行差分脈沖編碼就是對(duì)相鄰圖像塊之間量化DC系數(shù)的差值進(jìn)行編碼,即對(duì)相鄰塊之間的DC系數(shù)的差值DIFF=DCDC編碼。6. AC系數(shù)的編碼DCT變換所得系數(shù)除直流系數(shù)(DC系數(shù))之外的其余63個(gè)系數(shù)稱為交流系數(shù)(AC系數(shù))。量化AC系數(shù)的特點(diǎn)是164矢量中包含有許多“0”系數(shù),并且許多“0”是連續(xù)的,因此使用非常簡(jiǎn)單和直觀的游程長(zhǎng)度編碼(RLE)對(duì)它們進(jìn)行編碼。所謂行程編碼就是指僅存儲(chǔ)一個(gè)像素值以及具有相同顏色的像素?cái)?shù)目的圖象數(shù)據(jù)編碼方式,或稱游程編碼,常用RLE表示。該壓縮編碼技術(shù)相當(dāng)直觀和經(jīng)濟(jì),運(yùn)算也簡(jiǎn)單,因此解壓縮速度很快。RLE壓縮編碼尤其適用于計(jì)算機(jī)生成的圖形圖像,對(duì)減少存儲(chǔ)容量很有效果。63個(gè)AC系數(shù)采用行程編碼的方式進(jìn)行編碼的格式如圖312所示:第一字節(jié)第二字節(jié)兩個(gè)非零值之間的連續(xù)零的個(gè)數(shù)下一個(gè)非零值所占的比特?cái)?shù)下一個(gè)非零系數(shù)的實(shí)際值圖312 AC編碼格式也即在AC01到AC63中,找出每一個(gè)非零的AC值,將其表示成(NN/SS)VV的形式,其中:NN表示該AC值前的0的個(gè)數(shù)。而SS、VV與DC的定義一樣。如果連續(xù)的非0超過(guò)15個(gè)時(shí),增加一個(gè)擴(kuò)展字節(jié):(15/0)表示連續(xù)16個(gè)0。另外若有一串0延伸到AC63,一律用(0/0)表示結(jié)束。7. 組成位數(shù)據(jù)流JPEG編碼的最后一步是把各種標(biāo)記代碼和編碼后的圖像數(shù)據(jù)組成一幀一幀的數(shù)據(jù),這樣做目的是為了便于傳輸、存儲(chǔ)和譯碼器進(jìn)行譯碼,這樣組織的數(shù)據(jù)通常稱為JPEG位數(shù)據(jù)流。 DCT變換與小波變換的壓縮性能比較以A final word on the performance of waveletbased and JPEG 512技術(shù)的The peak signal to noise ratios (PSNR) of several different wavelet pression techniques applied to the 512 x 512, 8bpp Lena image as well as the performance of a baseline JPEG image pressor are pared in [ 13 ] and are reproduced in ,8bpp的Lena圖像,以及作為一個(gè)基線JPEG圖像壓縮性能(信噪比)的比較,在圖313It is seen that, at pression ratios less than 25:1 or so, the JPEG performs better numerically than the simple wavelet ,在壓縮比率低于25:1左右,JPEG數(shù)字比簡(jiǎn)單的小波編碼的性能更好。At pression ratios above 30:1, JPEG performance rapidly deteriorates, while wavelet coders degrade gracefully well beyond ratios of 100::1以上的壓縮比,JPEG格式的性能迅速惡化,而小波編碼適度地降低遠(yuǎn)遠(yuǎn)超過(guò)100:1的比率。The graphs also show that both the encoding technique and the particular wavelet used can make a significant difference in the performance of a pression system: the zerotree coder performs the best。 biorthogonal perform better than W6。 and variable length coders(VLC) perform better than fixed length coders(FLC).該圖還顯示,無(wú)論是哪種編碼技術(shù),使用特定的小波能夠在一個(gè)壓縮系統(tǒng)內(nèi)使得性能產(chǎn)生很大的不同:零樹編碼的表現(xiàn)最佳;雙正交性能優(yōu)于W6;可變長(zhǎng)度編碼(VLC)表現(xiàn)優(yōu)于固定長(zhǎng)度編碼。圖