基于DCT的圖像壓縮編碼算法的MATLAB實現(xiàn)_第1頁
基于DCT的圖像壓縮編碼算法的MATLAB實現(xiàn)_第2頁
基于DCT的圖像壓縮編碼算法的MATLAB實現(xiàn)_第3頁
基于DCT的圖像壓縮編碼算法的MATLAB實現(xiàn)_第4頁
基于DCT的圖像壓縮編碼算法的MATLAB實現(xiàn)_第5頁
免費預(yù)覽已結(jié)束,剩余25頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、摘要隨著科學(xué)技術(shù)的開展,圖像壓縮技術(shù)越來越引起人們的關(guān)注.為此從眾多的圖像壓縮編碼標(biāo)準(zhǔn)中選取了基于DCT變換的JPEG圖像壓縮編碼算法進(jìn)行研究,并通過比照分析各種軟件特性選取了MATLAB進(jìn)行實驗仿真.首先說明了圖像壓縮在現(xiàn)代通信中的必要性和可行性,然后講述了MATLAB及其圖像處理工具箱的相關(guān)知識,并對基于DCT變換的JPEG圖像壓縮算法進(jìn)行了詳細(xì)的研究,重點介紹了JPEG壓縮編碼的具體過程和方法,詳細(xì)介紹了編碼中DCT變換、量化、嫡編碼和霍夫曼編碼等模塊的原理和數(shù)學(xué)推導(dǎo)以及各模塊的功能分析.最后應(yīng)用MATLAB進(jìn)行了實驗仿真并分析結(jié)果得出結(jié)論.實驗結(jié)果說明基于DCT變換的JPEG圖像壓縮方

2、法簡單、方便,既能保證有較高的壓縮比,又能保證有較好的圖像質(zhì)量,應(yīng)用MATLAB仿真出來的結(jié)果較好的反響了其編碼算法原理.關(guān)鍵詞JPEG圖像壓縮;DCT;MATLAB;圖像處理工具箱摘要IAbstract錯誤味定義書簽.第1章緒論11.1 課題背景11.1.1 離散余弦變換21.1.2 預(yù)測技術(shù)31.2 圖像壓縮技術(shù)的開展和現(xiàn)狀31.2.1 圖像編碼技術(shù)開展歷史31.2.2 圖像編碼技術(shù)的現(xiàn)狀41.3 MATLAB及其圖像處理工具箱4第2章圖像壓縮編碼理論算法62.1 DCT變換的思想來源62.2 基于DCT的JPEG圖像壓縮編碼步驟82.2.1 顏色空間的轉(zhuǎn)換和采樣82.2.2 二維離散余弦

3、變換92.2.3 DCT系數(shù)的量化122.2.4 量化系數(shù)的編排142.2.5 DC系數(shù)的編碼152.2.6 AC系數(shù)的編碼162.2.7 組成位數(shù)據(jù)流182.2.8 DCT變換在圖像壓縮中的應(yīng)用202.3 代碼實現(xiàn)錯誤!未定義書簽.第1章緒論1.1 課題背景隨著信息技術(shù)的開展,圖像信息被廣泛應(yīng)用于多媒體通信和計算機系統(tǒng)中,但是圖像數(shù)據(jù)的一個顯著特點就是信息量大.具有龐大的數(shù)據(jù)量,如果不經(jīng)過壓縮,不僅超出了計算機的存儲和處理水平,而且在現(xiàn)有的通信信道的傳輸速率下,是無法完成大量多媒體信息實時傳輸?shù)?因此,為了更有效的存儲、處理和傳輸這些圖像數(shù)據(jù),必須對其進(jìn)行壓縮,因此有必要對圖像壓縮編碼進(jìn)行研

4、究.由于組成圖像的各像素之間,無論是在水平方向還是在垂直方向上都存在著一定的相關(guān)性,因此只要應(yīng)用某種圖像壓縮編碼方法提取或者減少這種相關(guān)性,就可以到達(dá)壓縮數(shù)據(jù)的目的“數(shù)字圖像的冗余主要表現(xiàn)在以下幾種形式:空間冗余:規(guī)那么物體和規(guī)那么背景的外表物理特性都具有相關(guān)性,數(shù)字化后表現(xiàn)為數(shù)字冗余.例如:某圖片的畫面中有一個規(guī)那么物體,其外表顏色均勻,各局部的亮度、飽和度相近,把該圖片作數(shù)字化處理,生成位圖后,很大數(shù)量的相鄰像素的數(shù)據(jù)是完全一樣或十分接近的,完全一樣的數(shù)據(jù)當(dāng)然可以壓縮,而十分接近的數(shù)據(jù)也可以壓縮,由于恢復(fù)后人亦分辨不出它與原圖有什么區(qū)別,這種壓縮就是對空間冗余的壓縮.時間冗余:序列圖像如電

