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

下載本文檔

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

文檔簡介

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

2、縮方法簡單、方便,既能保證有較高的壓縮比,又能保證有較好的圖像質(zhì)量,應(yīng)用MATLAB仿真出來的結(jié)果較好的反響了其編碼算法原理。關(guān)鍵詞JPEG圖像壓縮;DCT;MATLAB;圖像處理工具箱. z-. z- 目 錄. z-摘要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 顏色

3、空間的轉(zhuǎn)換和采樣82.2.2 二維離散余弦變換92.2.3 DCT系數(shù)的量化122.2.4 量化系數(shù)的編排132.2.5 DC系數(shù)的編碼142.2.6 AC系數(shù)的編碼152.2.7 組成位數(shù)據(jù)流162.2.8 DCT變換在圖像壓縮中的應(yīng)用192.3代碼實現(xiàn)錯誤!未定義書簽。. z-第1章 緒論1.1 課題背景隨著信息技術(shù)的開展,圖像信息被廣泛應(yīng)用于多媒體通信和計算機系統(tǒng)中,但是圖像數(shù)據(jù)的一個顯著特點就是信息量大。具有龐大的數(shù)據(jù)量,如果不經(jīng)過壓縮,不僅超出了計算機的存儲和處理能力,而且在現(xiàn)有的通信信道的傳輸速率下,是無法完成大量多媒體信息實時傳輸?shù)?因此,為了更有效的存儲、處理和傳輸這些圖像數(shù)據(jù)

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

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

6、計算機存儲圖像時還得把一個個像素信息存入,這就形成冗余。視覺冗余:視覺系統(tǒng)對于圖像場的注意是非均勻和非線性的,視覺系統(tǒng)不是對圖像的任何變化都能感知。所謂的圖像壓縮編碼技術(shù)就是對要處理的圖像數(shù)據(jù)按一定的規(guī)則進展變換和組合, 從而到達以盡可能少的數(shù)據(jù)流(代碼)來表示盡可能多的數(shù)據(jù)信息。在眾多的圖像壓縮編碼標準中,JPEG(Joint Photographic E*perts Group)格式是一種稱為聯(lián)合圖像專家組的圖像壓縮格式,它適用于不同類型、不同分辨率的彩色和黑白靜止圖像2。在JPEG圖像壓縮算法中,一種是以離散余弦變換(DCT,Discrete Cosine Transform)為根底的有

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

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

