【正文】
(6) 基于多小波或小波包變換的圖像壓縮編碼方法是在小波變換領(lǐng)域發(fā)展起來的新方法,它利用多個(gè)小波基對(duì)圖像進(jìn)行分解,相對(duì)單小波變換,這種方法對(duì)紋理較多的圖像,壓縮性。(5)基于內(nèi)容的圖像編碼。(4)小波壓縮算法中公認(rèn)的一個(gè)難題沒有得到良好解決,這就是當(dāng)比特率較低時(shí)出現(xiàn)的邊緣模糊現(xiàn)象,即Gibbs效應(yīng),究其本質(zhì),主要是因?yàn)檫@些算法均在均方誤差(MSE)準(zhǔn)則下工作,而MSE準(zhǔn)則不能很好地刻畫圖像邊緣和平坦區(qū)域的差別,按MSE準(zhǔn)則進(jìn)行優(yōu)化的方法有時(shí)難以達(dá)到良好的視覺效果。圖像的小波變換機(jī)制具有與人眼的信息感知和處理過程十分吻合的特性,但由于人們對(duì)人眼視覺生理特性研究的局限性,小波圖像壓縮編碼還沒有充分利用人眼的視覺特性。如何合理地組織圖像分解后的小波系數(shù),以達(dá)到快的排序速度和用較少的重要圖編碼來表達(dá)原圖像。如何選擇適合具體圖像的小波基,實(shí)現(xiàn)圖像從無損到有損的壓縮,獲得更高的壓縮效果,還有待于進(jìn)一步的研究。利用小波變換進(jìn)行圖像壓縮編碼時(shí),并非所有的小波基都適合對(duì)圖像進(jìn)行分解,選擇不同的小波基對(duì)于圖像壓縮的效果有著直接的影響。通過將原圖像分裂為包含原圖像主要信息的主圖像與包含原圖像細(xì)節(jié)信息的副圖像,然后進(jìn)行壓縮的方法,取得了良好的效果。主要得出的結(jié)論:(1)與傳統(tǒng)的DCT算法相比,運(yùn)用的基于DCT變換矩陣算法,計(jì)算速度較快,有利于圖像壓縮和其他處理。 第二次壓縮后的圖像壓縮前圖像I的大小 Name Size Bytes Class I 600x800x3 1440000 uint8 arrayGrand total is 1440000 elements using 1440000 bytes第二次壓縮后圖像大小為: Name Size Bytes Class ca2 161x211 271768 double arrayGrand total is 33971 elements using 271768 bytes從上面的數(shù)據(jù)可以知道壓縮后的圖像效果是比較理想的. 經(jīng)過兩次壓縮后圖像在存儲(chǔ)時(shí)共占用 271768 bytes內(nèi)存空間, 而原來的圖像I在存儲(chǔ)時(shí)要占用1440000 bytes 內(nèi)存空間, 。壓縮前圖像I的大小 Name Size Bytes Class I 600x800x3 1440000 uint8 arrayGrand total is 1440000 elements using 1440000 bytes第一次壓縮后圖像的大小為: Name Size Bytes Class cal 307x407 999592 double arrayGrand total is 124949 elements using 999592 bytes從上面的數(shù)據(jù)可以知道第一次壓縮后的圖像效果是比較理想的. 經(jīng)過一次壓縮后圖像在存儲(chǔ)時(shí)共占用 999592 bytes內(nèi)存空間, 而原來的圖像I在存儲(chǔ)時(shí)要占用1440000 bytes 內(nèi)存空間, 。通過圖像可以比較得出經(jīng)過一次壓縮后的圖像基本上沒有損失什么信息,再經(jīng)過一次壓縮后可以看到在邊緣部分損失了一些細(xì)節(jié)信息,也就是說,在實(shí)際的應(yīng)用中,可以根據(jù)不同的需求,來決定對(duì)圖像進(jìn)行多層變換,而且作用閾值的方式可能也不會(huì)是將局部細(xì)節(jié)系數(shù)全部清零,而且,作用的閾值可以是方向相關(guān)的,即在三個(gè)不同方向的細(xì)節(jié)系數(shù)上作用不同的閾值。ca239。)。disp(39。第二次壓縮圖像39。axis square。image(ca2)。ca2=*ca2。39。cal39。第一次壓縮后圖像的大小為:39。)。title(39。colormap(map)。axes()。,0)。cal=wcodemat(cal,440,39。39。)。title(39。image(c1)。v1,d1]。,1)。,c,s,39。d1=wrcoef2(39。39。v39。,1)。,c,s,39。h1=wrcoef2(39。39。a39。,c,s,1)。%垂直方向的細(xì)節(jié)系數(shù)cd1=detcoef2(39。v39。,c,s,1)。從分解系數(shù)[c,s]中提取第一層的近似系數(shù)ch1=detcoef2(39。%用小波39。39。)。設(shè)定剛才調(diào)用原始圖像為全局變量I,然后對(duì)圖像進(jìn)行小波變換,代碼如下:[c,s]=wavedec2(I,2,39。在這個(gè)方面,小波分析的就有優(yōu)勢(shì)多了,由于小波分析固有的時(shí)頻特性,可以在時(shí)頻兩個(gè)方向?qū)ο禂?shù)進(jìn)行處理,這樣就可以對(duì)我們感興趣的部分提供不同的壓縮精度。 經(jīng)DCT變換后的圖像,在省去一半系數(shù)的情況下,圖像的效果與原圖像幾乎沒有什么差別,只是在光線等非常細(xì)節(jié)的部分損失了一些細(xì)節(jié)信息。壓縮后的圖像39。image(wcodemat(I2))。%接上例for i=1:256 for j=1:256 if(i+j)256 repf(i,j)=0 end endendper2=norm(repf)/norm(D)per2= I2 = idct2(repf)。)。title(39。 %丟棄部分高頻分量axes()。下面我們看一下左上的1/4塊系數(shù)矩陣所占得能量成分,這里能量用標(biāo)準(zhǔn)差定義。,在頻域中,高亮度的為絕對(duì)值大的系數(shù),能量主要集中在低頻成分中,即圖像的左上角。DCT系數(shù)39。imshow(log(abs(D)))。 (a)選擇圖像 (b)打開的原始圖像 選擇圖像及打開的原始圖像然后對(duì)選取的圖像進(jìn)行DCT系數(shù)的提取,代碼如下:D = dct2(rgb2gray(I))。 figure。fpath=[pathname filename]。Pick an image39。All Files (*.*)39。*.*39。Image Files (*.bmp, *.jpg, *.png, *.jpeg)39。*.jpeg39。*.jpg。 文件及幫助操作的下拉菜單首先調(diào)用原始圖像,從電腦中任意選取一張?jiān)紙D像,這里選的圖像名稱是“”,(a)所示,(b),實(shí)現(xiàn)代碼如下: [filename, pathname] = uigetfile( ... {39。在主窗口中,建立兩個(gè)圖像處理的菜單,通過單擊菜單去調(diào)用一個(gè)新的子窗口,在子窗口中實(shí)現(xiàn)相應(yīng)的操作。時(shí),做全局編碼,即把整個(gè)矩陣中的元素絕對(duì)值最大的元素作為NB,最小的作為1,該函數(shù)返回輸入矩陣X的一個(gè)編碼版本,為非0時(shí),返回X的ABS(X)。時(shí),做列編碼,當(dāng)OPT為39。當(dāng)OPT為39。row39。而appcoef2是求得某一層次的近似系數(shù),程序中用到的是A=appcoef2(C,L,’wname’,N),是用小波‘wname‘從分解系數(shù)[C,L]中提取第N層近似系數(shù);還用到了wcodemat函數(shù),格式為 y=wcodemat(X,NB,OPT,ABSOLl) 。 用于得到某一層次的小波系數(shù)的命令主要有以下幾個(gè):detcoef2是求得某一層次的細(xì)節(jié)系數(shù),其中的一種格式是[H,V,D]=detcoef2‘a(chǎn)ll‘,C,S,N)。),其中N為大于1的正整數(shù)。);而對(duì)應(yīng)的wavedec2的語法格式是[C,S]=wavedec2(X,N,39。dwt2的一種語法格式是[cA,cH,cV,cD]=dwt2(X,39。導(dǎo)入圖片利用wavedec2函數(shù)對(duì)圖像進(jìn)行小波分解,得到分解系數(shù)顯示分解后低頻和高頻信息對(duì)圖像再進(jìn)行一次分解,得到第一次壓縮的信息,并顯示出來利用圖像分解系數(shù),得到第二次壓縮的信息,并顯示壓縮后的圖片 小波變換流程5. 小波變換實(shí)現(xiàn)的函數(shù)dwt2是二維單尺度小波變換,其可以通過指定小波或者分解濾波器進(jìn)行二維單尺度小波分解。,1)。4. 基于小波變換矩陣算法的實(shí)現(xiàn)首先讀取圖像文件,然后利用wavedec2函數(shù)對(duì)圖像進(jìn)行小波分解,采用函數(shù)appcoef函數(shù)從分解系數(shù)中取近似系數(shù),即利用語句cal=appcoef2(c,s,39。在這個(gè)方面,小波分析的就有優(yōu)勢(shì)多了,由于小波分析固有的時(shí)頻特性,我們可以在時(shí)頻兩個(gè)方向?qū)ο禂?shù)進(jìn)行處理,這樣就可以對(duì)我們感興趣的部分提供不同的壓縮精度。傳統(tǒng)的基于離散余弦變換的圖像壓縮算法,其基本思想是在頻域?qū)π盘?hào)進(jìn)行分解,去除信號(hào)點(diǎn)之間的相關(guān)行,并找出重要系數(shù),濾去次要系數(shù),以達(dá)到壓縮的效果,但該方法在處理過程中并不能提供時(shí)域的信息,在比較關(guān)系時(shí)域特性的時(shí)域顯得無能為力。最后,顯示通過丟棄高頻部分細(xì)節(jié)系數(shù)來達(dá)到壓縮后的圖像。步驟1:選取原始圖像并顯示;步驟2:進(jìn)行離散余弦變換,提取離散余弦系數(shù)并顯示結(jié)果;步驟3:去掉部分高頻細(xì)節(jié)后的得到的系數(shù);步驟4:進(jìn)行頻譜逆變換,并顯示變換后的圖像。由于變換矩陣D是實(shí)正交矩陣,為此二維逆離散余弦變換為A=D’*B*D。這種計(jì)算有時(shí)會(huì)比利用函數(shù)dct2更快,特別是計(jì)算大量小的相同尺寸DCT時(shí),矩陣D只需計(jì)算一次,因而速度快。設(shè)A是一個(gè)MN大小的矩陣,則D*A表示A的列向量的一維離散余弦變換,而D*A(D’表示D的轉(zhuǎn)置)表示A的列向量的一維逆離散余弦變換。離散余弦變換的傳統(tǒng)算法是基于FFT的快速算法,這里運(yùn)用一種新的變換方法——基于DCT變換矩陣算法。 離散余弦變換模塊1. 基本原理圖像的二維離散余弦變換(Discrete Cosine Transform)簡(jiǎn)稱DCT變換,是最小均方誤差條件下得出的次最佳正交變換,且已獲得廣泛應(yīng)用,大多數(shù)情況下,DCT用于壓縮圖像,并成為許多圖像編碼國(guó)際標(biāo)準(zhǔn)的核心,JPEC圖像格式的壓縮算法采用的就是DCT變換算法。其一是打開原始圖像,其二是接收用戶輸入的參數(shù),其三是把接收的參數(shù)帶入后臺(tái)進(jìn)行處理,第四是將圖像處理后的結(jié)果顯示到界面上。實(shí)現(xiàn)上編寫程序最主要是對(duì)命令按鈕進(jìn)行編程。程序基本上是先從文本框中接收數(shù)據(jù),然后對(duì)接收的數(shù)據(jù)進(jìn)行處理的。,除了常用的*.jpg、*.gif外,還包括*.bmp 、*.cur、*.hdf、*.ico、*.pbm、*.pcx、*.pgm、*png、*.ppm、*.ras、*.tif、*.tiff、*xwd。在程序設(shè)計(jì)中,對(duì)各處理功能的M文件,其共同之處有以下幾個(gè)方面:,起導(dǎo)航作用。同一個(gè)M文件中又包含若干個(gè)M函數(shù),界面中的每一個(gè)控件及菜單項(xiàng)對(duì)應(yīng)的程序都有放在相應(yīng)的M函數(shù)。利用MATLAB的圖形用戶界面(GUI)來設(shè)計(jì)程序運(yùn)行的界面。整個(gè)系統(tǒng)主要包括以下的功能模塊::能完成離散余弦變換編碼、全局閾值壓縮編碼和離散小波變換編碼的功能;:能完成維納濾波法、自適應(yīng)濾波和均值濾波復(fù)原功能。圖像處理模塊是本系統(tǒng)的核心。本系統(tǒng)處理功能專一,主要可以進(jìn)行圖像以下處理:(1)可以對(duì)圖像進(jìn)行壓縮編碼操作,主要包括離散余弦變換編碼、全局閾值壓縮和離散小波變換;(2)可以對(duì)圖像進(jìn)行復(fù)原操作,包括維納濾波法、自適應(yīng)濾波和均值濾波復(fù)原操作。 (2)界面友好,操作簡(jiǎn)單方便界面采用全中文方式的菜單和按鈕方式,凡是需要確定參數(shù)的算法都有設(shè)置參數(shù)的對(duì)話框,用戶可以方便的輸入不同的參數(shù),便于比較不同參數(shù)條件下的圖像處理效果,從而便于用戶理解有關(guān)參數(shù)變化對(duì)處理結(jié)果的影響。第5章 系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn) 系統(tǒng)的特點(diǎn)和功能 (1) 有針對(duì)性,可擴(kuò)展性強(qiáng)本系統(tǒng)內(nèi)容單一,具有針對(duì)性,主要針對(duì)圖像壓縮編碼這部分內(nèi)容,因?yàn)镸ATLAB自帶的圖像處理工具箱提供了豐富的圖像處理函數(shù),而且MATLAB圖像工具箱提供的函數(shù)大多是M文件,所以本系統(tǒng)基于MATLAB的這些特點(diǎn),把自己編寫的代碼加入其中,來達(dá)到壓縮圖像的功能。小波變換是科恩類變換,其基本思想是將函數(shù)在核函數(shù)上展開,核函數(shù)具有時(shí)間與頻率分辨率,因而小波變換也具有時(shí)間和頻率分辨率。因此,不能用于局部分析。該性質(zhì)可由δ(t)函數(shù)來理解,即時(shí)域上的一個(gè)沖激脈沖在頻域中具有無限伸展的均勻頻譜。在這些信號(hào)的分析中,希望知道信號(hào)在突變時(shí)刻的頻率成份,顯然利用傅里葉變換處理這些信號(hào),這些非平穩(wěn)的突變成份往往被傅里葉變換的積分作用平滑掉了?;谶@一基本原理,現(xiàn)代譜分析已研究與發(fā)展了多種行之有效的高效、多分辨率的分析算法。傅里葉展開正是這一物理過程的數(shù)學(xué)描述傅里葉變換的特點(diǎn)是域變換,它把時(shí)域和頻域聯(lián)系起來,把時(shí)域內(nèi)難以顯現(xiàn)的特征在頻域中十分清楚地顯現(xiàn)出來。它可把許多常見的微分、積分和卷積運(yùn)算簡(jiǎn)化為代數(shù)運(yùn)算。 小波變換的特點(diǎn)信號(hào)分析的主要目的是尋找一種簡(jiǎn)單有效的信號(hào)變換方法,以便突出信號(hào)中的重要特性,簡(jiǎn)化運(yùn)算的復(fù)雜度。如果進(jìn)行時(shí)頻分析,則要選擇光滑的連續(xù)小波,因?yàn)闀r(shí)域越光滑的基函數(shù),在頻域的局部化特性越好。這個(gè)性質(zhì)用于小波圖像編碼意味著,在一個(gè)相當(dāng)平坦的區(qū)域附近小波系數(shù)接近零,這會(huì)提高壓縮效率。如haar小波是不連續(xù)的,會(huì)造成復(fù)原圖像中出現(xiàn)方塊效應(yīng),而采用其他光滑的小波基則方塊效應(yīng)會(huì)消除。正則性是函數(shù)光滑性的一種描述,也反映了函數(shù)頻域能量集中的程度。在圖像壓縮中,希望經(jīng)小波分解后的變換系數(shù)在三個(gè)方向的細(xì)節(jié)分量有高度的局部相關(guān)性,同時(shí)又希望整體相關(guān)性被大部分杰出甚至全部解除。它在視覺信息加工研究和邊緣檢測(cè)方面獲得了較多的應(yīng)用,因而也稱做Marr小波。Mexico草帽小波是高斯函數(shù)的二階導(dǎo)數(shù),即0