5、視圖像和運動圖像和語音數(shù)據(jù)的前后有著很強的相關(guān)性,經(jīng)常包含著冗余.在播出該序列圖像時,時間發(fā)生了推移,但假設(shè)干幅畫面的同一部位沒有變化,變化的只是其中某些地方,這就形成了時間冗余.統(tǒng)計冗余:空間冗余和時間冗余是把圖像信號看作概率信號時所反響出的統(tǒng)計特性,因此,這兩種冗余也被稱為統(tǒng)計冗余.編碼冗余:同樣長度的編碼可以表示不同的信息.結(jié)構(gòu)冗余:相似的,對稱的結(jié)構(gòu)如果都加以記錄就出現(xiàn)結(jié)構(gòu)冗余.知識冗余:由圖像的記錄方式與人對圖像的知識差異而產(chǎn)生的冗余.人對許多圖像的理解與某些根底知識有很大的相關(guān)性.許多規(guī)律性的結(jié)構(gòu),人可以由先驗知識和背景知識得到.而計算機存儲圖像時還得把一個個像素信息存入,這就形成

6、冗余.視覺冗余:視覺系統(tǒng)對于圖像場的注意是非均勻和非線性的,視覺系統(tǒng)不是對圖像的任何變化都能感知.所謂的圖像壓縮編碼技術(shù)就是對要處理的圖像數(shù)據(jù)按一定的規(guī)那么進(jìn)行變換和組合,從而到達(dá)以盡可能少的數(shù)據(jù)流代碼來表示盡可能多的數(shù)據(jù)信息.在眾多的圖像壓縮編碼標(biāo)準(zhǔn)中,JPEGJointPhotographicExpertsGroup格式是一種稱為聯(lián)合圖像專家組的圖像壓縮格式,它適用于不同類型、不同分辨率的彩色和黑白靜止圖像3在JPEG圖像壓縮算法中,一種是以離散余弦變換DCT,DiscreteCosineTransform為根底的有損壓縮算法,另一種是以預(yù)測技術(shù)為根底的無損壓縮算法.1.1.1 離散余弦變

7、換DCT變換利用傅立葉變換的性質(zhì).采用圖像邊界褶翻將像變換為偶函數(shù)形式,然后對圖像進(jìn)行二維傅立葉變換,變換后僅包含余弦項,所以稱之為離散余弦變換.DCT編碼屬于正交變換編碼方式,用于去除圖像數(shù)據(jù)的空間冗余.變換編碼就是將圖像光強矩陣時域信號變換到系數(shù)空間頻域信號上進(jìn)行處理的方法.在空間上具有強相關(guān)的信號,反映在頻域上是在某些特定的區(qū)域能量常常被集中在一起,或者是系數(shù)矩陣的分布具有某些規(guī)律.我們可以利用這些規(guī)律在頻域上減少量化比特數(shù),到達(dá)壓縮的目的.圖像經(jīng)DCT變換以后,DCT系數(shù)之間的相關(guān)性就會變小.而且大局部能量集中在少數(shù)的系數(shù)上,因此,DCT變換在圖像壓縮中非常有用,是有損圖像壓縮國際標(biāo)準(zhǔn)

8、JPEG的核心.從原理上講可以對整幅圖像進(jìn)行DCT變換,但由于圖像各部位上細(xì)節(jié)的豐富程度不同,這種整體處理的方式效果不好.為此,發(fā)送者首先將輸入圖像分解為8*8或16*16塊,然后再對每個圖像塊進(jìn)行二維DCT變換,接著再對DCT系數(shù)進(jìn)行量化、編碼和傳輸;接收者通過對量化的DCT系數(shù)進(jìn)行解碼,并對每個圖像塊進(jìn)行的二維DCT反變換.最后將操作完成后所有的塊拼接起來構(gòu)成一幅單一的圖像.對于一般的圖像而言,大多數(shù)DCT系數(shù)值都接近于0,所以去掉這些系數(shù)不會對重建圖像的質(zhì)量產(chǎn)生較大影響.因此,利用DCT進(jìn)行圖像壓縮確實可以節(jié)約大量的存儲空間.在實驗中,先將輸入的原始len.圖像分為8*8塊,然后再對每個

9、塊進(jìn)行二維DCT變換.MATLAB圖像處理上具箱中提供的二維DCT變換及DCT反變換函數(shù)如下.dct2實現(xiàn)圖像的二維離散余弦變換.其語法格式為:(l)B=dct2(A)返回圖像A的二維離散余弦變換值,其大小與A相同且各元素為離散余弦變換的系數(shù)B(KI,k2)o(2)B=dct2(A,in,n)或B=dct2(A,m,n)如果m和n比圖像A大,在對圖像進(jìn)行二維離散余弦變換之前,先將圖像A補零至m*n如果m和n比圖像A小.那么進(jìn)行變換之前,將圖像A剪切.idct2可以實現(xiàn)圖像的二維離散余弦反變換,其語法格式為:B=idct2(A);B=idct2(A,m,n)或B=idct2(A,m,n)01.1

10、.2 預(yù)測技術(shù)它是利用空間中相鄰數(shù)據(jù)的相關(guān)性,利用過去和現(xiàn)在出現(xiàn)過的點的數(shù)據(jù)情況來預(yù)測未來點的數(shù)據(jù).通常用的方法是差分脈沖編碼調(diào)制(DPCM)和自適應(yīng)差分脈沖編碼調(diào)制(ADPCM)o1.2 圖像壓縮技術(shù)的開展和現(xiàn)狀1.2.1 圖像編碼技術(shù)開展歷史1948年提出電視信號數(shù)字化后,圖像壓縮編碼的研究工作就宣告開始To在這項技術(shù)開展的早期,限于客觀條件,僅對幀預(yù)測法和亞取樣查復(fù)原法進(jìn)行研究,對視覺特性也做了一些極為有限但可貴的研究工作.1966年J.B.ONeal比照分析了DPCM和PCM并提出了用于電視的實驗數(shù)據(jù).1969年進(jìn)行了線性預(yù)測編碼的實際實驗.1969年舉行首屆圖像編碼會議.70年代開始