9、存儲空間。在實驗中,先將輸入的原始lena圖像分為8*8塊,然后再對每個塊進展二維DCT變換。MATLAB圖像處理上具箱中提供的二維DCT變換及DCT反變換函數(shù)如下。dct2實現(xiàn)圖像的二維離散余弦變換。其語法格式為:(1)B=dct2(A) 返回圖像A的二維離散余弦變換值,其大小與A一樣且各元素為離散余弦變換的系數(shù)BK1,k2)。(2)B=dct2(A,in,n)或B=dct2(A,m,n) 如果m和n比圖像A大,在對圖像進展二維離散余弦變換之前,先將圖像A補零至m*n如果m和n比圖像A小。則進展變換之前,將圖像A剪切。idct2可以實現(xiàn)圖像的二維離散余弦反變換,其語法格式為:B=idct2(

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

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

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

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

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

15、利用信號在變換域中*些特征趨于集中的特點來提取其特征從而進展分析。自1822年傅立葉(Fourier)發(fā)表“熱傳導(dǎo)解析理論以來,傅立葉變換一直是信號處理領(lǐng)域中應(yīng)用最廣泛、效果最好的一種分析手段。但傅立葉變換只是一種純頻域的分析方法,它在頻域的定位性是完全準確的(即頻域分辨率最高),而在時域無任何定位性(或分辯能力),也即傅立葉變換所反映的是整個信號全部時間下的整體頻域特征,而不能提供任何局部時間段上的頻率信息。事實上,在我們生活中的常見信號通常都具有非平穩(wěn)的性質(zhì),即其頻域性質(zhì)都是隨時間而變化的。對這一類信號用傅立葉變換進展分析,雖然可以知道信號所包含有哪些頻率信息,但不能知道這些頻率信息具體出

16、現(xiàn)在哪個時間段上,因此不能提供關(guān)于信號完整的信息??梢?,傅立葉變換不適用于提取局部時間段(或瞬間)的頻域特征信息4。為了研究信號在局部時間圍的頻域特征,1946年Gabor提出了著名的Gabor變換。其根本思想是,取時間函數(shù)作為窗口函數(shù),用與待分析函數(shù)相乘,然后再進展傅立葉變換。在Gabor變換的根底上,為了適應(yīng)不同問題的需要,進一步開展了多種形式的窗口函數(shù),如矩形窗、漢寧窗、哈明窗等,這一類加窗的傅立葉變換統(tǒng)稱為短時傅立葉變換(STFT)。STFT從本質(zhì)上講,是用窗函數(shù)截取原始信號的一個待分析段進展傅立葉變換,因而可以描述信號在*一局部時間段上的頻率信息。目前,STFT在許多領(lǐng)域獲得了廣泛的

17、應(yīng)用,但由于STFT的定義決定了其窗函數(shù)的大小和形狀均與時間和頻率無關(guān),一旦選定窗口就保持固定不變,不利于分析時變信號。實際上一般的高頻信號持續(xù)時間較短,而低頻信號持續(xù)時間較長,因此我們期望對于高頻信號采用小時間窗,對于低頻信號采用大時間窗進展分析。在進展信號分析時,這種變時間窗的要求同STFT的固定時窗(窗不隨頻率而變化)的特性是相矛盾的5。離散余弦變換(DCT)從本質(zhì)上是一種變換分析方法,要在變換時最大的去除分析信號的相關(guān)性提取其特征,就必須適當?shù)臉?gòu)造一組基函數(shù),這組基函數(shù)以*種形式類似于我們所要表示的數(shù)據(jù),甚至具有與數(shù)據(jù)一樣的相關(guān)構(gòu)造。在我們?nèi)粘I钪谐S龅降男盘栐诳臻g域和頻域都具有相關(guān)

18、性。在空間上相隔較近的樣值間的相關(guān)性比相隔較遠的大的多,而在頻域上通常呈帶狀。為了分析和表示這樣的信號,我們需要基函數(shù)在空間域和頻域是局域性的。由于離散余弦函數(shù)的頻域分辨率與時域分辨率成反比,剛好與實際信號長時低頻、短時高頻的特性相吻合,既能準確定位信號的突發(fā)跳變,又能把握信號的整體變化率。由此可見,離散余弦變換是一種比較理想的進展信號處理的數(shù)學(xué)工具6。圖像壓縮編碼的理論算法。(1)基于DCT的JPEG圖像壓縮編碼理論算法 基于DCT編碼的JPEG編碼壓縮過程框圖,如圖2-1所示。壓縮數(shù)據(jù)原始圖像數(shù)據(jù)分成8*8的小塊量化器DCT變換熵編碼器碼表量化表圖2-1 基于DCT編碼的JPEG壓縮過程簡

19、化圖上圖是基于DCT變換的圖像壓縮編碼的壓縮過程,解壓縮與上圖的過程相反。在編碼過程中,首先將輸入圖像顏色空間轉(zhuǎn)換后分解為8×8大小的數(shù)據(jù)塊,然后用正向二維DCT把每個塊轉(zhuǎn)變成64個DCT系數(shù)值,其中1個數(shù)值是直流(DC)系數(shù),即8×8空域圖像子塊的平均值,其余的63個是交流(AC)系數(shù),接下來對DCT系數(shù)進展量化,最后將變換得到的量化的DCT系數(shù)進展編碼和傳送,這樣就完成了圖像的壓縮過程。在解碼過程中,形成壓縮后的圖像格式,先對已編碼的量子化的DCT系數(shù)進展解碼,然后求逆量化并把DCT系數(shù)轉(zhuǎn)化為8×8樣本像塊(使用二維DCT反變換),最后將操作完成后的塊組合成一

