版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、圖象壓縮(圖象壓縮(JPEG )編碼算法及壓縮過(guò)程的實(shí)現(xiàn)摘要本文首先介紹了靜態(tài)圖像壓縮(JPEG )編碼算法的基本原理、壓縮的實(shí)現(xiàn)過(guò)程及其重要過(guò)程的離散余弦變換(DCT )算法的實(shí)現(xiàn)原理及軟件實(shí)現(xiàn)的例程,其次著重介紹了壓縮過(guò)程中的DCT 、量化和編碼三個(gè)重要步驟的實(shí)現(xiàn)原理。關(guān)鍵詞:圖像壓縮 有損壓縮 JPEG 離散余弦變換 DCT 量化第一章 圖像壓縮編碼的綜述1.1 圖象壓縮的目的和方法圖象的數(shù)字化表示使得圖象信號(hào)可以高質(zhì)量地傳輸,并便于圖像的檢索、分析、處理和存儲(chǔ)。但是數(shù)字圖像的表示需要大量的數(shù)據(jù),必須進(jìn)行數(shù)據(jù)的壓縮。即使采用多種方法對(duì)數(shù)據(jù)進(jìn)行了壓縮,其數(shù)據(jù)量仍然巨大,對(duì)傳輸介質(zhì)、傳輸方法
2、和存儲(chǔ)介質(zhì)的要求較高。因此圖象壓縮編碼技術(shù)的研究顯得特別有意義,也正是由于圖象壓縮編碼技術(shù)及傳輸技術(shù)的不斷發(fā)展、更新,推動(dòng)了現(xiàn)代多媒體技術(shù)應(yīng)用的迅速發(fā)展。1.1.1 圖象壓縮的目的圖象采樣后,如果對(duì)之進(jìn)行簡(jiǎn)單的8bit 量化和PCM 編碼,其數(shù)據(jù)量是巨大的。以CIF (Common Intermediate Format)格式的彩色視頻信號(hào)為例,若采樣速率為25幀/秒,采樣樣點(diǎn)的Y 、U 、V 分量均為8bit 量化,則一秒鐘的數(shù)據(jù)量為:352288382560.83Mbit要傳輸或存儲(chǔ)這樣大的數(shù)據(jù)量是非常困難的,必需對(duì)其進(jìn)行壓縮編碼,在滿足實(shí)際需要的前提下,盡量減少要傳輸或存儲(chǔ)的數(shù)據(jù)量。雖然
3、數(shù)字圖象的數(shù)據(jù)量巨大,但圖象數(shù)據(jù)是高度相關(guān)的。一幅圖象的內(nèi)部相鄰象素之間,相鄰行之間的視頻序列中相鄰圖象之間有大量冗余信息空間相關(guān)性和時(shí)間相關(guān)性,可以使用各種方法盡量去除這些冗余信息,減少圖象的數(shù)據(jù)量。除了時(shí)間冗余和空間冗余外,在一般的圖象數(shù)據(jù)中還存在信息熵冗余、結(jié)構(gòu)冗余、知識(shí)冗余和視覺(jué)冗余。各種冗余就是壓縮圖象數(shù)據(jù)的出發(fā)點(diǎn)。圖象編碼的目的就在于采用各種方法去除冗余,以盡量少的數(shù)據(jù)量來(lái)表示個(gè)重建圖象。1.1.2圖象壓縮的幾種方法1. 統(tǒng)計(jì)和字典的壓縮方法常規(guī)程序和計(jì)算機(jī)熵的數(shù)據(jù)對(duì)于那些基于利用統(tǒng)計(jì)變種的壓縮,效果很好,這些統(tǒng)計(jì)變種表現(xiàn)在單個(gè)符號(hào)的頻率以及符號(hào)或短語(yǔ)字符串的頻率等方面,而基于字典
4、的系統(tǒng)實(shí)際山就是假扮統(tǒng)計(jì)程序??墒沁z憾的是,這類壓縮對(duì)于連續(xù)色調(diào)圖象的作用并不很好。這些程序的主要問(wèn)題產(chǎn)生于這樣的一個(gè)事實(shí):照片圖象的象素廣泛地分布在整個(gè)范圍。如果將圖象中的彩色用頻率分布畫(huà)出,那么頻率分布圖中,沒(méi)有我們?cè)诮y(tǒng)計(jì)壓縮的成功的情況下所看到的“尖峰”狀,實(shí)際上,如果延長(zhǎng)這個(gè)分布圖,那么從類似于電視那樣的生活圖象源中得出的分布圖會(huì)趨于平展。這意味著,每個(gè)象素代碼彼此是大約相同的出現(xiàn)機(jī)會(huì),決定不存在挖掘熵差的任何機(jī)會(huì)。基于字典的壓縮程序的運(yùn)行也有類似的問(wèn)題,基于掃描照片的圖象決定沒(méi)有任何類型的數(shù)據(jù)特征以產(chǎn)生相同的短語(yǔ)的多次出現(xiàn)。例如,一個(gè)柵格化的圖象,類似房子墻邊的垂直部分,在圖片的許多
5、連續(xù)的行中可能可以給出相似的字符串。但不幸的是,由于真實(shí)世界是變化多端的,每行中的相同的性能將彼此地略有不同,對(duì)于20個(gè)象素的一個(gè)字符串,其中的一兩個(gè)象素會(huì)因掃描而彼此出現(xiàn)一步長(zhǎng)的變化,雖然這些不同點(diǎn)小到人眼不能探測(cè)或?qū)θ搜鄄黄鹱饔?,但他們畢竟妨礙了基于字典壓縮的工作,對(duì)于這類壓縮方法來(lái)說(shuō),字符串必須嚴(yán)格匹配,由于小的變化,而使匹配的字符串長(zhǎng)度趨于很小,這就限制了壓縮的效率。2. 有損壓縮類似于音頻數(shù)據(jù),圖形圖象也同樣有一個(gè)比常規(guī)計(jì)算機(jī)數(shù)據(jù)文件優(yōu)越的地方:在壓縮/擴(kuò)展的循環(huán)中,他們可以被略微改動(dòng),而不會(huì)影響用戶的立即質(zhì)量。如果仔細(xì)修改,那么各處象素的精確灰度可以完全不被注意地進(jìn)行小的改變。由于
6、計(jì)算機(jī)柵的圖形圖象通常來(lái)自對(duì)真實(shí)世界源的掃描,所有他們通常表達(dá)一個(gè)已經(jīng)不完美的照片的表達(dá)或是不完美的其他打印接著的表達(dá)。沒(méi)有改變圖象基本性能的有損壓縮程序應(yīng)該是可行的。假設(shè)圖形圖象的有損壓縮是可能的,那么它是如何實(shí)現(xiàn)的呢?研究人員最初試驗(yàn)了用于語(yǔ)音信號(hào)的同樣的技術(shù),如差分編碼和自適應(yīng)編碼,雖然這些技術(shù)對(duì)圖象有幫助,但并沒(méi)有達(dá)到所希望的那么好,原因之一是音頻數(shù)據(jù)和視頻數(shù)據(jù)根本不同。用常規(guī)格式采樣的音頻數(shù)據(jù)是趨于反復(fù)的,聲音,包括講話,是由每次幾秒的重復(fù)的正弦波組成的。雖然計(jì)算機(jī)上DAC 的輸入流可能由許多不同的頻率疊加在一起而成,但是正弦波通常產(chǎn)生反復(fù)的波形。音頻反復(fù)的本性自然使他利于壓縮,線性
7、預(yù)言編碼和自適應(yīng)差分脈沖編碼調(diào)制等技術(shù)就利于了這一點(diǎn),因此將音頻數(shù)據(jù)流壓縮了50到95。但開(kāi)始研究圖形壓縮時(shí),人們也試圖用相似的技術(shù)壓縮數(shù)字化的圖象,取得了一些成功。最初,研究人員進(jìn)行柵格化數(shù)據(jù)流的壓縮,如顯示在電視機(jī)柵的數(shù)據(jù)。圖形數(shù)據(jù)柵格化時(shí),圖形顯示成一個(gè)象素流,每次一行地顯示在屏幕上,從左到右,從上到下。這樣,當(dāng)完成一行時(shí),圖片的一個(gè)細(xì)片就畫(huà)出了,直到整個(gè)屏幕填滿。數(shù)字化時(shí),象素可以使用從1位到24位,如今的琢磨圖形常常使用8位來(lái)定義一個(gè)象素。3. 差分調(diào)制差分調(diào)制依賴余模擬數(shù)據(jù)趨于“平緩”的變化,信號(hào)幅度撒謊那個(gè)的大的跳變是例外,而不是常規(guī)。在音頻數(shù)據(jù)中,只要信號(hào)的采樣率一定程度地高于
8、信息本身的最大的頻率分量,那么大的跳變就不會(huì)產(chǎn)生。音頻信號(hào)的差分調(diào)制通過(guò)編碼一個(gè)樣點(diǎn)與前一個(gè)樣點(diǎn)的不同來(lái)利用這一個(gè)特點(diǎn)。例如,如果單頻樣點(diǎn)位8位,差分編碼系統(tǒng)可能用4位來(lái)編碼樣點(diǎn)之差,這就將輸入數(shù)據(jù)壓縮了50。這種壓縮方法中所產(chǎn)生的損失是來(lái)自于:使用標(biāo)準(zhǔn)的差分方法不可能總是精確地編碼。信號(hào)的增長(zhǎng)可能快于比編碼的允許,或者,編碼可能太粗而不能容納下的差別,差分編碼的有損性可以很好的處理,以產(chǎn)生出好的信號(hào)。當(dāng)壓縮圖形數(shù)據(jù)時(shí),差分調(diào)制有很多問(wèn)題。首先,圖形中的象素依賴于平緩的增加或減少時(shí)不可靠的,一幅圖中不同的分量間的明顯界限時(shí)常有的事情。這意味著,使用差分編碼的系統(tǒng)需要接受樣點(diǎn)間的大的不同和小的不
9、同。這就限制了壓縮的效率。帶有數(shù)據(jù)長(zhǎng)結(jié)構(gòu)的許多圖象可以壓縮的很好。長(zhǎng)結(jié)構(gòu)中的象素,彼此之間沒(méi)有什么差別或差別很少;但時(shí),帶有突變部分的那些圖象不可能壓縮的很好。 通常,圖形圖象的差分的編碼似乎不產(chǎn)生非常強(qiáng)于最好的無(wú)損算法的壓縮結(jié)果,他當(dāng)然也不會(huì)產(chǎn)生所需要的、對(duì)壓縮的數(shù)量級(jí)上的改進(jìn)。4. 自適應(yīng)編碼自適應(yīng)編碼(常常于差分編碼一同使用)根據(jù)前面看到的一些象素而對(duì)將要到來(lái)的一些象素的信息做預(yù)言。例如,如果一幅灰度級(jí)照片中的最新的十個(gè)象素的值都在45到50之間,那么自適應(yīng)壓縮系統(tǒng)可能預(yù)言,下一個(gè)象素很大可能也在這個(gè)范圍中,之后,類似于霍夫曼或算術(shù)編碼那樣的基于熵的編碼方案可能給將來(lái)到來(lái)的各種代碼賦以概
10、率值??梢源娴厥褂脡嚎s擴(kuò)展方法,將最細(xì)的粒度賦給最接近預(yù)言猜測(cè)的范圍。第二章JPEG 編碼算法2.1JPEG 壓縮編碼基礎(chǔ)七十年代末八十年代初,研究工作開(kāi)始著眼于新的圖像壓縮類型,希望能夠大大地優(yōu)于前面所討論過(guò)的那些非常一般的壓縮技術(shù)。到八十年代末,開(kāi)始可為桌面系統(tǒng)的圖像處理而尋找應(yīng)用的工作,大多是是為UNIX 和Macintosh 工作站加入的協(xié)處理器卡的形式,這些卡的圖象質(zhì)量沒(méi)有任何可見(jiàn)退化的情況下,可以以95的比率執(zhí)行圖像的有損壓縮。同時(shí),另一部分人開(kāi)始發(fā)展一個(gè)國(guó)際標(biāo)準(zhǔn),它能夠包括這些新的壓縮的種類。如果標(biāo)準(zhǔn)允許方便的圖形格式的互換,那么,顯然,對(duì)于各方面都是有利的,關(guān)于標(biāo)準(zhǔn)化工作,早
11、期的擔(dān)心是:它會(huì)限制進(jìn)一步革新的可能性。兩個(gè)標(biāo)準(zhǔn)化組織,CCITT 和ISO ,分別從涉及圖像壓縮的工業(yè)和學(xué)術(shù)兩個(gè)入手,并且,似乎已經(jīng)潛在的阻止了工作的負(fù)結(jié)果。2.2.1JPEG 算法于JPEG 小組簡(jiǎn)介JPEG (Joint Photographic Experts Group)是由 ISO/IEC JTC1/SC2/WG8和CCITT VIII/NIC于1986年底聯(lián)合組成的專家小組。JPEG 小組的工組事研究具有連續(xù)色調(diào)的圖像(包括灰度及彩色圖像)的壓縮算法,并將其制定為適用于大多數(shù)圖像存儲(chǔ)及通信局設(shè)備的標(biāo)準(zhǔn)算法,JPEG 小組于1990年提出JPEG 算法的建議,并決定對(duì)建議中的算法不
12、再修改,除非發(fā)現(xiàn)了危害壓縮算法標(biāo)準(zhǔn)的問(wèn)題。作為靜態(tài)圖像壓縮的標(biāo)準(zhǔn)算法,JPEG 算法必須滿足以下要求:算法獨(dú)立于圖像的分辨率;具有低于1bit/象素的編碼率,并且能夠在五秒鐘內(nèi)建立圖像,以滿足實(shí)時(shí)要支持順序編解碼和漸進(jìn)編解求;在壓縮比大約是2的情況下能夠無(wú)失真地恢復(fù)原圖像;碼;以及對(duì)各種圖像成分及數(shù)據(jù)精度的自適應(yīng)能力;最后,要求編解碼設(shè)備簡(jiǎn)單易實(shí)現(xiàn)。JPEG 小組指定了一系列實(shí)現(xiàn)靜態(tài)圖像壓縮編碼的方法,這些方法的選擇決定于具體應(yīng)用的要求及性能價(jià)格比的考慮。這些方法基本上可以分為兩類:基于離散余弦變換的編碼和基于空間域預(yù)測(cè)編碼的方法。前者,即離散余弦變化的方法壓縮倍率較高但算法復(fù)雜,較難實(shí)現(xiàn);后
13、者,即預(yù)測(cè)編碼的方法雖然壓縮倍率較低,但是可以實(shí)現(xiàn)無(wú)損壓縮。JPEG 中允許四種編解碼模式:(1)基于DCT 的順序模式(sequential DCT-based)(2)基于DCT 的漸進(jìn)模式(progressive DCT-based)(3)無(wú)失真模式(Lossless )(4) 層次模式(hierarchical ).其中,(1)和(2)是基于DCT 的有損壓縮;(3)是基于線性預(yù)測(cè)的無(wú)損壓縮;(4)可以是DCT 與線性預(yù)測(cè)的分層混合。JPEG 算法可分為基本JPEG 和擴(kuò)展, 即Baseline System 與Extended System 。在Baseline System中生成的編
14、碼文件,在Extended System中一定可以正確解碼。2.1.2 JPEG壓縮JPEG 有損壓縮算法在三個(gè)成功的階段中操作,見(jiàn)圖21DCT Coefficient LosslessTransformation Quantization Compression這三個(gè)步驟形成了一個(gè)強(qiáng)有力的壓縮器。,可以將連續(xù)色調(diào)圖像壓縮到少于原大小的10,同時(shí)丟失很少的原始逼真度。2.2 JPEG中的二維DCT本文所討論的壓縮過(guò)程的關(guān)鍵是被稱為離散余弦變換(Discrete Cosine Transform,DCT )的數(shù)學(xué)變換。Baseline System中的DCT 要求輸入數(shù)據(jù)是一個(gè)88的矩陣,且每個(gè)
15、矩陣元素具有8bit 精度,分為從128到127,故DCT 變換前,象素值先要減去128。所謂88的二維DCT 是指將88的象素值矩陣變換成88系數(shù)矩陣。88象素值矩陣是由輸入圖像分塊得到的,若圖像的高或?qū)挷皇?的整數(shù)倍,必須擴(kuò)展其下邊或右邊到8的整數(shù)倍。下面(式21)給出了二維DCT 的實(shí)用公式。式22是反離散余弦變化(IDCT )公式。式中表示的是88個(gè)象素值的矩陣進(jìn)行計(jì)算的,產(chǎn)生出88頻率系數(shù)的矩陣。88的DCT 及IDCT 公式如下: 這個(gè)公式初看起來(lái)讓人害怕,但它可以用相當(dāng)直接的代碼段來(lái)表示。for ( i = 0 ; i 8 ; i + + for ( j = 0 ;j 8 : j
16、 + + temp 0.0;for ( x = 0 ; x 8 ; x + for ( y = 0 ; y 0 2N一旦建立了余弦變換矩陣,我們繞著它的主對(duì)角線旋轉(zhuǎn),將其轉(zhuǎn)置,這個(gè)轉(zhuǎn)置矩陣在代碼中表示C t ,稱作轉(zhuǎn)置余弦變換矩陣。矩陣的建立只需在程序初始化時(shí)進(jìn)行一次,兩個(gè)矩陣可以用相對(duì)短小的循環(huán)在同一時(shí)刻建立。見(jiàn)下面的代碼:for ( j = 0 ;j N;j +C 0 j = 1.0 / sqrt (N;Ct j 0 = C 0 j ;for ( i = 1 ;i N; i +for ( j = 0; j N ;j + C i j = sqrt ( 2.0/N *cos( ( 2* j +
17、 1 * i * pi / ( 2.0 * N ;Ct j i = C i j ;一旦這兩個(gè)矩陣建立,我們就可以使用DCT 函數(shù)的替代定義:DCT = C * 象素 * Ct在這個(gè)等式中,“*”運(yùn)算符表示的事矩陣相乘,而不是一般的算術(shù)相乘。等式中的每個(gè)因子是一個(gè)N*N的矩陣,在JPEG 算法以及本章所只用的程序中,矩陣為88。進(jìn)行兩個(gè)矩陣相乘時(shí),輸出矩陣中每個(gè)元素的運(yùn)算代價(jià)時(shí)N 個(gè)乘法操作和N 個(gè)加法操作,由于我們用兩個(gè)矩陣相乘來(lái)建立DCT 矩陣,在變換后的DCT 矩陣中的每個(gè)元素都是用2N 個(gè)乘法和加大建立起來(lái)的,這一點(diǎn),大大地改進(jìn)了前面使用嵌套循環(huán)的DCT 定義。/ * MatrixMul
18、tiply( temp , input , Ct */for ( i = 0 ; i N ; i + for ( j = 0 ;j N ; j + temp i j = 0.0for ( k = 0 ; k N ; k + temp i j + = ( pixel i k * Ct k j ;/ * MatrixMultiply( output ,C, temp ; */for ( i = 0 ; i N ; i + for ( j = 0 ; j N ; j + temp1 = 0.0;for ( k = 0 ; k N ; k + temp1 + = C i j * temp k j ;D
19、CT i j = temp1 ;上面顯示的是通過(guò)矩陣運(yùn)算實(shí)現(xiàn)DCT 的簡(jiǎn)單代碼片段。值得注意的是,代碼中主要是兩個(gè)三層的嵌套循環(huán),第一個(gè)三層嵌套循環(huán)是用輸入的象素序列于轉(zhuǎn)置余弦變換矩陣相乘,產(chǎn)生臨時(shí)矩陣;之后,在第二個(gè)三層嵌套循環(huán)中,臨時(shí)矩陣于余弦變換矩陣相乘,產(chǎn)生輸出的DCT 矩陣。第三章 壓縮過(guò)程3.1DCT 的輸出由輸入的象素值矩陣及輸出的DCT 矩陣可已經(jīng)看出DCT 所建立的頻譜壓縮特性。“直流系數(shù)”位于矩陣左上角的位置,這個(gè)表示的是輸入矩陣的所有幅度的一個(gè)平均,它代表了X 和Y 坐標(biāo)軸上的DC 分量,而且直流系數(shù)要比DCT 矩陣中任意值都打至少一個(gè)數(shù)量級(jí)。另外,在DCT 矩陣中有一個(gè)
20、通常的趨勢(shì),隨著元素離直流系數(shù)越來(lái)越遠(yuǎn),這些元素的幅度上也變的越來(lái)越小。這意味著,通過(guò)在輸入數(shù)據(jù)中執(zhí)行DCT ,我們已經(jīng)將圖像的表達(dá)集中在輸出矩陣的左上角的系數(shù)上,而DCT 矩陣的右下角部分所包含的是沒(méi)有用的信息。也很有利于數(shù)據(jù)的壓縮。3.2 量化由圖21可知JPEG 壓縮過(guò)程分為三個(gè)步驟。第一步是DCT 變換,這是一個(gè)無(wú)損壓縮變換,它實(shí)際上并不實(shí)現(xiàn)壓縮,是“有損”的準(zhǔn)備,即為“量化”處理階段做準(zhǔn)備。DCT 輸出矩陣比原始象素矩陣占有更多的存貯空間,DCT 函數(shù)的輸入包括8位象素值,但輸出值的范圍從1024到1023,占用11位,因此,為使DCT 矩陣占用較少空間,(Quantization
21、)。量化只就需要做些事情。減少DCT 矩陣存貯位數(shù)的行為稱為“量化”不過(guò)是通過(guò)減少整數(shù)單精度來(lái)減少存貯整數(shù)值所需要的位數(shù)第一個(gè)過(guò)程。一旦DCT 圖像壓縮,我們可以隨著原理原點(diǎn)處的直流系數(shù)越來(lái)越多的減少系數(shù)的精度:離(0,0)點(diǎn)越遠(yuǎn),這個(gè)元素對(duì)于圖形圖像的貢獻(xiàn)就越小,所有我們就越不用注意去維持這個(gè)值的精確精度。3.2.1量化的算法描述JPEG 算法使用量化矩陣(Quantization Matrix )來(lái)實(shí)現(xiàn)量化。對(duì)于DCT 矩陣中的每個(gè)元素位置,兩個(gè)矩陣中的相應(yīng)位置給出了一個(gè)量子值(Quantum Value),量子值指示出圖像壓縮時(shí)元素的步長(zhǎng)大小是多少,其范圍是1到255。與圖像關(guān)系最密切的
22、元素用小步長(zhǎng)編碼,大小為1表示最高精度。隨著我們從原點(diǎn)移開(kāi),值將變得較高,量化的實(shí)際公式相當(dāng)簡(jiǎn)單:量化后的值(i, j) DCT (i , j 圓整成最近的整數(shù) 量子(i,j從公式中可以清楚地看到,大于25或50的量化值可能可以保證素有高頻分量實(shí)際上將近似到0,只有高頻系數(shù)達(dá)到不尋常大值,才會(huì)編碼成非0。譯碼時(shí),逆量化公式為:DCT (i, j) 量化后的值(i ,j )*量子(i, j)3.2.2量化矩陣的選擇顯然有許多方法可以用來(lái)定義兩個(gè)矩陣中的值,至少有兩個(gè)試驗(yàn)途徑可以測(cè)試不同的量化方案。一個(gè)是在圖像還原以后,測(cè)量輸入輸出圖像之間的數(shù)學(xué)誤差; 第二個(gè)途徑試圖用人眼來(lái)判斷還原的結(jié)果,它與誤
23、差方面的數(shù)學(xué)差別不可能總是絕對(duì)一致。由于量化矩陣可以定義在壓縮進(jìn)行的運(yùn)行時(shí)間,所以JPEG 允許使用任何量化矩陣。在運(yùn)行時(shí)間選擇量化矩陣的好處之一是在被壓縮的圖形使用JPEG 算法時(shí)可以相當(dāng)簡(jiǎn)單地“打入”圖像的質(zhì)量值??梢曰谕灰u拿過(guò)需要和存貯容量來(lái)選擇圖像質(zhì)量。下面的程序所提供的用于測(cè)試代碼的量化表是使用非常簡(jiǎn)單的算法卷里起來(lái)的。要確定量子步長(zhǎng)大小的值,用戶輸入一個(gè)單個(gè)的“質(zhì)量因子”(quality factor ),它的范圍為1到25。大于25的值是可以工作的,但是值為25時(shí),圖像質(zhì)量已經(jīng)退化得很厲害,所以任何進(jìn)一步的實(shí)驗(yàn)都是無(wú)意義的。for ( i = 0 ; i N ; i + for
24、 ( j = 0 ; j N ; j + Quantum i j = 1 + ( 1 + i + j * quality ;質(zhì)量等級(jí)設(shè)置了彼此相鄰的相同量化水平帶的不同,這些量化水平帶是面向橫貫矩陣的對(duì)角線。所以,一個(gè)值的量化水平都與原點(diǎn)有大約相同的距離。由配置的結(jié)果看,位置(7,7)處的DCT 系數(shù)值為16,編碼成非零值,在元素值為圖像提供任何有意義的信息之前, ,它為該元素值設(shè)定了界限,任何此界限一下的貢 獻(xiàn)都被扔掉。這就是算法中發(fā)生“有損”效果的地方。DCT 的第一個(gè)步驟中除了數(shù)學(xué) 精度損失外沒(méi)有任何損失, 并且量化之后的步驟也是無(wú)所的編碼過(guò)程, 所以我們有機(jī)會(huì) 丟掉數(shù)據(jù)的唯一地方就在這
25、兒。 由將 DCT 矩陣量化后的量化結(jié)果來(lái)看, 量化/逆量化周期有明顯的壓縮效果, 矩陣 的高頻部分已大部分截成 0,消除了在被還原圖像中的影響,矩陣中接近直流系數(shù)的系 數(shù)可能被修改,但與原系數(shù)相比修改不大。下圖即為量化前和逆量化后的 DCT 矩陣的 結(jié)果。 DCT Matrix before Quantization 92 -39 -84 -52 -86 -62 -17 -54 3 -58 62 -36 -40 65 14 32 0 -56 54 -33 -39 60 0 19 -9 12 1 -10 49 -12 -36 -9 -7 9 0 0 45 0 -19 0 -7 17 -18 1
26、4 -7 -2 17 -9 0 11 -13 0 0 0 0 0 3 -2 3 -10 17 3 -11 22 0 0 0 0 0 0 0 0 -1 2 4 4 -6 -8 3 0 0 0 0 0 0 0 0 0 0 4 -5 -2 -2 -2 3 1 0 0 0 0 0 0 0 0 2 2 5 0 5 0 -1 3 0 0 0 0 0 0 0 0 DCT Matrix after Dequantization 90 -35 -84 -45 -77 -52 -15 -51 3.3 編碼 JPEG 過(guò)程的最后步驟濕編碼量化了的圖像。 JPEG 的編碼階段由壓縮圖像的三個(gè)不 11 同步驟組成。 (
27、1)第一步是將(0,0)處的直流系數(shù)由絕對(duì)值變?yōu)橄鄬?duì)值,因?yàn)閳D像中相鄰的 塊表現(xiàn)出了高度的相關(guān)。 用與前一個(gè)直流元素的差來(lái)編碼直流元素, 就回產(chǎn)生一個(gè)非常 小的數(shù)值。 (2)第二步是將圖像系數(shù)安排成“zig-zag”序列。 (3)最后一步是用兩種不同的機(jī)制編碼。第一個(gè)機(jī)制是 0 值的行程編碼。第二個(gè) 是 JPEG 所稱作的熵編碼(Entropy Coding) ,這是根據(jù)現(xiàn)實(shí)者的選擇,用霍夫曼代碼或 算術(shù)編碼送出系數(shù)代碼的一步。 3.3.1ZigZag 序列 JPEG 算法壓縮如此有效的原因之一是,在量化過(guò)程中,DCT 圖像的大量的系數(shù)截 斷成了 0 值,有這么多的 0 值,JPEG 委員會(huì)就
28、選擇了與處理其他系數(shù)值不同的方法處 理 0 值。 不使用霍夫曼或算術(shù)編碼來(lái)壓縮 0 值,而是使用行程編碼算法(RunLength Coding,RLE) ,所開(kāi)發(fā)的程序代碼很簡(jiǎn)單,只是給出圖像中連續(xù) 0 值的計(jì)數(shù)。由于在 許多圖像中,近一半的系數(shù)已量化成 0,這就給杰出的壓縮提供了機(jī)會(huì)。 增加行程差功能度的算法是將系數(shù)序列重新排序成 ZigZag 序列。 JPEG 算法沒(méi)有 象程序員可能進(jìn)行的那樣按照主行的順序壓縮系數(shù), 而使沿著對(duì)角線路徑移動(dòng)塊, 首先 選擇最大的元素值,并向可能是最小的值方向走。 ZigZag 序列的實(shí)際路線顯示在圖 31 中。 用 C 實(shí)現(xiàn) ZigZag 序列可能用簡(jiǎn)單的
29、查尋表來(lái)完成是最好的。 本章的樣例代碼中, 序列編碼程序成結(jié)構(gòu)的一部分,該結(jié)構(gòu)可以順序存取以確定要編碼的行和列。 struck zigzag int row; int col; Zigzag N * N 0,0, 0,1,1,0, = 12 2,0,1,1,0,2, 0,3,1,2,2,1,3,0, 4,0,3,1,2,2,1,3,0,4, 0,5,1,4,2,3,3,2,4,1,5,0, 6,0,5,1,4,2,3,3,2,4,1,5,0,6, 0,7,1,6,2,5,3,4,4,3,5,2,6,1,7,0, 7,1,6,2,5,3,4,4,3,5,2,6,1,7, 2,7,3,6,4,5,5,4,4,6,3,7, 7,3,6,4,5,5,4,6,3,7, 4,7,5,6,6,5,7,4, 7,5,6,6,5,7, 6,7,7,6, 7,7 下面是將每個(gè) DCT 結(jié)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 施工安全協(xié)議書(shū)模板
- 2025年度棗樹(shù)種植與現(xiàn)代農(nóng)業(yè)園區(qū)建設(shè)合同4篇
- 行業(yè)間對(duì)于展會(huì)安全管理知識(shí)的普及推廣
- 網(wǎng)絡(luò)安全背景下學(xué)生行為規(guī)范的強(qiáng)化措施
- 科技助力孩子藝術(shù)成長(zhǎng)現(xiàn)代教學(xué)方法與實(shí)踐
- 二零二五年度車輛擔(dān)保質(zhì)押投資合作合同4篇
- 2025版施工安全協(xié)議書(shū):裝配式建筑安全協(xié)議范本3篇
- 維護(hù)策略在實(shí)驗(yàn)室設(shè)備長(zhǎng)期運(yùn)行中的重要性
- 二零二五年度車牌租賃與車輛租賃信用評(píng)估合同4篇
- 巖棉防火技術(shù)在現(xiàn)代建筑中的應(yīng)用研究
- 人教版數(shù)學(xué)四年級(jí)下冊(cè)核心素養(yǎng)目標(biāo)全冊(cè)教學(xué)設(shè)計(jì)
- JJG 692-2010無(wú)創(chuàng)自動(dòng)測(cè)量血壓計(jì)
- 三年級(jí)下冊(cè)口算天天100題(A4打印版)
- 徐州市2023-2024學(xué)年八年級(jí)上學(xué)期期末地理試卷(含答案解析)
- CSSD職業(yè)暴露與防護(hù)
- 飲料對(duì)人體的危害1
- 數(shù)字經(jīng)濟(jì)學(xué)導(dǎo)論-全套課件
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)項(xiàng)目三 移動(dòng)商務(wù)運(yùn)營(yíng)內(nèi)容的策劃和生產(chǎn)
- 中考記敘文閱讀
- 產(chǎn)科溝通模板
- 2023-2024學(xué)年四川省成都市小學(xué)數(shù)學(xué)一年級(jí)下冊(cè)期末提升試題
評(píng)論
0/150
提交評(píng)論