11、進(jìn)行了幀間預(yù)測編碼的研究.80年代開始對運動估值和模型編碼進(jìn)行研究.進(jìn)入90年代,ITU-T和ISO制定了一系列圖像編碼國際建議,如H.261、JPEGsMPEG-RH.262、H.263、MPEG4等.變換編碼是1968年H.C.Andrews等人提出的,采用的是二維離散傅立葉變換,此后相繼出現(xiàn)用其他變換方法的變換編碼,其中包括二維離散余弦變換.1.2.2 圖像編碼技術(shù)的現(xiàn)狀經(jīng)過幾十年的開展,圖像編碼技術(shù)業(yè)已成熟,一些國際建議的制定極推動了圖像編碼技術(shù)的實現(xiàn)和產(chǎn)業(yè)化,從而推動圖像編碼技術(shù)以更快的速度發(fā)展,目前的研究方向有兩個:(1)更好地實現(xiàn)現(xiàn)有的圖像編碼國際建議.研制出集成度更高、性能更好

12、的圖像編碼專用芯片,使編碼系統(tǒng)本錢更低、可靠性更高.解決好現(xiàn)有的圖像編碼系統(tǒng)開發(fā)中的技術(shù)問題.例如:提升圖像質(zhì)量、提升抗碼水平等.(2)對圖像編碼理論和其他圖像編碼方法的研究.目前已經(jīng)提出和正在進(jìn)行研究的圖像編碼方法有:多分辨率編碼、基于外表描述的編碼、模型編碼、利用人工神經(jīng)網(wǎng)絡(luò)的編碼、利用分形幾何的編碼、利用數(shù)學(xué)形態(tài)學(xué)的編碼等等.1.3 MATLAB及其圖像處理工具箱如果應(yīng)用高級語言(如Basic,C,Fortran)編寫仿真程序來實現(xiàn)這一基于DCT的圖像壓縮編碼算法比擬麻煩,而且仿真效果也不是十分理想.本文主要應(yīng)用MATLAB發(fā)布的圖像處理工具箱中的相關(guān)函數(shù)和命令來實基于DCT的圖像壓縮編

13、碼理論算法的仿真.MATLAB語言是由美國MathWorks公司推出的計算機軟件,經(jīng)過多年的逐步開展與不斷完善,現(xiàn)已成為國際公認(rèn)的最優(yōu)秀的科學(xué)計算與數(shù)學(xué)應(yīng)用軟件之一,它集數(shù)值分析、矩陣運算、信號處理和圖形顯示于一體,構(gòu)成了一個方便的、界面友好的用戶環(huán)境,而且還具有可擴展性特征.MATLAB中的數(shù)字圖像是以矩陣形式表示的,矩陣運算的語法對MATLAB中的數(shù)字圖像同樣適用,這意味著MATLAB強大的矩陣運算水平對用于圖像處理非常有利.圖像處理工具箱(ImageProcessingToolbox)提供了一套全方位的參照標(biāo)準(zhǔn)算法和圖形工具,用于進(jìn)行圖像處理、分析、可視化和算法開發(fā).可進(jìn)行圖像壓縮、空間

14、轉(zhuǎn)換、圖像增強、特征檢測、降噪、圖像分割和圖像配準(zhǔn)等功能.工具箱局部函數(shù)均以開放式MATLAB語言編寫,這意味著可以檢查算法、修改源代碼和創(chuàng)立自定義函數(shù).本文利用MATLAB圖像處理工具箱對基于DCT的JPEG圖像壓縮編碼理論算法進(jìn)行仿真,實驗證實該軟件功能強大,語言簡潔易學(xué),工具箱具有豐富的技術(shù)支持并集成了該領(lǐng)域?qū)<业闹腔?應(yīng)用簡單而效果良好.第2章圖像壓縮編碼理論算法2.1 DCT變換的思想來源信號的變換分析方法中,通常是通過一組適當(dāng)?shù)幕瘮?shù)對信號進(jìn)行分解,得到信號在變換域的表示方法,利用信號在變換域中某些特征趨于集中的特點來提取其特征從而進(jìn)行分析.自1822年傅立葉Fourier發(fā)表“熱

15、傳導(dǎo)解析理論以來,傅立葉變換一直是信號處理領(lǐng)域中應(yīng)用最廣泛、效果最好的一種分析手段.但傅立葉變換只是一種純頻域的分析方法,它在頻域的定位性是完全準(zhǔn)確的即頻域分辨率最高,而在時域無任何定位性或分辯水平,也即傅立葉變換所反映的是整個信號全部時間下的整體頻域特征,而不能提供任何局部時間段上的頻率信息.事實上,在我們生活中的常見信號通常都具有非平穩(wěn)的性質(zhì),即其頻域性質(zhì)都是隨時間而變化的.對這一類信號用傅立葉變換進(jìn)行分析,雖然可以知道信號所包含有哪些頻率信息,但不能知道這些頻率信息具體出現(xiàn)在哪個時間段上,因此不能提供關(guān)于信號完整的信息.可見,傅立葉變換不適用于提取局部時間段或瞬間的頻域特征信息4為了研究