20、個單一的圖像。這樣就完成了圖像的解壓過程。2.2 基于DCT的JPEG圖像壓縮編碼步驟 顏色空間的轉(zhuǎn)換和采樣JPEG文件使用的顏色空間為1982年推薦的電視圖像數(shù)字化標準CCIR 601(現(xiàn)為ITU-RB T.601)。在這個色彩空間中,每個分量、每個像素的電平規(guī)定為255級,用8位代碼表示。JPEG只支持YCbCr顏色模式。其中Y代表亮度,CbCr代表色度。全彩色圖像RGB模式轉(zhuǎn)換到Y(jié)CbCr模式,用下組公式。(2-1)其逆變換為:(2-2)JPEG是以8×8的塊為單位來進展處理的,由于人眼對亮度Y的敏感度比色度CbCr的敏感度大的多,所以采用縮減取樣的方式,通常采用YUV422取

21、樣,圖2-2所示。圖2-2YUV422取樣示意圖即對于16×16的塊,Y取4個8×8的塊,CbCr各取2個8×8的塊。也有YUV411方式,Y取4個8×8的塊,CbCr各取1個8×8的塊。YUV422取樣方式,數(shù)據(jù)減少1/3。YUV411取樣方式,數(shù)據(jù)減少1/2??s減取樣一般采用圖2-3所示方法。abcdeb'd'圖2-3 壓縮取樣示意圖 二維離散余弦變換 在傅里葉級數(shù)展開式中,如果被展開的函數(shù)是實偶函數(shù),則,其傅里葉技術(shù)中只包含余弦項,在將其離散化由此可導(dǎo)出余弦變換,或稱之為離散余弦變換(DCT,Discrete Cosine

22、 Transform)7。二維離散余弦正變換公式為(2-3)式中,。二維離散余弦逆變換公式為(2-4)式中,。JPEG采用的是8×8大小的子塊的二維離散余弦變換。在編碼器的輸入端,把原始圖像順序地分割成一系列8×8的子塊,子塊的數(shù)值在-128到127之間。采用余弦變換獲得64個變換系數(shù)8。變換公式,如式(2-5)所示。(2-5)式中,。在MATLAB的圖像處理工具箱中,可以直接調(diào)用dct2和idct2來實現(xiàn)二維離散余弦變換及其反變換。(1) dct2dct2函數(shù)實現(xiàn)圖像的二維離散余弦變換,其語法為:F=dct2(f)運行以下程序:f=imread('camerama

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

24、215;8子塊的DCT變換。其語法格式為:B = blkproc(A,m n,fun, parameter1,,parameter2, .)B = blkproc(A,m n,mborder nborder,fun,.)B = blkproc(A,'inde*ed',.)m n是指圖像以m*n為分塊單位,對圖像進展處理(如8像素*8像素)Fun:應(yīng)用此函數(shù)對分別對每個m*n分塊的像素進展處理parameter1, parameter2:要傳給fun函數(shù)的參數(shù)mborder nborder:對每個m*n塊上下進展mborder個單位的擴大,左右進展nborder個單位的擴大,擴大

25、的像素值為0,fun函數(shù)對整個擴大后的分塊進展處理。如以下程序:I = imread('cameraman.tif'); fun = idct2;J = blkproc(I,8 8,fun);imagesc(J), colormap(hot)運行結(jié)果如圖2-5所示。圖2-5DCT變換后圖像8×8的圖像經(jīng)過DCT變換后,其低頻分量都集中在左上角,高頻分量分布在右下角(DCT變換實際上是空間域的低通濾波器)。由于該低頻分量包含了圖像的主要信息(如亮度),而高頻與之相比,就不則重要了,所以我們可以忽略高頻分量,從而到達壓縮的目的。將高頻分量去掉,這就要用到量化,它是產(chǎn)生信息

26、損失的根源。這里的量化操作,就是將*一個值除以量化表中對應(yīng)的值。由于量化表左上角的值較小,右上角的值較大,這樣就起到了保持低頻分量,抑制高頻分量的目的。JPEG使用的顏色是YUV格式。我們提到過,Y分量代表了亮度信息,UV分量代表了色差信息。相比而言,Y分量更重要一些。我們可以對Y采用細量化,對UV采用粗量化,可進一步提高壓縮比。所以上面所說的量化表通常有兩,一是針對Y的,一是針對UV的。DCT系數(shù)的量化量化是對經(jīng)過DCT變換后的頻率系數(shù)進展量化,其目的是減小非“0系數(shù)的幅度以及增加“0值系數(shù)的數(shù)目,它是圖像質(zhì)量下降的最主要原因。對于基于DCT的JPEG圖像壓縮編碼算法使用如圖2-6所示的均勻

27、量化器進展量化,量化步距是按照系數(shù)所在的位置和每種顏色分量的色調(diào)值來確定。因為人眼對亮度信號比對色差信號更敏感,因此使用了表2-1所示的種量化表。此外,由于人眼對低頻分量的圖像比對高頻分量的圖像更敏感,因此表中的左上角的量化步距要比右下角的量化步距小9。DCT系數(shù)輸入量化系數(shù)輸出圖2-6均勻量化器亮度和色度因為代表的圖像的信息量不同,亮度代表了圖像的低頻分量,色度代表了圖像的高頻分量,要分別對亮度和色度進展量化,所以量化表也是不同的。JPEG壓縮色度和亮度量化表如表2-1所示。表2-1 JPEG壓縮色度和亮度量化表亮度量化表色度量化表161110162440516117182447999999

28、991212141926586055182126669999999914131624405769562426569999999999141722295187806247669999999999991822375668109103779999999999999999243555648110411392999999999999999949647887103121120101999999999999999979929598112100103999999999999999999量化會產(chǎn)生誤差,上圖是綜合大量的圖像測試的實驗結(jié)果,對于大局部圖像都有很好的結(jié)果。表中可以看出,高頻局部對應(yīng)的量化值大,目的就

29、是將高頻局部編程接近于0,以便以后處理。JPEG可以在壓縮比和圖像質(zhì)量間作取舍。方法就是改變量化值。如果量化值放大一倍,則有更多的系數(shù)量化為0,提高了壓縮比。 量化系數(shù)的編排經(jīng)過DCT變換后,低頻分量集中在左上角,其中F(0,0)(即第一行第一列元素)代表了直流(DC)系數(shù),即8×8子塊的平均值,要對它單獨編碼。由于兩個相鄰的8×8子塊的DC系數(shù)相差很小,所以對它們采用差分編碼DPCM,可以提高壓縮比,也就是說對相鄰的子塊DC系數(shù)的差值進展編碼。8×8的其它63個元素是交流(AC)系數(shù),采用行程編碼10。所以量化后的系數(shù)要重新編排,目的是為了增加連續(xù)的“0系數(shù)的個

30、數(shù),就是“0的游程長度,方法是按照Z字形的式樣編排。DCT變換后低頻分量多呈圓形輻射狀向高頻率衰減,因此可以看成按Z字形衰減。因此,量化系數(shù)按Z字形掃描讀數(shù),這樣就把一個8×8的矩陣變成一個1×64的矢量,頻率較低的系數(shù)放在矢量的頂部。量化后的DCT系數(shù)的編排如圖2-7所示。圖2-7 量化DCT系數(shù)的編排量化后的DCT系數(shù)的序號如表2-2所示。表2-2 量化DCT系數(shù)的序號015614152728247131626294238121725304143911182431404453101923323945525420223338465155602134374750565961

31、3536484957586263DC系數(shù)的編碼8×8子塊的64個變換系數(shù)經(jīng)量化后,按直流系數(shù)DC和交流系數(shù)AC分成兩類處理。坐標u=v=0的直流系數(shù)DC實質(zhì)上就是空域圖像中64個像素的平均值。圖像塊經(jīng)過DCT變換之后得到的DC直流系數(shù)有兩個特點,一是系數(shù)的數(shù)值比較大,二是相鄰8×8圖像塊的DC系數(shù)值變化不大。根據(jù)這個特點,JPEG算法使用了差分脈沖調(diào)制編碼技術(shù)。差分脈沖編碼調(diào)制(DPCM,Differential Pulse Code Modulation),是一種對模擬信號的編碼模式,先根據(jù)前一個抽樣值計算出一個預(yù)測值,再取當前抽樣值和預(yù)測值之差作為編碼用。此差值稱為預(yù)測

32、誤差。抽樣值和預(yù)測值非常接近(因為相關(guān)性強),預(yù)測誤差的可能取值圍比抽樣值變化圍小。所以可用少幾位編碼比特來對預(yù)測誤差編碼,從而降低其比特率。這是利用減小冗余度的方法,降低了編碼比特率。因此,對DC系數(shù)編碼進展差分脈沖編碼就是對相鄰圖像塊之間量化DC系數(shù)的差值(Delta)進展編碼,即對相鄰塊之間的DC系數(shù)的差值DIFF=DC-DC編碼。DC采用差值脈沖編碼的主要原因是由于在連續(xù)色調(diào)的圖像中,其差值多半比原值小,對差值進展編碼所需的位數(shù),會比對原值進展編碼所需的位數(shù)少許多。例如差值為5,它的二進制表示值為101,如果差值為-5,則先改為正整數(shù)5,再將其二進制轉(zhuǎn)換成1的補數(shù)即可。所謂1的補數(shù),就

33、是將每個Bit假設(shè)值為0,便改成1;Bit為1,則變成0。差值5應(yīng)保存的位數(shù)為3,列出差值所應(yīng)保存的Bit數(shù)與差值容的對照。 在差值前端另外參加一些差值的霍夫曼碼值,例如亮度差值為5(101)的位數(shù)為3,則霍夫曼碼值應(yīng)該是100,兩者連接在一起即為100101。2.2.6 AC系數(shù)的編碼DCT變換所得系數(shù)除直流系數(shù)之外的其余63個系數(shù)稱為交流系數(shù)(AC系數(shù))。量化AC系數(shù)的特點是1× 64矢量中包含有許多“0”系數(shù),并且許多“0”是連續(xù)的,因此使用非常簡單和直觀的游程長度編碼(RLE)對它們進展編碼。所謂行程編碼(Run-Length Encoding)就是指僅存儲一個像素值以及具有

34、一樣顏色的像素數(shù)目的圖像數(shù)據(jù)編碼方式,或稱游程編碼,常用RLE(Run-Length Encoding)表示。該壓縮編碼技術(shù)相當直觀和經(jīng)濟,運算也相當簡單,因此解壓縮速度很快。RLE壓縮編碼尤其適用于計算機生成的圖形圖像,對減少存儲容量很有效果11。 63個AC系數(shù)采用行程編碼的方式進展編碼的格式如圖2-8所示。也即在AC01到AC63中,找出每一個非零的AC值,將其表示成(NN/SS)VV的形式,其中:NN表示該AC值前的0的個數(shù)。而SS、VV與DC的定義一樣。如果連續(xù)的非0超過15個時,增加一個擴展字節(jié):(15/0)表示連續(xù)16個0。另外假設(shè)有一串0延伸到AC63,一律用(0/0)表示完畢

35、。7654321076543210第一字節(jié)第二字節(jié)兩個非零值之間的連續(xù)零的個數(shù)下一個非零值所占的比特數(shù)下一個非零系數(shù)的實際值圖2-8 AC編碼格式對于AC系數(shù),有兩個符號。符號1為行程和尺寸,即上面的(RunLength,Size)。(0,0)和(15,0)是兩個比較特殊的情況。(0,0)表示塊完畢標志(EOB),. z- (15,0)表示ZRL,當行程長度超過15時,用增加ZRL的個數(shù)來解決,所以最多有三個ZRL(3×16+15=63)。符號2為幅度值(Amplitude)。對于DC系數(shù),也有兩個符號。符號1為尺寸(Size);符號2為幅度值(Amplitude)。對于AC系數(shù),符

36、號1和符號2分別進展編碼。零行程長度超過15個時,有一個符號(15,0),塊完畢時只有一個符號(0,0)。對符號1進展Huffman編碼(亮度,色差的Huffman碼表不同)。對符號2進展變長整數(shù)VLI編碼。舉例來說:Size=6時,Amplitude的圍是-63-32,以及3263,對絕對值一樣,符號相反的碼字之間為反碼關(guān)系。所以AC系數(shù)為32的碼字為100000,33的碼字為100001,-32的碼字為011111,-33的碼字為011110。符號2的碼字緊接于符號1的碼字之后。對于DC系數(shù),Y和UV的Huffman碼表也不同。 組成位數(shù)據(jù)流JPEG編碼的最后一個步驟是把各種標記代碼和編碼

37、后的圖像數(shù)據(jù)組成一幀一幀的數(shù)據(jù),這樣做的目的是為了便于傳輸、存儲和譯碼器進展譯碼,這樣的組織的數(shù)據(jù)通常稱為JPEG位數(shù)據(jù)流(JPEGbitstream)12。舉個例子來說明上述過程。下面為8×8的亮度(Y)圖像子塊經(jīng)過量化后的系數(shù),如表2-3所示。表2-3 亮度量化后的系數(shù)150-100000-2-1000000-1-10000000000000000000000000000000000000000000000. z-可見量化后只有左上角的幾個點(低頻分量)不為零,這樣采用行程編碼就會很有效。第一步,熵編碼的中間格式表示。先看DC系數(shù)。假設(shè)前一個8×8子塊DC系數(shù)的量化值為

38、12,則本塊DC系數(shù)與它的差為3,根據(jù)下表表2-4 DC系數(shù)表SizeAmplitude0011,123,-2,2,337-4,47415-8,815531-16,1631663-32,32637127-64,641278255-128,1282559511-256,256511101023512,5121023112047-1024,10242047查表得Size=2,Amplitude=3,所以DC中間格式為(2)(3)。下面對AC系數(shù)編碼。經(jīng)過Zig-Zag掃描后,遇到的第一個非零系數(shù)為-2,其中遇到零的個數(shù)為1(即RunLength),根據(jù)下面這AC系數(shù)表:表2-5 AC系數(shù)表 Siz

39、eAmplitude11,123,-2,2,337-4,47415-8,815531-16,1631663-32,32637127-64,641278255-128,1282559511-256,256511101023512,5121023查表得Size=2。所以RunLength=1,Size=2,Amplitude=3,所以AC中間格式為(1,2)(-2)。其余的點類似,可以求得這個8×8子塊熵編碼的中間格式為(DC)(2)(3),(1,2)(-2),(0,1)(-1),(0,1)(-1),(0,1)(-1),(2,1)(-1),(EOB)(0,0)第二步,熵編碼。對于(2)(

40、3):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;.最后,這一8×8子塊亮度信息壓縮后的數(shù)據(jù)流為11011,1101101,000,000, 000,111000,1010。總共31比特,其壓縮比是64×8/31=16.5,大約每個象素用半個比特。以上是圖像壓縮編碼的整個過程。從上面的例子可以看出,壓縮比和圖像質(zhì)量是呈反比的,以下是壓縮效率與圖像質(zhì)量之間的大致關(guān)系,

41、可以根據(jù)需要,選擇適宜的壓縮比。壓縮比和圖像質(zhì)量的關(guān)系如表2-6所示。表2-6 壓縮比與圖像質(zhì)量的關(guān)系壓縮效率(單位:bits/pi*el)圖像質(zhì)量0.250.50中好,可滿足*些應(yīng)用0.500.75好很好,滿足多數(shù)應(yīng)用0.751.5極好,滿足大多數(shù)應(yīng)用1.52.0與原始圖像幾乎一樣 DCT變換在圖像壓縮中的應(yīng)用JPEG格式是目前網(wǎng)絡(luò)上最流行的圖像格式,是可以把文件壓縮到最小的格式,在 Photoshop軟件中以JPEG格式儲存時,提供11級壓縮級別,以010級表示。其中0級壓縮比最高,圖像品質(zhì)最差。即使采用細節(jié)幾乎無損的10 級質(zhì)量保存時,壓縮比也可達 5:1。以BMP格式保存時得到428M

42、B圖像文件,在采用JPG格式保存時,其文件僅為178KB,壓縮比到達24:1。經(jīng)過屢次比較,采用第8級壓縮為存儲空間與圖像質(zhì)量兼得的最正確比例。JPEG格式的應(yīng)用非常廣泛,特別是在網(wǎng)絡(luò)和光盤讀物上,都能找到它的身影。目前各類瀏覽器均支持JPEG這種圖像格式,因為JPEG格式的文件尺寸較小,下載速度快13。. z-2.3 JPEG圖像壓縮MATLAB仿真實現(xiàn)具體代碼% JPEGdemo.m%組員:池國錕 朱巖 黃曉 世寧%本次我們采用的是JPEG標準中的順序編碼,也叫JPEG算法。%其中只考慮灰度圖片%局部代碼我們參考了:?數(shù)字圖像處理及matlab實現(xiàn)第二版?-杰?matlab數(shù)字圖像處理實戰(zhàn)

43、?-小川?數(shù)字圖像處理與分析根底-matlab實現(xiàn)?-孔明 博客hesays-?jpeg圖像編碼解碼? 百度文庫-?基于matlab的圖像編解碼技術(shù)?%其實現(xiàn)主要有一下4個步驟:%1分塊%2離散余弦變換DCT變換%3量化%4哈弗曼編碼% a)直流分量的編碼過程-?差分編碼:對當前快的直流分量與上一塊的直流分量之差進展編碼;% b)交流分量的編碼過程-?除了和直流分量編碼一樣的話,還采用將連續(xù)為零的系數(shù)長度及其組合號結(jié)合后再進展哈弗曼編碼的方法。;clear allclc% Load datadisp('Enter .')disp('0 - 加載256 * 256的圖片,

44、 ')disp('1 - 使用文本輸入8*8的矩陣')chos=input('輸入你的選擇 0/1: ');if isempty(chos), chos=0;return, end % 默認選擇,假設(shè)為空就默認為0,load 64 * 64;if chos=0, load lena.mat; %加載妮娜的圖像 %在數(shù)字圖像處理中,LenaLenna是一被廣泛使用的標準圖片, %特別在圖像壓縮的算法研究中 f=*; imshow(mat2gray(f) whos; clear *else % f為文本輸入的8*8矩陣。f=139 144 149 153 1

45、55 155 155 155144 151 153 156 159 156 156 156150 155 160 163 158 156 156 156159 161 162 160 160 159 159 159159 160 161 162 162 155 155 155161 161 161 161 160 157 157 157162 162 161 163 162 157 157 157162 162 161 161 163 158 158 158;end%echo on%圖像的預(yù)處理是將每個像素灰度值減去128,%圖像數(shù)據(jù)值必須減去128,是因為DCT轉(zhuǎn)換公式所承受的數(shù)字圍是在-1

46、28到+127之間。if chos=0, f=f-128; elseif chos=1, f=f-128, end%break;drawnowmf,nf=size(f); %返回矩陣的行列mb=mf/8; nb=nf/8; %計算f分塊后的塊數(shù) %計算每個8×8子塊的離散DCT系數(shù)if chos=0, %blkproc函數(shù)的功能:對圖像進展分塊的dct處理 Ff=blkproc(f,8 8,'dct'); %對f的每個子塊的列進展DCT變換 Ff=blkproc(Ff',8 8,'dct'); % 對f的每個子塊的行進展DCT變換 Ff=rou

47、nd(Ff'); % 對矩陣Ff'中每個元素朝最近的方向取整數(shù)局部elseif chos=1, Ff=blkproc(f,8 8,'dct'), Ff=blkproc(Ff',8 8,'dct'), Ff=round(Ff'),end%break;% 按比例量化%jpeg亮度量化表Q =16 11 10 16 24 40 51 61 12 12 14 19 26 58 60 55 14 13 16 24 40 57 69 56 14 17 22 29 51 87 80 62 18 22 37 56 68 109 103 77 24 35 55 64 81 104 113 92 49 64 78 87 103 121 120 101 72 92 95 98 112 100 103 99;%pause% 現(xiàn)在進展量化取整if chos=0, %將頻率系數(shù)除以量化矩陣的值之后取整,即完成了量化過程 Fq=round(blkproc(Ff,8 8,'divq',Q);elseif chos=1, Fq=round(blkproc(Ff,8 8,'divq',Q),end%pause%echo off%經(jīng)過DCT變換后的矩陣數(shù)據(jù)自然數(shù)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論