機器視覺實驗指導書_第1頁
機器視覺實驗指導書_第2頁
機器視覺實驗指導書_第3頁
機器視覺實驗指導書_第4頁
機器視覺實驗指導書_第5頁
已閱讀5頁,還剩73頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGEPAGE78目錄第一章圖像增強…………………31.1空域變換增強 31.1.1直接灰度調(diào)整 41.1.2直方圖處理 101.1.3圖像間的代數(shù)運算 141.2空域濾波增強 161.2.1基本原理 161.2.2平滑濾波器 171.2.3銳化濾波器 201.3頻域增強 231.3.1低通濾波 241.3.2高通濾波 24第二章圖像恢復和重建…………262.1退化模型 262.1.1連續(xù)退化模型 272.1.2離散退化模型 282.2復原的代數(shù)方法 292.2.1逆濾波復原 292.2.2最小二乘方濾波 302.3MATLAB實現(xiàn)圖像復原 30第三章圖像編碼與壓縮…………333.1圖像編碼與壓縮概述 333.1.1圖像壓縮與編碼的必要性 333.1.2圖像壓縮編碼的分類 333.2無損壓縮技術(shù) 343.2.1無損壓縮技術(shù)概述 343.2.2霍夫曼(huffman)編碼 353.2.3行程編碼 383.3有損壓縮編碼 403.3.1有損壓縮編碼原理 40第四章圖像分割…………………454.1灰度閾值分割法 454.1.1雙峰法 454.1.2p-參數(shù)法 464.1.3最大方差自動取閾法 464.2邊緣檢測方法 494.2.1邊緣算子法 49第五章工件尺寸和面積測量…………………….535.1圖像采集部分 545.2圖像處理與面積計算部分 545.2.1圖像預處理 545.2.2工件面積計算 56第六章車牌識別………………….586.1總體設計方案 586.2各模塊實現(xiàn)方法 59實驗一MATLAB基本圖像處理算法實驗…………..78實驗二機器視覺基本程序編寫實驗………………79實驗三尺寸測量………………..80實驗四模式識別…………………..81