16、信號在局部時間圍的頻域特征,1946年Gabor提出了著名的Gabor變換.其根本思想是,取時間函數(shù)以,=一久一作為窗口函數(shù),用川,-2與待分析函數(shù)/相乘,然后再進(jìn)行傅立葉變換.在Gobor變換的根底上,為了適應(yīng)不同問題的需要,進(jìn)一步開展了多種形式的窗口函數(shù),如矩形窗、漢寧窗、哈明窗等,這一類加窗的傅立葉變換統(tǒng)稱為短時傅立葉變換STFT.STFT從本質(zhì)上講,是用窗函數(shù)截取原始信號的一個待分析段進(jìn)行傅立葉變換,因而可以描述信號在某一局部時間段上的頻率信息.目前,STFT在許多領(lǐng)域獲得了廣泛的應(yīng)用,但由于STFT的定義決定了其窗函數(shù)的大小和形狀均與時間和頻率無關(guān),一旦選定窗口就保持固定不變,不利于

17、分析時變信號.實際上一般的高頻信號持續(xù)時間較短,而低頻信號持續(xù)時間較長,因此我們期望對于高頻信號采用小時間窗,對于低頻信號采用大時間窗進(jìn)行分析.在進(jìn)行信號分析時,這種變時間窗的要求同STFT的固定時窗(窗不隨頻率而變化)的特性是相矛盾的限離散余弦變換(DCT)從本質(zhì)上是一種變換分析方法,要在變換時最大的去除分析信號的相關(guān)性提取其特征,就必須適當(dāng)?shù)臉?gòu)造一組基函數(shù),這組基函數(shù)以某種形式類似于我們所要表示的數(shù)據(jù),甚至具有與數(shù)據(jù)相同的相關(guān)結(jié)構(gòu).在我們?nèi)粘I钪谐S龅降男盘栐诳臻g域和頻域都具有相關(guān)性.在空間上相隔較近的樣值間的相關(guān)性比相隔較遠(yuǎn)的大的多,而在頻域上通常呈帶狀.為了分析和表示這樣的信號,我們

18、需要基函數(shù)在空間域和頻域是局域性的.由于離散余弦函數(shù)的頻域分辨率與時域分辨率成反比,剛好與實際信號長時低頻、短時高頻的特性相吻合,既能精確定位信號的突發(fā)跳變,又能把握信號的整體變化率.由此可見,離散余弦變換是一種比擬理想的進(jìn)行信號處理的數(shù)學(xué)工具圖像壓縮編碼的理論算法.(1)基于DCT的JPEG圖像壓縮編碼理論算法基于DCT編碼的JPEG編碼壓縮過程框圖,如圖2-1所示.圖2-1基于DCT編碼的JPEG壓縮過程簡化圖上圖是基于DCT變換的圖像壓縮編碼的壓縮過程,解壓縮與上圖的過程相反.在編碼過程中,首先將輸入圖像顏色空間轉(zhuǎn)換后分解為8X8大小的數(shù)據(jù)塊,然后用正向二維DCT把每個塊轉(zhuǎn)變成64個DC

19、T系數(shù)值,其中1個數(shù)值是直流(DC)系數(shù),即8X8空域圖像子塊的平均值,其余的63個是交流(AC)系數(shù),接下來對DCT系數(shù)進(jìn)行量化,最后將變換得到的量化的DCT系數(shù)進(jìn)行編碼和傳送,這樣就完成了圖像的壓縮過程.在解碼過程中,形成壓縮后的圖像格式,先對已編碼的量子化的DCT系數(shù)進(jìn)行解碼,然后求逆量化并把DCT系數(shù)轉(zhuǎn)化為8X8樣本像塊(使用二維DCT反變換),最后將操作完成后的塊組合成一個單一的圖像.這樣就完成了圖像的解壓過程.2.2 基于DCT的JPEG圖像壓縮編碼步驟2.2.1 顏色空間的轉(zhuǎn)換和采樣JPEG文件使用的顏色空間為1982年推薦的電視圖像數(shù)字化標(biāo)準(zhǔn)CCIR601(現(xiàn)為ITU-RBT.

20、601).在這個色彩空間中,每個分量、每個像素的電平規(guī)定為255級,用8位代碼表示.JPEG只支持YCbC顏色模式.其中Y代表亮度,CbC代表色度.全彩色圖像RGB模式轉(zhuǎn)換到Y(jié)CbCr模式,用下組公式.7=0.299/?+0.587G+0.114B Cr=(HY)/1.402(2-1)CZ?=(B-r)/1.772其逆變換為:R=y+1.4020 G=y-0.344CZ?-0.714Cr(2-2)B=Y+.772CbJPEG是以8x8的塊為單位來進(jìn)行處理的,由于人眼對亮度Y的敏感度比色度CbCr的敏感度大的多,所以采用縮減取樣的方式,通常采用YUV422取樣,圖2-2所示.圖2-2YUV422

21、取樣示意圖即對于16x16的塊,Y取4個8x8的塊,CbCr各取2個8x8的塊.也有YUV411方式,Y取4個8x8的塊,CbC各取1個8x8的塊.YUV422取樣方式,數(shù)據(jù)減少1/30YUV411取樣方式,數(shù)據(jù)減少1/2O縮減取樣一般采用圖2-3所示方法.苜rh日日日日fh圖2-3壓縮取樣示意圖2.2.2二維離散余弦變換在傅里葉級數(shù)展開式中,如果被展開的函數(shù)是實偶函數(shù),那么,其傅里葉技術(shù)中只包含余弦項,在將其離散化由此可導(dǎo)出余弦變換,或稱之為離散余弦變換(DCT,DiscreteCosineTransform).二維離散余弦正變換公式為2N-lN-1一(,v)=c(u)c(v)ZZy)cos

22、|Na-Oy-()2x+Il7TCOS2N;或口2N(2-3)式中,乂y,/=O,l,N-lo1c(w)=c(v)=(v)F(z/,v)cos!cos:NZ/V/IZ/VV7C(2-4)1式中,x,y,p=0J,N-l.c(i/)=c(v)=?)cos(2-5)4A.ov-oI16Jk167式中,x,y,u=0,1,7.c()=c)=,&U1 其它在MATLAB的圖像處理工具箱中,可以直接調(diào)用dct2和idct2來實現(xiàn)二維離散余弦變換及其反變換.(1) dct2dct2函數(shù)實現(xiàn)圖像的二維離散余弦變換,其語法為:F=dct2(f)運行以下程序:f=imread(cameraman.tif);f=

23、im2double(f);F=dct2(f);subplot(121),imshow(f,);subplot(122),imshow(log(l+20*abs(F),);運行結(jié)果如圖2-4所示.圖2-4圖像顯示及圖像DCT變換后頻譜顯示由運行結(jié)果可知,DCT變換具有能量集中的性質(zhì),數(shù)據(jù)集中在左上角.因此進(jìn)行圖像壓縮時離散余弦變換矩陣可以舍棄右下角的高頻數(shù)據(jù).(2) idct2idct2函數(shù)實現(xiàn)圖像的二維離散余弦逆變換,其語法為:F=idct2(f)在MATLAB圖像處理工具箱中,有一個對圖像進(jìn)行塊操作的函數(shù)blkproc,利用這個函數(shù),可以直接實現(xiàn)圖像一系列8x8子塊的DCT變換.其語法格式為

24、:B=blkproc(A,mn,fun,parameterz,parameter2,)B=blkproc(A,mn,mbordernborderjjun,.)B=blkproc(A,indexed,.)mn是指圖像以m*n為分塊單位,對圖像進(jìn)行處理(如8像素*8像素)Fun:應(yīng)用此函數(shù)對分別對每個m*n分塊的像素進(jìn)行處理parameter!,parameter2:要傳給fun函數(shù)的參數(shù)mbordernborder:對每個m*n塊上下進(jìn)行mborder個單位的擴充,左右進(jìn)行nborder個單位的擴充,擴充的像素值為0,fun函數(shù)對整個擴充后的分塊進(jìn)行處理.如以下程序:I=imreadlamera

25、man.tif);fun=idct2;J=blkproc(l,88,fun);imagesc(J),colormap(hot)運行結(jié)果如圖2-5所示.圖2-5DCT變換后圖像8X8的圖像經(jīng)過DCT變換后,其低頻分量都集中在左上角,高頻分量分布在右下角DCT變換實際上是空間域的低通濾波器.由于該低頻分量包含了圖像的主要信息如亮度,而高頻與之相比,就不那么重要了,所以我們可以忽略高頻分量,從而到達(dá)壓縮的目的.將高頻分量去掉,這就要用到量化,它是產(chǎn)生信息損失的根源.這里的量化操作,就是將某一個值除以量化表中對應(yīng)的值.由于量化表左上角的值較小,右上角的值較大,這樣就起到了保持低頻分量,抑制高頻分量的目

26、的.JPEG使用的顏色是YUV格式.我們提到過,丫分量代表了亮度信息,UV分量代表了色差信息.相比而言,Y分量更重要一些.我們可以對Y采用細(xì)量化,對UV采用粗量化,可進(jìn)一步提升壓縮比.所以上面所說的量化表通常有兩,一是針對Y的,一是針對UV的.2.2.3 DCT系數(shù)的量化量化是對經(jīng)過DCT變換后的頻率系數(shù)進(jìn)行量化,其目的是減小非“0系數(shù)的幅度以及增加“0值系數(shù)的數(shù)目,它是圖像質(zhì)量下降的最主要原因.對于基于DCT的JPEG圖像壓縮編碼算法使用如圖2-6所示的均勻量化器進(jìn)行量化,量化步距是根據(jù)系數(shù)所在的位置和每種顏色分量的色調(diào)值來確定.由于人眼對亮度信號比對色差信號更敏感,因此使用了表2-1所示的