第一章圖像增強圖像增強是指按特定的需要突出一幅圖像中的某些信息,同時,削弱或去除某些不需要的信息的處理方法。其主要目的是處理后的圖像對某些特定的應用比原來的圖像更加有效。圖像增強技術(shù)主要包含直方圖修改處理、圖像平滑化處理、圖像尖銳化處理和彩色處理技術(shù)等。在實際應用中,常常是幾種方法聯(lián)合處理,以便達到預期的增強效果。根據(jù)具體的應用目的和要求,所需要的具體增強技術(shù)也可以大不相同。增強將不增加圖像數(shù)據(jù)中的相關(guān)信息,但它將增加所選擇特征的動態(tài)范圍,從而使這些特征檢測或識別更加容易。例如噪聲(即各種干擾信號)減弱、對比度改善、變形修正、模糊消除等都屬于圖像增強的內(nèi)容。由于種種原因,圖像的品質(zhì)常常是不理想的,因此圖像增強成為圖像處理中的重要環(huán)節(jié)。圖像增強主要有空域增強和頻域增強等。目前常用的增強技術(shù)根據(jù)對圖像進行處理所在的空間不同,可分為基于圖像域的方法和基于變換域的方法。第一類,直接在圖像所在的空間處理,也就是在像素組成的空間里直接對像素進行操作,為空域變換增強;第二類,在圖像的變換域?qū)D像間接進行處理,為頻域增強??沼蛱幚矸ㄊ侵苯訉D像中的像素進行處理,基本上是以灰度映射變換為基礎(chǔ)的,所用的映射變換取決于增強的目的。例如增加圖像的對比度,改善圖像的灰度層次等處理均屬于空域處理法。另外,在第一類方法里還可分為兩組:一是基于像素(點)的,也就是對圖像的每次處理是對每個像素進行的,增強過程對每個像素的處理與其它像素無關(guān);二是基于模板的,也就是對圖像的每次處理是對于小的子圖像(模板)進行的。頻域處理法的基礎(chǔ)是卷積定理,它采用修改圖像傅立葉變換的方法實現(xiàn)對圖像的增強處理。空域增強方法可以表示為g(x,y)=EH[f(x,y)](1.1)其中,f(x,y)和g(x,y)分別為增強前后的圖像,EH代表增強操作。如果EH是定義在每個(x,y)上的,則EH是點操作;如果EH是定義在(x,y)的某個鄰域上的,則EH成為模板操作。如果模板最小,則可以是一個點,此時就變成了點操作,所以點操作可以看作是模板操作的一個特例。本章將分別介紹利用MATLAB實現(xiàn)以上所提到的各種圖像處理技術(shù)。1.1空域變換增強當g(x,y)的值取決于在(x,y)處的f(x,y)值時,EH就是一個灰度變換。如以s和t分別表示f(x,y)和g(x,y)在(x,y)位置處的灰度值,則此時式(1.1)可以寫成:T=EH(s)(1.2)基于點操作的方法也叫灰度變換,常用的方法有以下幾類:(1)直接對每個像素進行操作(2)借助直方圖進行操作;(3)借助對一系列圖像間的操作進行變換。1.1.1直接灰度調(diào)整1.增強對比度增強對比度實際是增強原圖的各部分的反差。實際中往往是通過增加原圖中某兩個灰度值之間的動態(tài)范圍來實現(xiàn)的。典型的增強對比度的變換曲線如圖1.1所示。圖1.1增強對比度的變換曲線圖1.1增強對比度的變換曲線從圖中可以看出,通過這樣一個變換,原圖中灰度值在和的動態(tài)范圍減小了,而灰度值在的動態(tài)范圍增加了,從而使這個范圍內(nèi)的對比度增加了。在實際應用中,、、、可取不同的值進行組合從而可到不同的效果。通常在進行特定任務的模式識別工作之前,要對所要識別的圖像進行增強對比度的處理,以使辨識工作更容易,辨識結(jié)果更準確。應用變換曲線增強對比度的程序如下所示,其處理結(jié)果如圖1.2所示。%(1)應用變換曲線增強對比度clear;closeall;X1=imread('flower.JPG');figure(1),subplot(2,2,1),imshow(X1),title('原圖像');f0=0;g0=0;f1=70;g1=30;f2=180;g2=230;f3=255;g3=255;%繪制變換函數(shù)曲線subplot(1,2,2),plot([f0,f1,f2,f3],[g0,g1,g2,g3])axistight,xlabel('f'),ylabel('g')title('增強對比度的變換曲線')r1=(g1-g0)/(f1-f0);b1=g0-r1*f0;r2=(g2-g1)/(f2-f1);b2=g1-r2*f1;r3=(g3-g2)/(f3-f2);b3=g2-r3*f2;[m,n]=size(X1);X2=double(X1);fori=1:m%循環(huán)對矩陣中的每個元素進行變換處理forj=1:nf=X2(i,j);g(i,j)=0;if(f>=0)&(f<=f1)g(i,j)=r1*f+b1;elseif(f>=f1)&(f<=f2)g(i,j)=r2*f+b2;elseif(f>=f2)&(f<=f3)g(i,j)=r3*f+b3;end;end;end;subplot(2,2,3),imshow(mat2gray(X2));title('增強對比度后的圖像');%(2)利用imadjust()函數(shù)增強對比度X1=imread('camera.gif');figure(2),subplot(1,2,1),imshow(X1),title('原圖像');J=imadjust(X1,[0.25,0.6],[],1.2322)subplot(1,2,2),imshow(J),title('增強對比度后的圖像);圖1.2增強對比度圖1.2增強對比度圖1.2是在所選的參數(shù)模式下所得的增強圖像,對比處理過的圖像和原圖像可以看出,應用變換曲線增強對比度后圖像的對比度增強,更容易辨認了。對于不同的圖像,根據(jù)不同的情況,所選的參數(shù)有所不同,要根據(jù)實際情況而定。2.圖像求反對圖像求反是將原圖的灰度值翻轉(zhuǎn),簡單地說,就是使黑變白,使白變黑,普通的黑白底片和照片就是這樣的關(guān)系。具體的變換就是將圖像中每個像素的灰度值根據(jù)變換曲線進行映射。應用變換曲線對圖像求反的程序如下,運行求反的變換曲線以及所得結(jié)果如圖1.3所示:X1=imread('lena.gif');figure(3),subplot(2,2,1),imshow(X1),title('原圖像');f1=200;%f1和g1分別表示變換曲線在縱軸和橫軸上的最大范圍subplot(1,2,2),plot([0,f1],[g1,0])axistight,xlabel('f'),ylabel('g')title('圖像求反的變換曲線')k=g1/f1;[m,n]=size(X1);X2=double(X1);fori=1:m%循環(huán)對矩陣中的每個元素進行變換處理forj=1:nf=X2(i,j);g(i,j)=0;if(f>=0)&(f<=f1)g(i,j)=g1-k*f;elseg(i,j)=0;end;end;end;subplot(2,2,3),imshow(mat2gray(X2)),title('求反后的圖像');圖1.3求反的變換曲線以及所得結(jié)果圖1.3求反的變換曲線以及所得結(jié)果3.動態(tài)范圍壓縮這種方法的目標與增強對比度相反。當原圖的動態(tài)范圍太大,超出了某些顯示設備所允許的動態(tài)范圍時,如果直接使用原圖,則有一部分信息可能丟失。解決的辦法是對原圖進行灰度壓縮。利用對數(shù)形式的變換函數(shù)進行動態(tài)范圍壓縮的程序如下。我們可以使用不同的參數(shù)組合來得到不同的效果。采用對數(shù)形式的變換函數(shù)的變換曲線和處理結(jié)果如圖1.4所示。%(4)采用對數(shù)形式的變換函數(shù)進行動態(tài)范圍壓縮X1=imread('camera.gif');figure(4),subplot(2,2,1),imshow(X1),title('原圖像');%繪制變換函數(shù)曲線c=255/log(256);x=0:1:255;y=c*log(1+x);subplot(1,2,2),plot(x,y)axistight,xlabel('f'),ylabel('g')title('對數(shù)變換曲線')%循環(huán)對矩陣中的每個元素進行變換處理[m,n]=size(X1);X2=double(X1);fori=1:mforj=1:ng(i,j)=c*log(X2(i,j)+1);endendsubplot(2,2,3),imshow(mat2gray(X2)),title('對數(shù)變換處理的圖像');圖1.4對數(shù)形式的變換函數(shù)進行動態(tài)范圍壓縮結(jié)果圖1.4對數(shù)形式的變換函數(shù)進行動態(tài)范圍壓縮結(jié)果4.灰度切分灰度切分的目的與增強對比度相似,即將某個灰度范圍變得比較突出:所不同的是,這里將所要突出的灰度范圍變換成較高的灰度值,而將其余灰度值變換為較低的灰度值?;叶惹蟹值某绦蛉缦?。其處理結(jié)果如圖1.5所示。%(5)取s1=100;s2=200進行灰度切分s1=100;s2=200;g1=20;g2=200;X1=imread('lena.gif');figure(5),subplot(2,2,1),imshow(X1),title('原圖像');%繪制變換函數(shù)曲線s1=100;s2=200;g1=20;g2=200;subplot(1,2,2),plot([0,s1,s1,s2,s2,255],[g1,g1,g2,g2,g1,g1])axistight,xlabel('f'),ylabel('g')title('s1=100,s2=200時的灰度切分變換曲線')[m,n]=size(X1);X2=double(X1);fori=1;m%循環(huán)對矩陣中的每個元素進行變換處理forj=1:nf=X2(i,j);g(i,j)=0;if(f>=s1)&(f<=s2)g(i,j)=g2;elseg(i,j)=g1;end;endend;subplot(2,2,3),imshow(mat2gray(X2));title('灰度切分的圖像');圖1.5灰度切分變換曲線和變換結(jié)果圖1.5灰度切分變換曲線和變換結(jié)果圖中的s1=100,s2=200為用戶選定的參數(shù),而s1和s2之間的灰度范圍是用戶想要突出的部分。圖像二值化可以看作是灰度切分的一種特殊情況,它將灰度值小于某個f1的所有像素點都置為0,而將灰度值大于f1的所有像素點都置為255;如果再將0和255這兩個灰度級分別映射為0和1,就得到了二值圖像。圖像二值化的結(jié)果和原圖像如圖1.6所示。圖1.6圖像二值化結(jié)果圖1.6圖像二值化結(jié)果1.1.2直方圖處理圖像的灰度統(tǒng)計直方圖是一個一維離散函數(shù):k=0,1…,L-1(1.3)式中,是圖像f(x,y)的第級灰度值;是f(x,y)中具有灰度值的像素的個數(shù);n是圖像中像素的總數(shù)。由定義式可知,給出了對出現(xiàn)概率的一個估計,所以直方圖表明了圖像中灰度值的分布情況。因此,可以通過改變直方圖的形狀來達到增強圖像對比度的效果。這種方法是一概率論為基礎(chǔ)的,常用的方法有直方圖均衡化和直方圖規(guī)定化。偏暗的圖像灰度范圍很窄,而且主要集中在低灰度級上;偏亮的圖像灰度范圍主要集中在高灰度級上;灰蒙蒙的圖像同樣是因為灰度范圍窄,動態(tài)范圍小,主要集中在中間的灰度級上;正常的圖像灰度范圍很大,在各個灰度級上都有像素,從而使圖像看起來對比度較大,細節(jié)清晰。后面將要提到的直方圖均衡化和直方圖規(guī)定化主要就是基于此種分析,對圖像的直方圖進行操作,來達到增強圖像的目的。1.直方圖均衡化這個方法的基本思想是把原始圖像的直方圖變換成均勻分布的形式,這樣就增加了像素灰度值的動態(tài)范圍,從而達到了增強圖像整體對比度的效果。具體方法是:計算出原始圖像的所有灰度級,0,1,…,L-1;統(tǒng)計原始圖像各個灰度級的像素數(shù);計算原始圖像的直方圖;計算原始圖像的累計直方圖,即(1.4)取整計算:(1.5)定義映射關(guān)系:;統(tǒng)計新直方圖各灰度級的像素數(shù):計算新的直方圖:(1.6)對一幅圖像實現(xiàn)直方圖均衡化的程序如下%(7)實現(xiàn)直方圖均衡化I=imread('peppers.gif');J=histeq(I);%直方圖均衡化函數(shù),n是均衡化后的灰度級數(shù),缺省為64figure(7),subplot(2,2,1),imshow(I),title('原圖像');subplot(2,2,2),imhist(I,64),title('原圖像直方圖');subplot(2,2,3),imshow(J),title('直方圖均衡化');%變換后所得圖像矩陣subplot(2,2,4),imhist(J,64),title('直方圖均衡化后的直方圖');直方圖均衡化的結(jié)果如圖1.7所示:圖1.7直方圖均衡化結(jié)果圖1.7直方圖均衡化結(jié)果從處理前后的圖像和直方圖可以看出,在許多原始圖像中看不清的細節(jié)在直方圖均衡化處理所得的圖像中都十分清晰。2.直方圖規(guī)定化直方圖均衡化的優(yōu)點是能增強整個圖像的對比度,但它的具體增強效果不易控制;處理的結(jié)果總是得到全局均衡化的直方圖。實際應用中有時需要變換直方圖,使之成為某個特定的形狀,從而有選擇地增強某個灰度值范圍的對比度。這時可以采用比較靈活的直方圖規(guī)定化。直方圖規(guī)定化方法主要有三個步驟:(1)對原始圖像的直方圖進行灰度均衡化,即k=0,1,…,M-1(1.7)(2)規(guī)定所需要的直方圖,并計算能使規(guī)定化的直方圖均衡化的變換,即j=0,1,…,N-1(1.8)(3)將第一步所得到的變換翻轉(zhuǎn)過來,也就是將原始圖像對應映射到規(guī)定的直方圖上,將所有的對應到中去。對應規(guī)則可選用組映射規(guī)則(GroupMappingLaw,GML)。設有一個整數(shù)函數(shù)I(1),1=0,1,…,N-1,滿足現(xiàn)在要確定能使下式達到最小的I(1)。I(1)=0,1,…,N-1(1.9)如果I=0,則將其i從0到I(0)的對應到中去。如果I〉1,則將其從I(1-1)+1到I(1)的對應到中去。對圖像實現(xiàn)直方圖規(guī)定化的程序如下。直方圖規(guī)定化的結(jié)果如圖1.8所示。%(8)直方圖規(guī)定化I=imread('lena.gif')hgram=0:255%hgram是由用戶指定的向量,hgram的每一個元素都在[0,1]中J=histeq(I,hgram);%直方圖規(guī)定化函數(shù),規(guī)定將原始圖像的直方圖近似變成hgramfigure(8),subplot(2,2,1),imshow(I),title(‘原圖像‘);subplot(2,2,2),imshow(J)title(‘直方圖規(guī)定化后圖像’);subplot(2,2,3),imhist(I,64)title('原圖像直方圖');subplot(2,2,4),imhist(J,64)title('直方圖規(guī)定化后的直方圖');比較可知,使用直方圖均衡化得到的圖像在一些較暗的區(qū)域有些細節(jié)仍不太清楚;采用直方圖規(guī)定化函數(shù)對同一幅圖像進行直方圖規(guī)定化變換,所得的結(jié)果比均衡化的結(jié)果更亮,對應于均衡化圖像中較暗區(qū)域的一些細節(jié)更清晰。從直方圖上看,灰度值高的一邊更為密集。圖1.8直方圖規(guī)定化結(jié)果圖1.8直方圖規(guī)定化結(jié)果1.1.3圖像間的代數(shù)運算有些圖像增強技術(shù)是靠對多幅圖像進行圖像間的代數(shù)運算實現(xiàn)的。代數(shù)運算是指對兩幅圖進行點對點的加、減、乘、除計算而得到輸出圖像的運算。對于相加和相乘的情形,可能不止有兩幅圖像參加運算。常用的圖像間的代數(shù)運算有圖像相減和圖像相加兩種。1.圖像相減運算設有圖像f(x,y)和h(x,y),它們的差為:g(x,y)=f(x,y)-h(x,y)。圖像相減可以用于去除一幅圖像中所不需要的加性圖案。加性圖案可能是緩慢變化的背景陰影、周期性的噪聲或在圖像上每個像素處均已知的附加污染等。減法也可以用于檢測同一場景的兩幅圖像之間的變化,例如,通過對一場景的序列圖像的減法運算可檢測運動。在計算用于確定物體邊界位置的梯度時,也要用到圖像減法運算。以下程序是一個根據(jù)原始圖像生成其背景亮度圖像,然后再從原始圖像中將背景亮度圖像減去的程序。其運行結(jié)果如圖1.9所示。%(9)圖像相減運算I=imread('lena.gif');background=imopen(I,strel('disk',15));I2=imsubtract(I,background);figure(9)subplot(1,2,1),imshow(I),title('原圖像');subplot(1,2,2),imshow(I2)title('去除背景亮度后的圖像');圖1.9圖像相減圖1.9圖像相減若希望從圖像數(shù)據(jù)I的每一個像素中減去一個常數(shù),可以將上述調(diào)用格式中的Y替換為一個制定的常數(shù)值,如Z=imsubtract(I,50).2.圖像相加運算設有圖像f(x,y)和h(x,y),它們的和為g(x,y)=f(x,y)+h(x,y)圖像相加的一個重要應用是對同一場景的多幅圖像求平均值。這種方法常用來有效地減低加性隨機噪聲的影響。圖像相加也可以用來將一幅圖像的內(nèi)容疊加到另一幅圖像上去,以達到二次曝光的效果。實現(xiàn)圖像相加的程序如下:I=imread('lena.gif');J=imread('cameraman.tif');figure(10)subplot(1,3,1),imshow(I)title('lena');subplot(1,3,2),imshow(J)title('camera')K=imadd(I,J);subplot(1,3,3),imshow(K)title('相加后的圖像');圖1.10圖像相加結(jié)果兩個圖像相加的結(jié)果如圖1.10所示:圖1.10圖像相加結(jié)果1.2空域濾波增強一般情況下像素的領(lǐng)域比該像素要大,也就是說,這個像素的鄰域中除了本身外還包括了其他像素。在這種情況下,g(x,y)在(x,y)位置處的值不僅取決于f(x,y)在以(x,y)為中心的領(lǐng)域內(nèi)所有像素的值。如仍以s和t分別表示f(x,y)和g(x,y)在(x,y)位置處的灰度值,并以n(s)代表f(x,y)在(x,y)領(lǐng)域內(nèi)像素的灰度值,則可寫成t=EH[s,n(s)](1.10)為在領(lǐng)域內(nèi)實現(xiàn)增強操作,??衫媚0迮c圖像進行卷積,每個模板實際上是一個二維數(shù)組,其中各個元素的取值確定了模板的功能。這種模板操作也成為空域濾波。1.2.1基本原理空域濾波一般可以分為線性濾波和非線性濾波兩類。線性濾波器的設計?;趯Ω盗⑷~變換的分析,非線性空域濾波器則一般直接對鄰域進行操作。另外,各種空域濾波器根據(jù)功能又主要分成平滑濾波器和銳化濾波器。平滑可用低通來實現(xiàn)。平滑的目的可分為兩類:一類是模糊,目的是在提取較大的目標前去除太小的細節(jié)或?qū)⒛繕藘?nèi)的小間斷連接起來;另一類是消除噪聲。銳化可用高通濾波來實現(xiàn),銳化的目的是為了增強被模糊的細節(jié)。結(jié)合這兩種分類方法,可將空域濾波增強分為以下四類:(1)線性平滑濾波器(低通)(2)非線性平滑濾波器(低通)(3)線性銳化濾波器(高通)(4)非線性銳化濾波器(高通)空域濾波器的工作原理都可借助頻域進行分析。他們的基本特點都是讓圖像在傅立葉空間的某個范圍的分量受到抑制,而讓其它分量不受影響,從而改變輸出圖像的頻率分布,達到增強的目的。在增強中用到的空間濾波器主要有以下兩類:(1)平滑(低通)濾波器。它能減弱或消除傅立葉空間的高頻分量,但不影響低頻分量。因為高頻分量對應圖像中的區(qū)域邊緣的灰度值具有較大較快變化的部分,濾波器將這些分量濾去,可使圖像平滑。(2)銳化(高通)濾波器。它能減弱或消除傅立葉空間的低頻分量,但不影響高頻分量。因為低頻分量對應圖像中灰度值緩慢變化的區(qū)域,所以與圖像的整體特性,如整體對比度和平均灰度值等有關(guān),濾去這些高頻分量可使圖像銳化。空域濾波器都是基于模板卷積,其主要工作步驟是:(1)將模板在圖中漫游,并將模板中心與圖中某個像素位置重合;(2)將模板上的系數(shù)與模板下對應的像素相乘;(3)將所有像素相加;(4)將和(模板的輸出相應)賦給圖中對應模板中心位置的像素。1.2.2平滑濾波器1.線性平滑濾波器線性低通濾波器是最常用的線性平滑濾波器。這種濾波器的所有系數(shù)都是正的。對的模板來說,最簡單的是取所有系數(shù)都為1。為保證輸出圖像仍在原來的灰度范圍,在計算出R后要將其除以9再進行賦值。這種方法稱為鄰域平均法。實現(xiàn)均值過濾器的程序見附錄一種程序(11)。其處理結(jié)果如圖1.11所示:%(11)實現(xiàn)線性平滑均值過濾器I=imread('lena.gif');J=imnoise(I,'salt',0.02);figure(11),subplot(2,2,1),imshow(I),title('原圖像');subplot(2,2,2),imshow(J),title('加入椒鹽噪聲的圖像');K1=filter2(fspecial('average',3),J)/255;%的均值濾波處理結(jié)果K2=filter2(fspecial('average',5),J)/255;%的均值濾波處理結(jié)果subplot(2,2,3),imshow(K1),title('的均值濾波處理結(jié)果');subplot(2,2,4),imshow(K2),title('的均值濾波處理結(jié)果');圖1.11均值濾波圖1.11均值濾波比較以上采用不同尺寸的均值濾波器進行低通濾波器進行低通濾波處理的結(jié)果可知,當所用的平滑模板的尺寸增大時,消除噪聲的效果更強,但同時所得的圖像變得更加模糊,細節(jié)的銳化程度逐步減弱。此外,維納濾波器也是經(jīng)典的線性降噪濾波器。維納濾波是一種自適應濾波,它能根據(jù)圖像的局部方差調(diào)整濾波器的輸出。局部方差越大,濾波器的平滑作用越強。它的最終目標是使恢復圖像與原圖像的均方誤差最小。Wiener2函數(shù)非常適用于圖像中的白噪聲(比如高斯噪聲),實現(xiàn)維納濾波器的程序如下,維納濾波的效果如圖1.12所示。%(12)實現(xiàn)高斯濾波器I=imread('lena.gif');J=imnoise(I,'gaussian',0,0.005);h=fspecial('gaussian');K=filter2(h,J)/255;K1=wiener2(J,[5,5]);figure(12),subplot(2,2,1),imshow(I),title('原圖像');subplot(2,2,2),imshow(J),title('加入高斯噪聲的圖像');subplot(2,2,3),imshow(K),title('高斯低通濾波的結(jié)果');subplot(2,2,4),imshow(K1),title('維納濾波后的結(jié)果');圖1.12加入高斯噪聲的圖像和高斯濾波的效果圖1.12加入高斯噪聲的圖像和高斯濾波的效果2.非線性平滑濾波器中值濾波器是最常用的非線性平滑濾波器。它是一種鄰域運算,類似于卷積,但計算的不是加權(quán)求和,而是把鄰域中的像素按灰度級進行排序,然后選擇該組的中間值作為輸出像素值。具體步驟是:(1)將模板在圖像中漫游,并將模板中心與圖像中某個像素的位置重合;(2)讀取模板下各對應像素的灰度值;(3)將這些灰度值從小到大排成一列,找出這些值里排在中間的一個;(4)將這個中間值賦給對應模板中心位置的像素。由此可以看出,中值濾波器的主要功能就是讓與周圍像素灰度值的差比較大的像素改取與周圍的像素值接近的值,從而可以消除孤立的噪聲點。實現(xiàn)均值過濾器的程序如下。此處采用的是的中值濾波器,效果如圖1.13所示。%(13)非線性平滑濾波器%加入椒鹽噪聲并采用模板實現(xiàn)中值過濾器I=imread('peppers.gif');J=imnoise(I,'salt',0.02);figure(13),subplot(2,2,1),imshow(I),title('原圖像');subplot(2,2,2),imshow(J),title('加入椒鹽噪聲后的圖像');K1=medfilt2(J,[3,3]);%用模板實現(xiàn)中值過濾器subplot(2,2,3),imshow(K1),title('中值濾波后的結(jié)果');圖1.13中值濾波圖1.13中值濾波由圖1.13的處理結(jié)果可以看出,中值濾波器不像均值濾波器那樣,它在衰減噪聲的同時不會使圖像的邊界模糊,這也是中值濾波受歡迎的主要原因。中值濾波器去噪聲的效果依賴于兩個要素:鄰域的空間范圍和中值計算中所涉及的像素數(shù)。一般來說,小于中值濾波器面積一半的亮或暗的物體基本上會被濾掉,而較大的物體則幾乎會原封不動地保存下來。因此,中值濾波器的空間尺寸必須根據(jù)現(xiàn)有的問題來進行調(diào)整。較簡單的模板是的方形(這里N常是奇數(shù)),計算使用到的所有各像素點。另外,我們也可以使用稀疏分布的模板來節(jié)省時間。對于不同的模板,中值也要依情況而定。計算中值所使用的像素的增加跟去噪時的效果之間的關(guān)系是非線性的。如果現(xiàn)在的問題需要用到大尺度的中值濾波器,那么用稀疏分布的中值模板或許能得到令人滿意的效果。中值濾波只是排序統(tǒng)計濾波中的一種。如果鄰域中的輸入像素已經(jīng)安排好了,那么中值代表的是第50個百分點的數(shù)值。其它百分點的數(shù)值也可以用。第0個百分點可用于最小值濾波器,它用來檢測圖像中最暗的點;第100個百分點可用最大值濾波器,它用來檢測圖像中最亮的點;在MATLAB中,這幾種濾波器都可以用B=ordfilt2(A,order,domain)函數(shù)來實現(xiàn),分別舉例如下:B=ordfilt2(A,1,ones(3,3))實現(xiàn)的最小值濾波器,因為它取全1的模板中排在最小位置處的那個像素;B=ordfilt2(A,1,[010;101;010])的輸出是每個像素的東、南、西、北四個方向相鄰像素灰度的最小值,因為它取四鄰域的模板中排在最小位置處的那個像素。1.2.3銳化濾波器1.線性銳化濾波器線性高通濾波器是最常用的線性銳化濾波器。這種濾波器的中心系數(shù)都是正的,而周圍的系數(shù)都是負的(如果中心和周圍正負交換,則產(chǎn)生邊緣銳化效果),所有系數(shù)之和0。對的模板來說,典型的系數(shù)取值是:[-1-1-1;-18-1;-1-1-1]事實上這是拉普拉斯算子。例如,語句h=-fspecial(‘laplacian’,0.5)所得到的拉普拉斯算子為:h=-0.3333-0.3333-0.3333-0.33332.6667-0.3333-0.3333-0.3333-0.3333可以看出這兩個模板只是一個比例的不同(經(jīng)過比例變換后的結(jié)果圖像是相同的)。當這樣的模板放在圖像中灰度值為常數(shù)或者變化很小的區(qū)域時,其輸出0或很小。這個濾波器將原圖像中的零頻率分量去除了,也就是將輸出圖像的平均灰度值變?yōu)?,這樣就會有一部分像素灰度值小于0。在圖像處理中,我們一般只考慮正的灰度值,所以還要將輸出圖像的灰度值范圍通過尺度變換回到所要求的范圍。用unsharp算子實現(xiàn)邊緣銳化的程序如下,處理效果如圖1.14所示。%(14)線性銳化濾波器I=imread('peppers.gif');h=fspecial('laplacian');I2=filter2(h,I);figure(14),subplot(2,2,1),imshow(I),title('原圖像');subplot(2,2,2),imshow(I2),title('拉普拉斯算子濾波后的結(jié)果);%采用'unsharp'算子實現(xiàn)對比度增強濾波器h=fspecial('unsharp',0.5);I3=filter2(h,I)/255;subplot(2,2,3),imshow(I3),title('unsharp算子實現(xiàn)對比度增強濾波后的結(jié)果');這里只是簡單介紹了銳化濾波器,在后面的邊緣檢測中還要詳細介紹。圖1.14unsharp算子實現(xiàn)邊緣銳化圖1.14unsharp算子實現(xiàn)邊緣銳化2.非線性銳化濾波器鄰域平均可以模糊圖像,因為平均對應積分,所以利用微分可以銳化圖像。圖像處理中最常用的微分算法是利用梯度。對一個二維連續(xù)函數(shù)f(x,y),其梯度是一個矢量(需要用兩個模板分別沿x和y方向計算),即(1.11)其模(以2為模,對應歐氏距離)為(1.12)在使用中為了計算簡便,也可不用上述對應歐氏距離的以2為模的方法組合兩個模板的輸出。一種簡單的方法是利用城區(qū)距離(以1為模),即(1.13)另一種簡單的方法是利用棋盤距離(以為模),即(1.14)上述這些組合的方法本身都是非線性的。常用的空域微分算子有sobel算子、prewitt算子、高斯—拉普拉斯算子等。對幾種邊緣增強算子的效果進行比較的程序如下。幾種邊緣增強算子的效果如圖1.15所示:%(15)非線性銳化濾波器%對幾種邊緣增強算子的效果進行比較I1=imread('peppers.gif');h1=fspecial('sobel');I2=filter2(h1,I1);%sobel卷積I3=conv2(I1,h1);h2=fspecial('prewitt');I4=filter2(h2,I1);h3=fspecial('log');I5=filter2(h3,I1);figure(15),subplot(2,2,1),imshow(I1),title('原圖像');subplot(2,2,2),imshow(I3);title('sobel濾波');subplot(2,2,3),imshow(I4);title('prewitt濾波');subplot(2,2,4),imshow(I5);title('log濾波');圖1.15幾種邊緣增強算子的效果圖1.15幾種邊緣增強算子的效果1.3頻域增強卷積理論是頻域技術(shù)的基礎(chǔ)。設函數(shù)f(x,y)與線性位不變算子h(x,y)的卷積結(jié)果是g(x,y),即g(x,y)=h(x,y)*f(x,y)(1.15)那么,根據(jù)卷積定理在頻域有G(u,v)=H(u,v)F(u,v)(1.16)其中,G(u,v)、H(u,v)、F(u,v)分別是g(x,y)、h(x,y)、f(x,y)的傅立葉變換。頻域增強的主要步驟是:(1)計算所需增強圖的傅立葉變換;(2)將其與一個(根據(jù)需要設計的)轉(zhuǎn)移函數(shù)相乘;(3)在將結(jié)果進行傅立葉反變換以得到增強的圖。常用的頻域增強方法有低通濾波和高通濾波。下面分別介紹這兩種濾波方法。1.3.1低通濾波圖像的能量大部分集中在幅度譜的低頻和中頻部分,而圖像的邊緣和噪聲對應于高頻部分。因此能降低高頻成分幅度的濾波器就能減弱噪聲的影響。Butterworth低通濾波器是一種物理上可以實現(xiàn)的低通濾波器。n階截斷頻率為d0的Butterworth低通濾波器的轉(zhuǎn)移函數(shù)為:(1.17)%(16)實現(xiàn)Butterworth低通濾波器I1=imread('lena.gif');I2=imnoise(I1,'salt');f=double(I2);g=fft2(f);%采用傅立葉變換g=fftshift(g);%數(shù)據(jù)矩陣平移[N1,N2]=size(g);n=2;d0=50;d1=5;n1=fix(N1/2);n2=fix(N2/2);fori=1:N1forj=1:N2d=sqrt((i-n1)^2+(j-n2)^2);%計算Butterworth低通變換函數(shù)h=1/(1+0.414*(d/d0)^(2*n));result(i,j)=h*g(i,j);endendresult=ifftshift(result);X2=ifft2(result);X3=uint8(real(X2));1.3.2高通濾波高通濾波也稱高頻濾波,它的頻率值在0頻率處為單位1,隨著頻率的增長,傳遞函數(shù)的值逐漸增加;當頻率增加到一定值后,傳遞函數(shù)的值通常又回到0值或者降低到某個大于1的值。在前一種情況下,高頻增強濾波器實際上是一種帶通濾波器,只不過規(guī)定0頻率處的增益為單位1。在實際應用中,為了減少圖像種面積大而且緩慢變化的成分的對比度,有時讓0頻率處的增益小雨單位1更合適。如果傳遞函數(shù)通過原點,則可稱為laplacian濾波器。用Butterworth高、低通濾波器的結(jié)果如圖1.16所示:%(17)實現(xiàn)Butterworth高通濾波器%計算Butterworth高通變換函數(shù)ifd==0h=0;elseh=1/(1+(d1/d)^(2*n));endresult(i,j)=h*g(i,j);result=ifftshift(result);X4=ifft2(result);X5=uint8(real(X2));figure(16),subplot(2,2,1),imshow(I1),title('原圖像');subplot(2,2,2),imshow(I2),title('加噪圖像');subplot(2,2,3),imshow(X3),title('Butterworth低通濾波器去噪圖像');圖1.16用Butterworth高、低通濾波器濾波結(jié)果subplot(2,2,4),imshow(X5),圖1.16用Butterworth高、低通濾波器濾波結(jié)果title('Butterworth高通濾波器去噪圖像');從圖1.16可見,高通濾波圖像很昏暗,很多細節(jié)都看不清了,這是由于圖像的大部分能量集中在低頻區(qū)域,而高通濾波器使得途中各區(qū)域的邊界得到明顯增強的同時濾掉了低頻分量,使得圖中原來比較平滑區(qū)域內(nèi)部的灰度動態(tài)范圍被壓縮,因而整幅圖比較昏暗。第二章圖像恢復和重建圖像復原是早期圖像處理的主要內(nèi)容之一,目的在于消除或減輕在圖像獲取、傳輸及保存過程中造成的圖像品質(zhì)下降,即退化現(xiàn)象,恢復圖像的本來面目。退化主要原因如下:(1)攝像機在捕捉圖像過程中的移動或長時間的曝光。(2)遠距離聚焦、寬角度鏡頭、大氣存在物的影響或由于曝光比較短而是的捕捉的光子量少。(3)光學系統(tǒng)離散的集合畸變。(4)圖像遠距離傳輸產(chǎn)生的加性噪聲。(5)圖片(照片)保存不當,引起紙質(zhì)的變化等。復原圖像要盡可能和原圖像保持一致。圖像重建方法一般是根據(jù)物體的一些橫截面部分的投影而進行的,由于這種重建在檢測某個物體的內(nèi)部結(jié)構(gòu)時不會有任何物理上的損傷,因此在醫(yī)學、天文等領(lǐng)域中應用廣泛。傅立葉變換是最簡單的重建方法。通過將物體投影進行旋轉(zhuǎn)和傅立葉變換可以首先構(gòu)造整個傅立葉變換的平面,然后只需再通過傅立葉反變換就可以得到重建后的物體。另外還有卷積重建、代數(shù)重建法等。2.1退化模型圖2.1退化模型圖像恢復處理的關(guān)鍵問題在于建立退化模型。一幅純凈的圖像f(x,y)是由于通過一個系統(tǒng)H及加入外來加性噪聲n(x,y)而退化為一幅圖像g(x,y)的。如圖2.1所示.圖2.1退化模型圖像復原可以看作一個估算的過程。若已經(jīng)給出了退化圖像g(x,y)并估算出系統(tǒng)參數(shù)H,從而可近似地恢復f(x,y).這里n(x,y)是一種統(tǒng)計性質(zhì)的信息。對于上圖的模型,線性系統(tǒng)可以表示為:(2.1)這里不妨令n(x,y)=0,輸入信號為、,對應的輸出信號為、,通過系統(tǒng)后有下式成立:(2.2)如果一個系統(tǒng)的參數(shù)不隨時間變化,則該系統(tǒng)稱為時不變系統(tǒng),否則,稱為時變系統(tǒng)。對于線性系統(tǒng)有:(2.3)則H是空間不變系統(tǒng)(或稱為位置不變系統(tǒng)),式中和分別是空間位置的偏移量。也就是說圖像中任意一點通過該系統(tǒng)H后的相應只與該點的輸出值有關(guān),與它所處的位置無關(guān)。在實際中,絕大多數(shù)系統(tǒng)都是非線性時變系統(tǒng),這對系統(tǒng)的處理帶來極大的不便。為了便于計算機的處理,一般采用近似的辦法。把系統(tǒng)近似為線性時不變系統(tǒng),可以直接應用線性系統(tǒng)理論解決圖像復原的問題。因此,在圖像復原處理特別是數(shù)字圖像復原處理中,主要采用線性時不變(空間不變)的復原技術(shù)。2.1.1連續(xù)退化模型依據(jù)線性系統(tǒng)理論有(2.4)推廣到二維空間,定義為沖擊激函數(shù)。這樣(f(x,y)就變成:(2.5)則有以下方程式成立:(2.6)這里的H是線性算子,不妨令,則有(2.7)其中,就是系統(tǒng)H的沖激響應。在光學中,沖激為一光點,所以又稱為點擴散函數(shù)(PSF,Point_SpreadFunction).式(2.7)實際上就是線性系統(tǒng)理論中著名的費雷霍姆(Fredholm)積分。在空間位置不變系統(tǒng)中,(2.8)在這種情況下,顯然有:(2.9)這表明了系統(tǒng)H加入輸入信號的響應就是系統(tǒng)輸入信號與沖激響應的卷積積分。在右加性噪聲的條件下,線性退化模型可表示為:(2.10)2.1.2離散退化模型前面討論了連續(xù)退化模型,如果把和進行均勻采樣,就可以引伸出離散的退化模型。假設有兩個函數(shù)圖像大小為,的點擴散函數(shù)大小為。首先作成大小為的周期延拓圖像,如下所示:(2.11)(2.12)經(jīng)過這樣的延拓后,和分別成為二維周期函數(shù),它們在x和y方向上的周期分別為M和N。由此得到二維退化模型為一個二位卷積形式:(2.13)式中:,卷積函數(shù)也是周期函數(shù),其周期與和一樣。為避免重疊,同樣要按以下規(guī)則延拓:(2.14)所以式(2.13)的模型同樣可用矩陣來表示:(2.15)其中,代表的列向量。這些列向量是由的函數(shù)矩陣,的各行堆積而成的。一個含有加性噪聲的退化模型為:(2.16)2.2復原的代數(shù)方法代數(shù)復原方法的中心是尋找一個估計,它使事先確定的某種優(yōu)度準則為最小。2.2.1逆濾波復原如果退化圖像為,原始圖像為,在不考慮噪聲的情況下,其退化模型用下式表示:(2.17)這顯然是一個卷積表達式。由傅立葉變換的卷積定理可知有下式成立:(2.18)式中,、、分別是退化圖像g(x,y)、點擴散圖像h(x,y)、原始圖像f(x,y)的傅立葉變換。所以(2.19)這說明了已知退化圖像的傅立葉變換和“濾波”傳遞函數(shù),則可以求得原始圖像的傅立葉變換,經(jīng)傅立葉反變換就可求得原始圖像f(x,y)。這里,G(u,v)除以H(u,v)起到了反向濾波的作用。這就是逆濾波復原的基本原理。一般而言,逆濾波法不能正確地估算H(u,v)的零點,因此必須采用一個折中的辦法加以解決。實際上,逆濾波是一個新的函數(shù)M(u,v)來表示的,處理框圖如圖2.2所示:圖2.2實際的逆濾波處理框圖圖2.2實際的逆濾波處理框圖M(u,v)的選擇為:(2.20)的選擇應該將的零點排除在外。2.2.2最小二乘方濾波最小二乘方濾波也就是維納濾波。它是使原圖像f(x,y)及其恢復圖像之間的均方誤差最小的復原方法。(2.21)對給定的,未能精確求解出f(x,y).在此只能找到一個估算值,使得均方誤差式(2.22)最小,其中就叫給定g(x,y)時f(x,y)的最小二乘方估計。最小二乘方濾波器的傳遞函數(shù)為:(2.23)式中,是噪聲對信號的功率密度比,它近似為一個適當?shù)某?shù)。2.3MATLAB實現(xiàn)圖像復原1.維納濾波復原對圖像進行維納濾波復原使用deconvwnr函數(shù)。函數(shù)調(diào)用格式為:J=deconvwnr(I,PSF)J=deconvwnr(I,PSF,NSR)J=deconvwnr(I,PSF,NCORR,ICORR)J=deconvwnr(I,PSF)復原PSF(點擴散函數(shù))和可能的加性噪聲卷積退化的圖像I。算法是基于最佳的估計圖像和真實圖像的最小均方誤差以及圖像和噪聲數(shù)組的相關(guān)運算的。在沒有噪聲的情況下,維納濾波器就是理想逆濾波器。J=deconvwnr(I,PSF,NSR)中NSR是噪信功率比。NSR可以是標量或和1相同大小的數(shù)組,缺省值為0。J=deconvwnr(I,PSF,NCORR,ICORR)中NCORR和ICORR分別是噪聲和原始圖像自相關(guān)函數(shù)。NCORR和ICORR不大于原始圖像的大小或維數(shù)。一個N維NCORR或ICORR數(shù)組是對應于每一維的自相關(guān)。若PSF為向量,NCORR或ICORR向量表示第一維的自相關(guān)函數(shù)。若PSF是數(shù)組,一維自相關(guān)函數(shù)可由所有非單元素維的PSF對稱推斷出。NCORR或ICORR向量表示噪聲或圖像的功率。創(chuàng)建一個棋盤圖像并實現(xiàn)維納濾波復原的程序如下。用維納濾波進行復原的結(jié)果如圖2.3所示:(1)對棋盤圖像進行維納濾波復原I=checkerboard(8);%創(chuàng)建一個棋盤圖像noise=0.1*randn(size(I));%產(chǎn)生隨機噪聲PSF=fspecial('motion',21,11);Blurred=imfilter(I,PSF,'circular');%輸入圖像濾波,使圖像變模糊BlurredNoisy=im2uint8(Blurred+noise);%添加噪聲NP=abs(fftn(noise)).^2;%噪聲功率NPOW=sum(NP(:))/prod(size(noise));NCORR=fftshift(real(ifftn(NP)));%噪聲的自相關(guān)IP=abs(fftn(I)).^2;%原始圖像功率IPOW=sum(IP(:))/prod(size(I));ICORR=fftshift(real(ifftn(IP)));%圖像的自相關(guān)ICORR1=ICORR(:,ceil(size(I,1)/2));NSR=NPOW/IPOW;%噪信比figure(17),subplot(2,2,1);imshow(BlurredNoisy,[]);title('模糊和噪聲圖像');subplot(2,2,2);imshow(deconvwnr(BlurredNoisy,PSF,NSR),[]);title('deoconvwnr(A,PSF,NSR)');subplot(2,2,3);imshow(deconvwnr(BlurredNoisy,PSF,NCORR,ICORR),[]);title('deconvwnr(A,PSF,NCORR,ICORR)');subplot(2,2,4);imshow(deconvwnr(BlurredNoisy,PSF,NPOW,ICORR1),[]);title('deconvwnr(A,PSF,NPOW,ICORR-1-D)');圖2.3維納濾波復原圖2.3維納濾波復原圖2.4圖像邊緣模糊化圖2.4圖像邊緣模糊化