27、種量化表.止匕外,由于人眼對低頻分量的圖像比對高頻分量的圖像更敏感,因此表中的左上角的量化步距要比右下角的量化步距小亮度和色度由于代表的圖像的信息量不同,亮度代表了圖像的低頻分量,色度代表了圖像的高頻分量,要分別對亮度和色度進(jìn)行量化,所以量化表也是不同的.JPEG壓縮色度和亮度量化表如表2-1所示.表2-1JPEG壓縮色度和亮度量化表亮度量化表色度量化表16111016244051611718244799999999121214192658605518212666999999991413162440576956242656999999999914172229518780624766999999

28、9999991822375668109103779999999999999999243555648110411392999999999999999949647887103121120101999999999999999979929598112100103999999999999999999量化會產(chǎn)生誤差,上圖是綜合大量的圖像測試的實驗結(jié)果,對于大局部圖像都有很好的結(jié)果.表中可以看出,高頻局部對應(yīng)的量化值大,目的就是將高頻局部編程接近于0,以便以后處理.JPEG可以在壓縮比和圖像質(zhì)量間作取舍.方法就是改變量化值.如果量化值放大一倍,那么有更多的系數(shù)量化為0,提升了壓縮比.2.2.4 量化系數(shù)的編

29、排經(jīng)過DCT變換后,低頻分量集中在左上角,其中F(0,0)(即第一行第一列元素)代表了直流(DC)系數(shù),即8x8子塊的平均值,要對它單獨編碼.由于兩個相鄰的8x8子塊的DC系數(shù)相差很小,所以對它們采用差分編碼DPCM,可以提升壓縮比,也就是說對相鄰的子塊DC系數(shù)的差值進(jìn)行編碼.8x8的其它63個元素是交流(AC)系數(shù),采用行程編碼呢.所以量化后的系數(shù)要重新編排,目的是為了增加連續(xù)的“0系數(shù)的個數(shù),就是“0的游程長度,方法是根據(jù)Z字形的式樣編排.DCT變換后低頻分量多呈圓形輻射狀向高頻率衰減,因此可以看成按Z字形衰減.因此,量化系數(shù)按Z字形掃描讀數(shù),這樣就把一個8x8的矩陣變成一個1x64的矢量

30、,頻率較低的系數(shù)放在矢量的頂部.量化后的DCT系數(shù)的編排如圖2-7所示.DC值A(chǔ)C系數(shù)開始圖2-7量化DCT系數(shù)的編排量化后的DCT系數(shù)的序號如表2-2所示.表2-2量化DCT系數(shù)的序號01561415272824713162629423812172530414391118243140445310192332394552542022333846515560213437475056596135364849575862632.2.5 DC系數(shù)的編碼8x8子塊的64個變換系數(shù)經(jīng)量化后,按直流系數(shù)DC和交流系數(shù)AC分成兩類處理.坐標(biāo)u二v=0的直流系數(shù)DC實質(zhì)上就是空域圖像中64個像素的平均值.圖像塊

31、經(jīng)過DCT變換之后得到的DC直流系數(shù)有兩個特點,一是系數(shù)的數(shù)值比擬大,二是相鄰8x8圖像塊的DC系數(shù)值變化不大.根據(jù)這個特點,JPEG算法使用了差分脈沖調(diào)制編碼技術(shù).差分脈沖編碼調(diào)制(DPCM,DifferentialPulseCodeModulation),是一種對模擬信號的編碼模式,先根據(jù)前一個抽樣值計算出一個預(yù)測值,再取當(dāng)前抽樣值和預(yù)測值之差作為編碼用.此差值稱為預(yù)測誤差.抽樣值和預(yù)測值非常接近(由于相關(guān)性強),預(yù)測誤差的可能取值圍比抽樣值變化圍小.所以可用少幾位編碼比特來對預(yù)測誤差編碼,從而降低其比特率.這是利用減小冗余度的方法,降低了編碼比特率.因此,對DC系數(shù)編碼進(jìn)行差分脈沖編碼就

32、是對相鄰圖像塊之間量化DC系數(shù)的差值(Delta)進(jìn)行編碼,即對相鄰塊之間的DC系數(shù)的差值DIFF=DC-DCi編碼.DC采用差值脈沖編碼的主要原因是由于在連續(xù)色調(diào)的圖像中,其差值多半比原值小,對差值進(jìn)行編碼所需的位數(shù),會比對原值進(jìn)行編碼所需的位數(shù)少許多.例如差值為5,它的二進(jìn)制表示值為101,如果差值為-5,那么先改為正整數(shù)5,再將其二進(jìn)制轉(zhuǎn)換成1的補數(shù)即可.所謂1的補數(shù),就是將每個Bit假設(shè)值為0,便改成1;Bit為1,那么變成0.差值5應(yīng)保存的位數(shù)為3,列出差值所應(yīng)保存的Bit數(shù)與差值容的對照.在差值前端另外參加一些差值的霍夫曼碼值,例如亮度差值為5(101)的位數(shù)為3,那么霍夫曼碼值應(yīng)