第三章圖像編碼與壓縮近年來,隨著計算機通信技術(shù)的迅速發(fā)展,特別是多媒體網(wǎng)絡技術(shù)的興起,圖像壓縮與編碼已受到了人們越來越多的關(guān)注。圖像壓縮與編碼從本質(zhì)上說就是要對處理的圖像按照一定的規(guī)則進行變換和組合,從而達到以盡可能少的代碼(符號)來表示盡可能多的數(shù)據(jù)信息。壓縮通過編碼來實現(xiàn),或者說編碼帶來壓縮的效果。因此,一般把此項處理稱為壓縮編碼。圖像壓縮所要解決的問題是研究如何最大限度地壓縮圖像數(shù)據(jù),并保證利用這些數(shù)據(jù)所重建的圖像是用戶能夠接受的。由此而發(fā)展而來的數(shù)據(jù)壓縮基本方法有兩類:無損壓縮和有損壓縮,具體的實現(xiàn)方法將在后面詳細介紹。3.1圖像編碼與壓縮概述3.1.1圖像壓縮與編碼的必要性隨著信息技術(shù)的發(fā)展,數(shù)字圖像系統(tǒng)在天文學、遙感、醫(yī)學、攝影、圖形藝術(shù)等各個領(lǐng)域中都得到了廣泛應用。在信息高速流通時代,不僅要求大量存儲和傳輸圖像,而且往往要求在保證質(zhì)量的前提下以較小的空間存儲圖像和較少的比特傳輸速率傳輸圖像。為了利用有限的存儲容量存儲更多的圖像,或者為了以最短的時間傳遞盡可能多的圖像,就要研究怎樣才能最大限度地壓縮圖像數(shù)據(jù),并保證解壓后的圖像書用戶能夠接受的,這就是圖像壓縮需要解決的問題。另外,在研究圖像數(shù)據(jù)壓縮編碼的過程中,還要考慮的一個重要問題是重建后圖像的質(zhì)量問題。如果一幅圖像的編碼率很低,但是重建后效果卻不能令人滿意,那么這種編碼就是毫無意義的。圖像數(shù)據(jù)的壓縮是基于這樣兩個特點:其一,圖像信息存在著很大的冗余度,數(shù)據(jù)之間存在著相關(guān)性,如相鄰色素之間色彩的相關(guān)性等。通常,數(shù)字圖像的冗余度有以下三種:(1)空間冗余度,它是由相鄰像素數(shù)值之間的相關(guān)性造成的;(2)頻譜冗余度,它是由不同彩色平面或頻譜帶之間的相關(guān)性造成的;(3)時間冗余度,它是由活動圖像中圖像序列不同幀的相關(guān)性造成的。其二,由于人眼是圖像信息的接收端,所以可利用視覺對于邊緣急劇變化不敏感(視覺掩蓋效應),以及對圖像的亮度信息敏感、對顏色分辨率弱等特點來實現(xiàn)對圖像的高壓縮比,使得解壓后的圖像信號仍有著滿意的質(zhì)量。3.1.2圖像壓縮編碼的分類圖像壓縮的目的就在于,通過消除這些冗余度來減少表示圖像所需的比特數(shù)。由此發(fā)展起來的數(shù)據(jù)壓縮基本方法有兩類:其一,將相同的或相似的數(shù)據(jù)或數(shù)據(jù)特征歸類,使用較少的數(shù)據(jù)量描述原始數(shù)據(jù),以達到原始數(shù)據(jù)量的目的,這種壓縮一般稱為無損壓縮;其二,利用人眼視覺特征有針對性地簡化不重要的數(shù)據(jù),以減少總的數(shù)據(jù)量,這種壓縮稱為有損壓縮。數(shù)據(jù)壓縮技術(shù)的一般處理框圖如圖5.1所示。其中的原始數(shù)據(jù)(又稱源數(shù)據(jù))經(jīng)過壓縮處理,得到的輸出即是被壓縮的數(shù)據(jù)。當這些數(shù)據(jù)所占的存儲空間和傳輸中所用的時間小于原始數(shù)據(jù)時,即實現(xiàn)了數(shù)據(jù)壓縮。在需要時用這些數(shù)據(jù)時,只要經(jīng)過還原(或稱釋放)處理即可。實現(xiàn)方式可用軟件,也可用專用硬件設備來實現(xiàn)。圖3.1數(shù)據(jù)壓縮處理框圖圖3.1數(shù)據(jù)壓縮處理框圖3.2無損壓縮技術(shù)3.2.1無損壓縮技術(shù)概述無損壓縮是對圖像本身的壓縮,是對文件的數(shù)據(jù)存儲方式進行優(yōu)化,采用某種算法表示重復的數(shù)據(jù)信息,文件可以完全還原,不會影響文件內(nèi)容,對于圖像而言,也就不會使圖像細節(jié)有任何損失。由于無損壓縮只是對數(shù)據(jù)本身進行優(yōu)化,所以壓縮比例有限,壓縮比一般為2:1至5:1。這類方法廣泛用于文本數(shù)據(jù)、程序和特殊應用場合的圖像數(shù)據(jù)(如指紋圖像、醫(yī)學圖像等)的壓縮。由于受到壓縮比的限制,因而僅使用無損壓縮方法是不可能解決圖像和數(shù)字視頻的存儲和傳輸問題的。無損壓縮算法可以分為兩大類:一種是基于字典的編碼方法;另一種是基于統(tǒng)計的編碼方法?;谧值涞木幋a方法生成的壓縮文件包含的是定長碼,即采用相同的位數(shù)對數(shù)據(jù)進行編碼。大多數(shù)存儲數(shù)字信息的編碼系統(tǒng)都采用定長碼。例如,常用的ASCⅡ碼就是定長碼,其碼長為1,漢字國標碼也是定長碼,起碼長為2。該種方法所生成的每個碼都代表原文件中數(shù)據(jù)的一個特定序列,常用的壓縮方法有行程編碼和LZW等?;诮y(tǒng)計方法生成的壓縮文件包含的是變長碼,即采用不相同的位數(shù)對數(shù)據(jù)進行編碼,以節(jié)省存儲空間。不同的字符或漢字出現(xiàn)的概率是不同的,有的字符出現(xiàn)的概率非常高,有的則非常低。例如,英文字母E使用的概率為18%,而Z字母僅為0.08%。另外,因在圖像中常含有大面積的單色的圖塊和顏色出現(xiàn)頻繁不同,故在進行數(shù)據(jù)編碼時,就可以通過對那些經(jīng)常出現(xiàn)的數(shù)據(jù)指定較少的位數(shù)來表示,而對那些不常出現(xiàn)的數(shù)據(jù)指定較多的位數(shù)來表示,從而節(jié)省了存儲空間。在實際中,最常用的統(tǒng)計編碼方法是霍夫曼編碼和算術(shù)編碼方法等。3.2.2霍夫曼(huffman)編碼1.huffman編碼的基本原理在無損編碼方法中,Huffman編碼是一種較為有效的編碼方法。Huffman編碼是一種長度不均勻的、平均碼率可以接近信息源熵值的一種編碼。它的編碼基本思想是:對于出現(xiàn)概率大的信息,采用短字長的碼,對于出現(xiàn)概率小的信號采用長字長的碼,以達到縮短平均碼長,從而實現(xiàn)數(shù)據(jù)的壓縮。Huffman編碼過程如下:(1)將信源符號按其出現(xiàn)概率的大小順序排列,然后把出現(xiàn)概率最小的兩個符號的概率值相加,得到一個新的概率。(2)把這個新概率看成是一個新符號的概率,和其它符號再按概率大小排列,再把最后兩個概率相加。(3)重復上述步驟(1)和步驟(2)的做法,直到最后只剩下兩個符號的概率為止。(4)完成以上概率相加作順序排列后,再反過來逐步向前進行編碼,每一步有兩個分支各賦予一個二進制碼,可以對概率大的賦碼元0,對概率小的賦碼元1,亦可對該率達的賦碼元1,對概率小的賦碼元0。Huffman編碼在變字長編碼方法中是最佳的,其碼字平均長度很接近信息符號的熵值。Huffman編碼的最高壓縮效率可以達到8:1,但是在一般實施過程中,很難達到這種壓縮比例。若圖像文件中存在許多擁有長行程的字節(jié)值時,使用行程編碼壓縮算法可能更好。MATLAB的圖像處理工具并沒有提供直接進行圖像編碼的函數(shù)或命令,這是因為MATLAB的圖像輸入、輸出和讀、寫函數(shù)能夠識別各種壓縮圖像格式文件,利用這些函數(shù)就可以間接地實現(xiàn)圖像壓縮。下面介紹Huffman編碼和行程編碼方法的實現(xiàn)。2.Huffman編碼的MATLAB實現(xiàn)Huffman編碼的MATLAB實現(xiàn)程序如下。進行Huffman編碼首先要統(tǒng)計圖像中各種顏色值出現(xiàn)的概率,然后再進行排序編碼。這種編碼方法較為復雜,但是相對于行程編碼方法而言,其效果要好得多。%(1)霍夫曼編碼的實現(xiàn)I=imread('lena.gif');[m,n]=size(i);p1=1;s=m*n;fork=1:mforL=1:nf=0;forb=1:p1-1if(c(b,1)==I(k,L))f=1;break;endendif(f==0)c(p1,1)=I(k,L);p1=p1+1;endendend%上面這段程序?qū)D像的不同顏色統(tǒng)計在數(shù)組c的第一列中forg=1:p1-1p(g)=0;c(g,2)=0;fork=1:mforL=1:nif(c(g,1)==I(k,L))p(g)=p(g)+1;endendendp(g)=p(g)/s;end%這段程序?qū)⑾嗤伾南袼財?shù)占圖像總數(shù)的比例統(tǒng)計在數(shù)組p中pn=0;p0=1;while(1)if(pn>=1.0)break;else[pm,p2]=min(p(1:p1-1));p(p2)=1.1;[pm2,p3]=min(p(1:p1-1));p(p3)=1.1;pn=pm+pm2;p(p1)=pn;tree(p0,1)=p2;tree(p0,2)=p3;p0=p0+1;p1=p1+1;endend%這段程序在數(shù)組p(相同顏色的像素數(shù)占圖像總數(shù)的比例)中找出兩個最小的概率,將它們向加在一起,然后繼續(xù)進行該過程,直到兩概率之和為1為止。fork=1:p0-1tt=k;m1=1;if(or(tree(k,1)<g,tree(k,2)<g))if(tree(k,1)<g)c(tree(k,1),2)=c(tree(k,1),2)+m1;m2=1;while(tt<p0-1)m1=m1*2;forL=tt:p0-1if(tree(L,1)==tt+g)c(tree(k,1),2)=c(tree(k,1),2)+m1;m2=m2+1;tt=1;break;elseif(tree(L,2)==tt+g)m2=m2+1;tt=1;break;endendendc=(tree(k,2)<g)endtt=k;m1=1;if(tree(k,2)<g)m2=1;while(tt<p0-1)m1=m1*2;forL=tt:p0-1if(tree(L,1)==tt+g)c(tree(k,2),2)=c(tree(k,2),2)+m1;m2=m2+1;tt=L;break;elseif(tree(L,2)==tt+g)m2=m2+1;tt=L;break;endendendc(tree(k,2),3)=m2;endendendHuffman編碼的MATLAB實現(xiàn)程序中在數(shù)組p(相同顏色的像素數(shù)占圖像總數(shù)的比例)中找出兩個最小的概率,將它們加在一起,然后繼續(xù)進行該過程,直到?jīng)龈怕手蜑?為止。每次查找兩個最小概率時,將找到的最小概率的序號保存在數(shù)組tree的第一列中,將次小概率的序號保存在第二列中,將兩個概率之和放在數(shù)組p繼像素比例之后。程序中的輸出數(shù)組C的第一維表示顏色值,第二維表示代碼的數(shù)值大小,第三位表示該代碼的位數(shù),將這三個參數(shù)作為碼表在壓縮文件頭部,則其以下的數(shù)組將按照這三個參數(shù)記錄圖像中的所有像素顏色值,于是就可以得到霍夫曼編碼的壓縮文件。值得注意的是:由于MATLAB不支持對某一位(bit)的讀和寫,所以利用該碼表生成的每一個碼字實際上還是8位的,最好使用其它軟件(例如,C語言等)進行改寫,以實現(xiàn)真正的壓縮,事實上MATLAB將圖像寫成JPEG文件也是用C語言實現(xiàn)的。3.2.3行程編碼1.行程編碼的基本原理有些圖像,尤其是計算機生成的圖形往往有許多顏色相同的圖塊。在這些圖塊中,許多連續(xù)的掃描行都具有同一種顏色,或者同一掃描行上有許多連續(xù)的像素都具有相同的顏色值。在這些情況下就可以不需要存儲每一個像素的顏色值,而僅僅存儲一個像素值以及具有相同顏色的像素數(shù)目。這種編碼稱為行程編碼,或稱游程編碼,常用RLE(Run_LengthEncoding)表示。2.行程編碼的MATLAB實現(xiàn)行程編碼的MATLAB實現(xiàn)見附錄一中第五章程序(1),進行行程編碼的方法可以是多種多樣的,這個程序是將一個不同(即不同顏色的像素塊)的起始坐標和灰度值都記錄下來。運行結(jié)果如下:原圖像大小NameSizeBytesClassI40x4012800doublearrayGrandtotalis1600elementsusing12800bytes壓縮圖像大小NameSizeBytesClassJ1x4003200doublearrayGrandtotalis400elementsusing3200bytes圖像的壓縮比4(2)行程編碼的實現(xiàn)I=checkerboard(8);[m,n]=size(I);J=[];fori=1:mvalue=I(i,1);num=1;forj=2:nifI(i,j)==valuenum=num+1;elseJ=[Jnumvalue];num=1;value=I(i,j);endendJ=[Jnumvalue00];%添加的行判斷位00enddisp('原圖像大小')whos('I');disp('壓縮圖像大小')whos('J');disp('圖像的壓縮比')disp(m*n/length(J))3.3有損壓縮編碼3.3.1有損壓縮編碼原理有損壓縮是對圖像本身的改變,所以壓縮比可以很高。JPEG就是這種壓縮方式。用有損壓縮的方法壓縮后的圖像解壓后不可能完全還原原始信息,但只要適當?shù)剡x擇壓縮比,解壓后的圖像也是可以接受的。有損壓縮方式被廣泛地應用于語音、圖像和視頻等的數(shù)據(jù)壓縮中。無損壓縮編碼只是去掉一些冗余信息,圖像信息量都保存下來了。因此,這種圖像的壓縮比受到限制,對于圖像質(zhì)量要求低,傳輸速率要求較高的情況下顯然不太實用。為了獲得較高的壓縮比,常見的圖像壓縮算法如變換編碼壓縮算法等,涉及量化過程,因而都是有損壓縮的算法,通常的壓縮率范圍為。1.預測編碼預測編碼是一種設備簡單質(zhì)量較佳的高效編碼法,是目前應用比較廣泛的編碼技術(shù)之一。常見的DPCM、ADPCM等都屬于預測編碼方式的編碼技術(shù)。通常,圖像的相鄰像素之間具有很強的相關(guān)性,這樣在很大程度上降低了圖像的空間冗余度,可達到壓縮信息的目的。采用預測編碼時,傳輸?shù)牟皇菆D像的實際像素值(色度值或亮度值),而是實際像素值和預測像素值之差,即預測誤差。預測編碼分為無失真預測編碼和有失真預測編碼。無失真預測編碼是指對預測誤差不進行量化,所以不會丟失任何信息。有失真編碼要對預測誤差進行量化處理,而量化必然要產(chǎn)生一定的誤差。2.差分脈沖編碼調(diào)制DPCM編碼法圖像的相鄰像素之間具有很強的相關(guān)性,利用相關(guān)性對當前的像素進行預測,對樣本實際值與預測值之差進行編碼,這樣在很大的程度上減低了圖像的空間冗余度,可達到壓縮信息的目的。計算證明差值的相關(guān)性很小,在某種情況下基本為零。圖3.2DPCM的基本原理圖圖3.2DPCM的基本原理圖DPCM(DifferentialPulseCodeModulation)的基本原理如圖3.2所示。在DPCM編碼方案中,用當前像素的因果性鄰近范圍內(nèi)的k個像素來產(chǎn)生該像素的預測值。先于當前像素值的前k個像素用來構(gòu)成預測值,并以表示,則有。DPCM系統(tǒng)工作時,發(fā)送端先發(fā)送一個起始像素值,接著就只發(fā)送預測誤差值。接收端把接收到的量化誤差與本地算出的預測值相加,即得恢復信號,如果傳輸中沒有誤碼,且接收端和發(fā)端兩個預測器在相同條件下工作,則接受端恢復信號與發(fā)送端原始信號之間的誤差為:(3.1)這正是發(fā)送量化器造成的量化誤差,即整個預測編碼系統(tǒng)的失真完全由量化器產(chǎn)生,不會再產(chǎn)生其它附加誤差。如果在圖3.2的DPCM系統(tǒng)框圖中,當已經(jīng)是數(shù)字信號時,去掉量化器,則有,結(jié)果可以做到。這就表明:不帶量化器的DPCM系統(tǒng)可以完全不失真地恢復原始信號,成為信號保持型編譯碼系統(tǒng);帶有量化器的系統(tǒng),則稱信息非保持型編譯碼系統(tǒng)。3.線性預測編碼DPCM系統(tǒng)的設計包括預測器和量化器的設計,預測器的設計是DPCM系統(tǒng)的核心。預測器設計的越好,差值就越集中分布在零附近,壓縮率就越高。最簡單的預測器是線性預測器,即

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論