33、該是100,兩者連接在一起即為100101.2.2.6 AC系數(shù)的編碼DCT變換所得系數(shù)除直流系數(shù)之外的其余63個系數(shù)稱為交流系數(shù)(AC系數(shù)).量化AC系數(shù)的特點是lx64矢量中包含有許多“0系數(shù),并且許多“0是連續(xù)的,因此使用非常簡單和直觀的游程長度編碼(RLE)對它們進(jìn)行編碼.所謂行程編碼(Run-LengthEncoding)就是指僅存儲一個像素值以及具有相同顏色的像素數(shù)目的圖像數(shù)據(jù)編碼方式,或稱游程編碼,常用RLE(Run-LengthEncoding)表示.該壓縮編碼技術(shù)相當(dāng)直觀和經(jīng)濟,運算也相當(dāng)簡單,因此解壓縮速度很快.RLE壓縮編碼尤其適用于計算機生成的圖形圖像,對減少存儲容量很

34、有效果皿.63個AC系數(shù)采用行程編碼的方式進(jìn)行編碼的格式如圖2-8所示.也即在AC01到AC63中,找出每一個非零的AC值,將其表示成(NN/SS)VV的形式,其中:NN表示該AC值前的0的個數(shù).而SS、VV與DC的定義一樣.如果連續(xù)的非.超過15個時,增加一個擴展字節(jié):(15/0)表示連續(xù)16個0.另外假設(shè)有一串0延伸到AC63,一建用(0/0)表示結(jié)束.第一字節(jié)第二字節(jié)7654321076543210VY兩個非零值下一個非零下一個非零系數(shù)的實際值之間的連續(xù)值所占的比零的個數(shù)特數(shù)圖2-8AC編碼格式對于AC系數(shù),有兩個符號.符號1為行程和尺寸,即上面的(RunLength,Size).(0,

35、0)和(15,0)是兩個比擬特殊的情況.(0,0)表示塊結(jié)束標(biāo)志(EOB),(15,0)表示ZRL,當(dāng)行程長度超過15時,用增加ZRL的個數(shù)來解決,所以最多有三個ZRL(3xl6+15=63)o符號2為幅度值(Amplitude).對于DC系數(shù),也有兩個符號.符號1為尺寸(Size);符號2為幅度值(Amplitude)o對于AC系數(shù),符號1和符號2分別進(jìn)行編碼.零行程長度超過15個時,有一個符號(15,0),塊結(jié)束時只有一個符號(0,0)o對符號1進(jìn)行Huffman編碼(亮度,色差的Huffman碼表不同).對符號2進(jìn)行變長整數(shù)VLI編碼.舉例來說:Size=6時,Amplitude的圍是-

36、63-32,以及3263,對絕對值相同,符號相反的碼字之間為反碼關(guān)系.所以AC系數(shù)為32的碼字為100000,33的碼字為100001,-32的碼字為011111,-33的碼字為011110.符號2的碼字緊接于符號1的碼字之后.對于DC系數(shù),Y和UV的Huffman碼表也不同.2.2.7組成位數(shù)據(jù)流JPEG編碼的最后一個步驟是把各種標(biāo)記代碼和編碼后的圖像數(shù)據(jù)組成一幀一幀的數(shù)據(jù),這樣做的目的是為了便于傳輸、存儲和譯碼器進(jìn)行譯碼,這樣的組織的數(shù)據(jù)通常稱為JPEG位數(shù)據(jù)流(JPEGbitstream),舉個例子來說明上述過程.下面為8x8的亮度(Y)圖像子塊經(jīng)過量化后的系數(shù),如表2-3所示.表2-3

37、亮度量化后的系數(shù)150-100000-2-1000000-1-100000000000000000000000000000000000000C0000000可見量化后只有左上角的幾個點(低頻分量)不為零,這樣采用行程編碼就會很有效.第一步,嫡編碼的中間格式表示.先看DC系數(shù).假設(shè)前一個8x8子塊DC系數(shù)的量化值為12,那么本塊DC系數(shù)與它的差為3,根據(jù)下表表2-4DC系數(shù)表SizeAmplitude001-1,12-3,-2233一7-4,474-15-8,8155-31-16,16316-63-32,32637-127-64,641278-255-128,1282559-511-256,25

38、651110-1023512,512102311-2047-1024,10242047查表得Size=2,Amplitude,所以DC中間格式為(3).下面對AC系數(shù)編碼.經(jīng)過Zig-Zag掃描后,遇到的第一個非零系數(shù)為-2,其中遇到零的個數(shù)為1(即RunLength),根據(jù)下面這AC系數(shù)表:表2-5AC系數(shù)表SizeAmplitude1-1,12-3,-2233一7-4,474-15-8,8155-31-16,16316-63-32,32637-127-64,641278-255-128,1282559-511-256,25651110-1023512,5121023查表得Size=20所以

39、RunLength=l,Size=2,Amplitude=3,所以AC中間格式為(1,2)(-2)0其余的點類似,可以求得這個8x8子塊嫡編碼的中間格式為(DC)(2)(3),(1,2)(-2),(0,1)(-1),(0,1)(-1),(0,1)(-1),(2,1)(-1),(EOB)(0,0)第二步,炳編碼.對于:2查DC亮度Huffman表得到11,3經(jīng)過VLI編碼為011;對于(1,2)(-2):(1,2)查AC亮度Huffman表得到11011,-2是2的反碼,為01;對于(0,1)(-1):(0,1)查AC亮度Huffman表得到00,-1是1的反碼,為0;.最后,這一8x8子塊亮度

40、信息壓縮后的數(shù)據(jù)流為11011,1101101,000,000,000,111000,1010.總共31比特,其壓縮比是64x8/31=16.5,大約每個象素用半個比特.以上是圖像壓縮編碼的整個過程.從上面的例子可以看出,壓縮比和圖像質(zhì)量是呈反比的,以下是壓縮效率與圖像質(zhì)量之間的大致關(guān)系,可以根據(jù)需要,選擇適宜的壓縮比.壓縮比和圖像質(zhì)量的關(guān)系如表2-6所示.表2-6壓縮比與圖像質(zhì)量的關(guān)系壓縮效率(單位:bits/pixel)圖像質(zhì)量0.25-0.50中好,可滿足某些應(yīng)用0.50-075好很好,滿足多數(shù)應(yīng)用0.751.5極好,滿足大多數(shù)應(yīng)用1.52.0與原始圖像幾乎一樣2.2.8DCT變換在圖像

41、壓縮中的應(yīng)用JPEG格式是目前網(wǎng)絡(luò)上最流行的圖像格式,是可以把文件壓縮到最小的格式,在Photoshop軟件中以JPEG格式儲存時,提供11級壓縮級另八以010級表示.其中.級壓縮比最高,圖像品質(zhì)最差.即使采用細(xì)節(jié)幾乎無損的10級質(zhì)量保存時,壓縮比也可達(dá)5:lo以BMP格式保存時得到4.28MB圖像文件,在采用JPG格式保存時,其文件僅為178KB,壓縮比到達(dá)24:1.經(jīng)過屢次比擬,采用第8級壓縮為存儲空間與圖像質(zhì)量兼得的最正確比例.JPEG格式的應(yīng)用非常廣泛,特別是在網(wǎng)絡(luò)和光盤讀物上,都能找到它的身影.目前各類瀏覽器均支持JPEG這種圖像格式,由于JPEG格式的文件尺寸較小,下載速度快四.2

42、.3JPEG圖像壓縮MATLAB仿真實現(xiàn)具體代碼%JPEGdemo.m%組員:池國錦朱巖黃曉世寧%本次我們采用的是JPEG標(biāo)準(zhǔn)中的順序編碼,也叫JPEG算法.%其中只考慮灰度圖片%局部代碼我們參考了:?數(shù)字圖像處理及motlob實現(xiàn)第二版?一杰?motlob數(shù)字圖像處理實戰(zhàn)?一小川?數(shù)字圖像處理與分析根底-motlQb實現(xiàn)?-孔明博客hesays-?jpeg圖像編碼解碼?百度文庫-?基于matlab的圖像編解碼技術(shù)?%其實現(xiàn)主要有一下4個步驟:%1分塊%2離散余弦變換DCT變換%3量化%4哈弗曼編碼%a直流分量的編碼過程一?差分編碼:對當(dāng)前快的直流分量與上一塊的直流分量之差進(jìn)行編碼;%b交流分

43、量的編碼過程一?除了和直流分量編碼一樣的話,還采用將連續(xù)為零的系數(shù)長度及其組合號結(jié)合后再進(jìn)行哈弗曼編碼的方法.;clearallcic%LoaddatadispfEnter.?dispCO-加載256x256的圖片門dispCl-使用文本輸入8*8的矩陣chos=input輸入你的選擇0/1:;ifisemptychosrchos=0;returnzend%默認(rèn)選擇,假設(shè)為空就默認(rèn)為OJood64x64;ifchos=Ozloadlena.mat;%加載妮娜的圖像%在數(shù)字圖像處理中,Len.Lenna是一被廣泛使用的標(biāo)準(zhǔn)圖片,%特別在圖像壓縮的算法研究中f二X;imshow(mat2gray(

44、f)whos;clearxelse%f為文本輸入的8*8矩陣.f=139144149153155155155155144151153156159156156156150155160163158156156156159161162160160159159159159160161161161161162162161162162161end%echoon162162155155155161160157157157163162157157157161163158158158;%圖像的預(yù)處理是將每個像素灰度值減去128,%圖像數(shù)據(jù)值必須減去128,是由于DCT轉(zhuǎn)換公式所接受的數(shù)字圍是在-128到+127

45、之間.ifchos二二0,f二f-128;elseifchos=U=f-128zend%break;drawnowmtnf=size(f);%返回矩陣的行列mb=mf/8;nb=nf/8;%計算f分塊后的塊數(shù)%計算每個8x8子塊的離散DCT系數(shù)ifchos=0/%blkproc()函數(shù)的功能:對圖像進(jìn)行分塊的det處理Ff=blkproc(t88;dct);%對f的每個子塊的列進(jìn)行DCT變換Ff=blkproc(Ffz8SJ/dct);%對f的每個子塊的行進(jìn)行DCT變換Ff=round(Ff);%對矩陣Ff中每個元素朝最近的方向取整數(shù)局部elseifchos=bFf=blkproc(fJ88/dct)zFf=blkproc(Ff,J88,det).Ff=round(Ff)zend%break;%按比例量化%jpeg亮度量化表Q=16111016244051615514131624405769561417222951878062182237562435556468109103811041137792121214192658604964788710312112010172929598

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論