電子專業(yè)——數(shù)字圖像處理實驗_第1頁
電子專業(yè)——數(shù)字圖像處理實驗_第2頁
電子專業(yè)——數(shù)字圖像處理實驗_第3頁
電子專業(yè)——數(shù)字圖像處理實驗_第4頁
電子專業(yè)——數(shù)字圖像處理實驗_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、數(shù)字圖像處理實驗講義(Digital Image Processing) 實驗一 圖像的顯示與格式變換一、實驗?zāi)康牧私釳atlab軟件/語言,學(xué)會使用Matlab的圖像處理工具箱(Image Processing Toolbox),使學(xué)生初步具備使用本軟件處理圖像信息的能力,并能夠利用Matlab完成本課程規(guī)定的其他實驗和作業(yè)。熟悉常用的圖像文件格式與格式轉(zhuǎn)換,熟悉圖像矩陣的顯示方法(灰度、索引、黑白、彩色),熟悉圖像矩陣的格式轉(zhuǎn)換。二、實驗要求學(xué)生應(yīng)當(dāng)基本掌握Matlab的操作,掌握Matlab圖像處理工具箱中最常用的函數(shù)的用法。練習(xí)圖像讀寫命令imread和imwrite并進(jìn)行圖像文件格式

2、間的轉(zhuǎn)換。三、實驗設(shè)備與軟件(1)硬件:學(xué)生每人一臺PC機(jī)。(2)軟件:Matlab軟件,包括圖像處理工具箱;實驗所需的圖片。四、實驗內(nèi)容與步驟(1)學(xué)會Matlab的基本操作;(2)使用read函數(shù)讀入圖像rice.png,pout.tif;(3)使用figure函數(shù)創(chuàng)建窗口;(4)使用image/imshow函數(shù)顯示圖像;(5)使用colorbar函數(shù)在圖像的右側(cè)顯示圖像的亮度條。五、思考題(1)簡述Matlab的特點。(2)Matlab可以支持哪些圖像文件格式?(3)說明函數(shù)imread的用途格式以及各種格式所得到圖像的性質(zhì)。(4)用I=imread(rice.png)命令得到的圖像能否

3、進(jìn)行算術(shù)運(yùn)算?六、實驗報告要求描述實驗的基本步驟,用數(shù)據(jù)和圖片給出各個步驟中取得的實驗結(jié)果,并進(jìn)行必要的討論,須包括原始圖像及其計算/處理后的圖像。七、實驗圖像 rice.png pout.tif實驗一 步驟與講解1. matlab 7.0自帶測試圖片目錄D:MATLAB7toolboximagesimdemos (也可能安裝在C盤)2. 測試圖片格式各有不同,rice.png , pout.tif, cameraman.tif,等??梢哉业竭@些圖片右擊鼠標(biāo)查看屬性,即可知道個圖片的格式。3. image函數(shù)是MATLAB提供的最原始的圖像顯示函數(shù),如:a=1,2,3,4;4,5,6,7;8,

4、9,10,11,12;image(a);4. 讀入圖片、顯示圖片的matlab命令 f=imread(rice.png); %讀入圖片size(f) %得出圖片的行數(shù)和列數(shù)imshow(f) %顯示圖片注意,命令行后面有無分號“;” ,無分號的Matlab 會立即顯示該行中指的運(yùn)算的結(jié)果,有分號則不運(yùn)算。分號不能是中文狀態(tài)下的” ;”,必須在英文狀態(tài)下輸入 “;”在Matlab的工作目錄或者搜索路徑下的圖片可以直接打開,不用填寫文件目錄。否則f=imread(D:MATLAB7toolboximagesimdemosrice.png).5. 使用figure函數(shù)創(chuàng)建窗口;f=imread(ri

5、ce.png);g=imread(rice.png); imshow(f),figure,imshow(g) % 當(dāng)用imshow顯示另一幅圖像時會使用新圖像替換舊圖像,而使用figure函數(shù)則可以保持第一副圖像同時顯示第二幅圖像。注意只要用逗號或者分號正確的分隔開了不同的命令,一行中就可以寫幾條命令。任何時候都可以使用分號來取消一個命令行的輸出。6. 使用colorbar函數(shù)在圖像的右側(cè)顯示圖像的亮度條。f=imread(rice.png);imshow(f)colorbar % 此時圖片右側(cè)顯示亮度條。實驗二 圖像的運(yùn)算一、實驗?zāi)康膶W(xué)會使用Matlab對圖像作幾何運(yùn)算,使學(xué)生掌握圖像點運(yùn)算

6、和代數(shù)運(yùn)算的實現(xiàn)方法、體會圖像運(yùn)算效果。了解幾種圖像幾何運(yùn)算的簡單應(yīng)用,培養(yǎng)處理實際圖像的能力,并為課堂教學(xué)提供配套的實踐機(jī)會。二、實驗要求了解Matlab工具箱中關(guān)于圖像運(yùn)算的函數(shù);學(xué)生應(yīng)當(dāng)完成對于給定圖像進(jìn)行點運(yùn)算、代數(shù)運(yùn)算及幾何運(yùn)算等,并能夠正確地評價處理的結(jié)果,能夠從理論上做出合理的解釋。三、實驗設(shè)備與軟件(1)硬件:學(xué)生每人一臺PC機(jī)。(2)軟件:Matlab軟件,包括圖像處理工具箱;實驗所需的圖片。四、實驗內(nèi)容與步驟(一)實驗內(nèi)容(1)選擇一幅圖像,通過圖像點運(yùn)算改變對比度。(2)選擇一幅圖像,做加、減、乘、除代數(shù)運(yùn)算,(3)選擇一幅圖像,改變圖像大小,分別將原圖像放大1.5倍和縮

7、小0.5倍。(4)選擇一幅圖像,分別進(jìn)行順時針和逆時針旋轉(zhuǎn)任意角度,觀察顯示效果。(5)通過交互式操作,從一幅圖像中剪切一個矩形區(qū)域。(6) 圖像鏡像變換,教材43頁例題3.2(7) 圖像旋轉(zhuǎn)變換,教材46頁例題3.3 (二)實驗步驟(1)圖像點運(yùn)算讀入圖像“rice.png”,通過圖像點運(yùn)算改變對比度。rice=imread(rice.png);subplot(131),imshow(rice); I=double(rice); % double把任何類型數(shù)據(jù)轉(zhuǎn)換成雙精度數(shù)值,32位 J=I*0.43+60; rice2=uint8(J); subplot(1 3 2),imshow(ric

8、e2); J=I*1.5-60; rice3=uint8(J); subplot(1 3 3),imshow(rice3);(2)圖像的代數(shù)運(yùn)算a 加法運(yùn)算圖像相加一般用于對同一場景的多幅圖像求平均效果,以便有效地降低具有疊加性質(zhì)的隨機(jī)噪聲。直接采集的圖像品質(zhì)一般都較好,不需要進(jìn)行加法運(yùn)算處理,但是對于那些經(jīng)過長距離模擬通信方式傳送的圖像(如衛(wèi)星圖像),這種處理是必不可少的。在MATLAB7.0中,如果要進(jìn)行兩幅圖像的加法,或者給一幅圖像加上一個常數(shù),可以調(diào)用imadd函數(shù)來實現(xiàn)。imadd函數(shù)將某一幅輸入圖像的每一個像素值與另一幅圖像相應(yīng)的像素值相加,返回相應(yīng)的像素值之和作為輸入圖像。ima

9、dd函數(shù)的調(diào)用格式可參考圖像處理的工具箱。下面的程序可將圖1兩幅圖像疊加在一起,疊加效果如圖2所示。imshow(rice.png); imshow(cameraman.tif); I=imread(rice.png); J=imread(cameraman.tif); K=imadd(I,J,uint16); imshow(K,) 圖1 圖2給圖像的每一個像素加上一個常數(shù)可以使圖像的亮度增加。例如以下程序示例的處理效果如圖3所示。I=imread(rice.png);J=imadd(I,50);subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J)

10、; 圖3b 減法運(yùn)算圖像減法也稱為差分方法,是一種常用于檢測圖像變化及運(yùn)動物體的圖像處理方法。圖像減法可以作為許多圖像處理過程的準(zhǔn)備步驟。例如,可以使用圖像減法來檢測一系列相同場景圖像的差異。圖像減法與閾值化處理的綜合使用通常是建立機(jī)器視覺系統(tǒng)最有效的方法之一。當(dāng)然,在利用圖像減法處理圖像時,往往需要考慮背景的更新機(jī)制,盡量補(bǔ)償因天氣、光線等因素對圖像顯示效果造成的影響。在MATLAB7.0中,使用imsubtract函數(shù)可以將一幅圖像從另一幅圖像中減去,或者從一幅圖像中減去一個常數(shù)。imsubtract函數(shù)將一幅輸入圖像的像素值從另一幅輸入圖像相應(yīng)的像素值中減去,再將相應(yīng)的像素值之差作為輸出

11、圖像相應(yīng)的像素值。以下的程序代碼示例首先根據(jù)原始圖像生成其背景亮度圖像,然后再從原始圖像中將背景亮度圖像減去,從而生成如圖4所示的圖像。I=imread(rice.png);blocks=blkproc(I,32 32,min(x(:);background=imresize(blocks,256 256,bilinear); %雙線性(bilinear)插值Ip=imsubtract(I,background);imshow(Ip,) 圖41. x是一個二維矩陣, x(:)表示將矩陣中的數(shù)據(jù)以一列輸出 例如x=1 2 3;4 5 6;x(:)ans = 1 4 2 5 3 62. blkpr

12、oc()對圖像進(jìn)行分塊處理函數(shù)pic=imread(lena.bmp);img=blkproc(pic,8,8,dct2);該例中把lena.bmp圖片分成8*8像素塊進(jìn)行dct2變換。3. imresize() 函數(shù)用于對圖像做縮放處理B = imresize(A, numrows numcols)numrows和numcols分別指定目標(biāo)圖像的高度和寬度。 顯而易見, 由于這種格式允許圖像縮放后長寬比例和源圖像長寬比例不相同,因此所產(chǎn)生的圖像有可能發(fā)生畸變。B = imresize(A, m) 返回的圖像B的長寬是圖像A的長寬的m倍,即縮放圖像。 m大于1, 則放大圖像; m小于1, 縮小

13、圖像。c 乘法運(yùn)算兩幅圖像進(jìn)行乘法運(yùn)算可以實現(xiàn)掩模操作,即屏蔽掉圖像的某些部分。一幅圖像乘以一個常數(shù)通常被稱為縮放,這是一種常見的圖像處理操作。如果使用的縮放因數(shù)大于1,那么將增強(qiáng)圖像的亮度,如果因數(shù)小于1則會使圖像變暗??s放操作通常將產(chǎn)生比簡單添加像素便宜量自然得多的明暗效果。這是因為該操作能夠更好的維持圖像的相關(guān)對比度。此外,由于時域的卷積或相關(guān)運(yùn)算與頻域的乘積運(yùn)算對應(yīng),因此乘法運(yùn)算有時也作為一種技巧來實現(xiàn)卷積或相關(guān)處理。在MATLAB7.0中,可以使用immultiply函數(shù)實現(xiàn)兩幅圖像的乘法。immultiply函數(shù)將兩幅圖像相應(yīng)的像素值進(jìn)行元素對元素的乘法操作,并將乘法的運(yùn)算結(jié)果作為

14、輸出圖像相應(yīng)的像素值。例如,以下程序示例將使用給定的縮放因數(shù)對圖5所示的圖像進(jìn)行縮放,從而得到如圖6所示的較為明亮的圖像。I=imread(moon.tif);I16=uint16(I);J=immultiply(I16,I16);imshow(I),figure,imshow(J) 圖5 縮放前 圖6 縮放后d 除法運(yùn)算除法運(yùn)算可用于校正成像設(shè)備的非線性影響,這在特殊形態(tài)的圖像(如斷層掃描等醫(yī)學(xué)圖像)處理中經(jīng)常用到。圖像除法也可以用來檢測兩幅圖像間的區(qū)別,但是除法操作給出的是相應(yīng)像素值的變化比率,而不是每個像素的絕對差異,因而圖像除法操作也稱為比率變換。在MATLAB7.0中,可以使用imd

15、ivide函數(shù)進(jìn)行兩幅圖像的除法。imdivide函數(shù)對兩幅輸入圖像的所有相應(yīng)像素執(zhí)行元素對元素的除法操作(點除),并將得到的結(jié)果作為輸出圖像的相應(yīng)像素值。以下程序代碼示例將圖7的兩幅圖進(jìn)行除法操作,得到如圖8所示的效果圖。I=imread(rice.png);subplot(1,2,1),imshow(I);blocks=blkproc(I,32 32,min(x(:);background=imresize(blocks,256 256,bilinear);Ip=imdivide(I,background);subplot(1,2,2),imshow(Ip,) a 圖像一 b 圖像二 圖7

16、 兩幅待相除的圖像 圖8 相除后的圖像(3)圖像的插值運(yùn)算MATLAB7.0中的imresize函數(shù)和imrotate函數(shù)用于二維圖像的差值運(yùn)算,MATLAB7.0的圖像處理工具箱提供了3種插補(bǔ)方法:近鄰(nearest neighbor)插值雙線性(bilinear)插值雙立方(bicubic)插值這三種插補(bǔ)方法的運(yùn)算方式基本類似。對于每種插補(bǔ)方法,為了確定插值像素點的數(shù)據(jù)值,用戶必須在輸入圖像中查找到與輸出像素相應(yīng)的點。但是上述三種插值方法的主要區(qū)別在于其對像素點賦值內(nèi)容的不同:對于近鄰插值來說,輸出像素的賦值為當(dāng)前點的像素點。對于雙線性插值來說,輸出像素的賦值為2*2矩陣所包含的有效點的

17、加權(quán)平均值。對于雙立方插值來說,輸出像素的賦值為4*4矩陣所包含的有效點的加權(quán)平均值。(4)調(diào)整圖像的大小改變圖像的大小可用imresize函數(shù)來調(diào)整。imresize函數(shù)主要特點有:可以指定輸出圖像的大小。可以指定插值方法。可以指定濾波器來阻止混淆。a 指定輸出圖像的大小指定輸出圖像大小的方法有兩種:一是指定放大因子,二是指定輸出圖像的維數(shù)。以下程序代碼示例用指定放大因子的方法說明imresize函數(shù)的使用用法,并將原圖像放大了1.5倍,其效果如圖9所示。 a 改變前 b 改變后 圖9 圖像大小改變前、后的效果對比b 指定插值方法在默認(rèn)的情況下,imresize函數(shù)可用最近鄰插值法來指定輸出

18、圖像的像素值。當(dāng)然,也可以指定其他的插值方法,以下命令行用imresize函數(shù)指定了雙線性插值方法。Y=imresize(X,100 150,bilinear)(5)圖像旋轉(zhuǎn)變換, 完成教材46頁例題3.3程序可通過imrotate函數(shù)來旋轉(zhuǎn)圖像。imrotate函數(shù)主要包括兩個參數(shù):需要旋轉(zhuǎn)的圖像和旋轉(zhuǎn)的角度。如果指定一個正的旋轉(zhuǎn)角度,那么imrotate函數(shù)將使用指定的插值方法和旋轉(zhuǎn)角度將圖像逆時針旋轉(zhuǎn);如果指定一個負(fù)值,那么將按順時針方向旋轉(zhuǎn)。如果命令中沒有指定插補(bǔ)方法,則函數(shù)采用默認(rèn)的最近鄰插補(bǔ)方法。例如以下的程序代碼示例將ic.tif圖像旋轉(zhuǎn)35,其旋轉(zhuǎn)效果如圖10所示。I=imre

19、ad(circuit.tif);J=imrotate(I,35,bilinear);imshow(I);figgure,imshow(J); a 旋轉(zhuǎn)前 b 旋轉(zhuǎn)后 圖10 圖像旋轉(zhuǎn)前、后的顯示效果比較(6) 圖像鏡像變換,完成教材43頁例題3.2程序 五、思考題(1)簡述圖像進(jìn)行代數(shù)運(yùn)算和幾何運(yùn)算特點。(2)結(jié)合實驗內(nèi)容,定性評價圖像經(jīng)過幾何運(yùn)算后的效果以及代數(shù)運(yùn)算和幾何運(yùn)算的適用場合。六、實驗報告要求描述實驗的基本步驟,用數(shù)據(jù)和圖片給出各個步驟中取得的實驗結(jié)果,并進(jìn)行必要的討論,須包括原始圖像及其計算/處理后的圖像。實驗三 圖像的增強(qiáng)一、實驗?zāi)康膶W(xué)習(xí)常見的圖像增強(qiáng)的方法,并實際體會圖像增強(qiáng)

20、前后畫質(zhì)的變化;了解幾種不同增強(qiáng)方式用于不同圖像處理所取得的效果,培養(yǎng)處理實際圖像的能力,并為課堂教學(xué)提供配套的實踐機(jī)會。二、實驗要求利用Matlab工具箱中關(guān)于圖像增強(qiáng)的函數(shù),計算本指導(dǎo)書中指定圖像的直方圖,并對其進(jìn)行灰度增強(qiáng)處理,自己編寫程序?qū)崿F(xiàn)Matlab工具箱中函數(shù)以外的圖像增強(qiáng)算法,對于本指導(dǎo)書中指定的圖像進(jìn)行處理。三、實驗設(shè)備與軟件(1)硬件:學(xué)生每人一臺PC機(jī)。(2)軟件:Matlab軟件,包括圖像處理工具箱;實驗所需的圖片。四、實驗內(nèi)容與步驟(一)實驗內(nèi)容(1)選擇一幅對比度不足的圖像,進(jìn)行灰度變換,增強(qiáng)對比度,顯示增強(qiáng)前后的圖像及其直方圖;(2)選擇一幅直方圖不均勻的圖像,進(jìn)

21、行直方圖均衡化,顯示處理前后的圖像及其直方圖;(3)選擇一副直方圖不均勻的圖像,進(jìn)行直方圖規(guī)定化,顯示處理前后的圖像及其直方圖。 (二)實驗步驟(1)圖像的對比度調(diào)整MATLAB7.0圖像處理工具箱中的imadjust函數(shù)可以實現(xiàn)對圖像的對比度進(jìn)行調(diào)整。imadjust函數(shù)調(diào)用模式為J=imadjust(I,low_in high_in,low_out high_out,gamma)其中l(wèi)ow_in high_in指定輸入圖像需要調(diào)整的灰度范圍,low_out high_out指定輸出圖像的灰度范圍。gamma描述I和J關(guān)系曲線的形狀,默認(rèn)時,gamma=1,表示線性變換。說明:使用imadj

22、ust函數(shù)時,按照以下兩個步驟1、 繪制直方圖,觀察灰度范圍;2、 將灰度范圍轉(zhuǎn)換為0.0-1.0之間的分?jǐn)?shù)。例:I=imread(pout.tif);subplot(2,2,1); imshow(I);subplot(2,2,2); imhist(I); % imhist該函數(shù)用于獲取圖像數(shù)據(jù)直方圖J=imadjust(I,0.3 0.7,0 1); subplot(2,2,3); imshow(J);subplot(2,2,4); imhist(J);注意區(qū)分大小寫注釋:subplot(m,n,p)或者subplot(m n p)。subplot是將多個圖畫到一個平面上的工具。其中,m表示

23、是圖排成m行,n表示圖排成n列,也就是整個figure中有n個圖是排成一列的,一共m行,如果m=2就是表示2行圖。p表示圖所在的位置,p=1表示從左到右從上到下的第一個位置。 簡單的例子把繪圖窗口分成兩行兩列四塊區(qū)域,然后在每個區(qū)域分別作圖,基本步驟:subplot(2 2 1); % 2、2、1之間沒有空格也可以在第一塊繪圖subplot(2 2 2)在第二塊繪圖subplot(2 2 3)在第三塊繪圖subplot(2 2 4)在第四塊繪圖(2)直方圖均衡化MATLAB7.0圖像處理工具箱中,可以使用histeq函數(shù)實現(xiàn)直方圖均衡化。函數(shù)的調(diào)用方法為:J,T=histeq(I,N)該函數(shù)對

24、圖像I進(jìn)行變換,返回有N個灰度級的圖像J,J中的每一個灰度級具有大致相等的像素點,所以圖像J的直方圖比較平坦,N的默認(rèn)值為64, T是轉(zhuǎn)移函數(shù)。例:I=imread(pout.tif);imshow(I);figure,imhist(I);J,T=histeq(I,64);figure,imshow(J);figure,imhist(J);上述命令后將得到4個Figure窗口,可以采用subplot( ) 命令將一個窗口分塊I=imread(pout.tif);subplot(2,2,1),imshow(I); %兩個命令之間用逗號或分號隔開,也可以分兩行寫subplot(2,2,2),imh

25、ist(I);J,T=histeq(I,64);subplot(2,2,3),imshow(J);subplot(2,2,4),imhist(J);原始圖與其直方圖:均衡化后的結(jié)果(3)直方圖規(guī)定化MATLAB7.0圖像處理工具箱中,可以使用histeq函數(shù)實現(xiàn)直方圖規(guī)定化。函數(shù)的調(diào)用方法為: J=histeq(I,hgram)其中hgram用戶指定的矢量,將原始圖像I的直方圖近似變換成hgram,hgram中的每一個元素都在0,1中。I=imread(tire.tif);hgram=0:255;J=histeq(I,hgram);imshow(I);figure,imshow(J);figu

26、re,imhist(I,64);figure,imhist(J,64);五、思考題(1)直方圖的物理含義是什么?(2)結(jié)合實驗內(nèi)容,定性地評價直方圖均衡化和規(guī)定化增強(qiáng)效果。六、實驗報告要求描述實驗的基本步驟,用數(shù)據(jù)和圖片給出各個步驟中取得的實驗結(jié)果,并進(jìn)行必要的討論,須包括原始圖像及其計算/處理后的圖像。實驗四 圖像的濾波(恢復(fù))一、實驗?zāi)康膶W(xué)會使用Matlab對圖像作濾波處理,使學(xué)生掌握濾波算法、體會濾波效果。了解幾種不同濾波方式的使用和使用的場合,培養(yǎng)處理實際圖像的能力,并為課堂教學(xué)提供配套的實踐機(jī)會。二、實驗要求學(xué)生應(yīng)當(dāng)完成對于給定圖像+噪聲,使用平均濾波器、中值濾波器對不太強(qiáng)度的高斯噪

27、聲和椒鹽噪聲進(jìn)行濾波處理;能夠正確地評價處理的結(jié)果,能夠從理論上做出合理的解釋。三、實驗設(shè)備與軟件(1)硬件:學(xué)生每人一臺PC機(jī)。(2)軟件:Matlab軟件,包括圖像處理工具箱;實驗所需的圖片。四、實驗內(nèi)容與步驟(一)實驗內(nèi)容(1)選擇一幅圖像,增強(qiáng)零均值噪聲,采用平均濾波、中值濾波等方法對圖像進(jìn)行濾波,比較濾波效果。(2)選擇一幅圖像,疊加椒鹽噪聲,采用平均濾波、中值濾波等方法對圖像進(jìn)行濾波,比較濾波效果。(3) 巴特沃斯低通濾波器去除圖像椒鹽噪聲,教材112頁例題5.5(4)理想高通濾波器、巴特沃斯高通濾波器、指數(shù)型高通濾波器、梯形高通濾波器圖像增強(qiáng)對比實驗,教材114頁例題5.6(5)

28、考慮濾波器模板大小對平均濾波器濾波效果的影響。(6)考慮濾波器模板大小對中值濾波器濾波效果的影響。(二)實驗步驟MATLAB的圖像處理工具箱提供imnoise函數(shù),可以用該函數(shù)模擬給圖像加不同類型的噪聲。該函數(shù)的調(diào)用格式如下:J=imnoise(I,type,parameters);其中I為加噪聲前的圖像,J為加噪聲后的圖像,type為噪聲類型。imnoise函數(shù)能夠產(chǎn)生5種噪聲。imnoise函數(shù)支持的噪聲類型及參數(shù)說明類 型參 數(shù)說 明Gaussianm,v均值為m,方差為v的高斯噪聲localvarv均值為0,方差為v的高斯噪聲possion無泊松噪聲salt&pepperd密度為d的椒

29、鹽噪聲specklev均值為0,方差為v的均勻分布的隨機(jī)噪聲 MATLAB7.0圖像處理工具箱提供了多種去除圖像噪聲的方法,主要有: 線性濾波 中值濾波 自適應(yīng)濾波(1)線性濾波對一些圖像進(jìn)行線性濾波可以去除圖像中某些類型的噪聲,如采用鄰域平均法的均值濾波器就非常適用于去除通過掃描得到的圖像中的顆粒噪聲。下面程序代碼示例是對一幅含噪圖像進(jìn)行去噪處理,其結(jié)果如圖所示。I=imread(rice.png);I=imnoise(I,gaussian,0,0.02); %為圖像添加均值是0方差是0.02的高斯噪聲,imshow(I); %讀入含噪圖像, h=1 1 1;1 1 1;1 1 1;J=co

30、nv2(I,h); %含噪圖像與矩陣h卷積I=uint16(J); % uint16( )函數(shù)表示轉(zhuǎn)換成無符號16位整數(shù)figure,imshow(I, ) H=h/9;J=conv2(I,H);I=uint16(J);figure,imshow(I, )注釋:1. g=imnoise(f,gaussian,m,var)將均值M,方差為var的高斯噪聲加到圖像f上,默認(rèn)值為均值是0,方差是0.01的噪聲。2. C = conv2(A,B)返回矩陣A和B的二維卷積C 3. imshow(I)就是直接按I的灰度級畫出圖;imshow(I, )是灰度級最小的將被畫成黑色,而最大的灰度級將被畫成白色,

31、其他的不變。如果是low,high,那么灰度級小于low的將被畫成黑色,大于high的將被畫成白色,其他的不變。 a 濾波前原圖像 b 濾波后的圖像(h)C 濾波后的圖像(H) 對噪聲圖像線性濾波的結(jié)果(2)中值濾波中值濾波也是一種典型的低通濾波器,主要目的是保護(hù)圖像邊緣,同時也能去除噪聲。與加權(quán)平均方式的平滑濾波不同,中值濾波是將鄰域中的像素按灰度級排序,取其中間值為輸出像素。中值濾波的效果依賴于兩個要素:鄰域的空間范圍和中值計算中涉及的像素數(shù)(當(dāng)空間范圍較大時,一般只取若干稀疏分布的像素作中值計算)。中值濾波能夠在抑制隨機(jī)噪聲的同時不使邊緣模糊,因而受到歡迎。中值濾波的方法簡單,易于實現(xiàn),

32、而且能較好地保護(hù)邊界,但有時會丟失圖像中的細(xì)線和小塊目標(biāo)區(qū)域。鄰域的大小決定在多少個數(shù)值中進(jìn)行求中值操作,窗口的形狀決定了在什么樣的幾何空間中取元素計算中值。對二維圖像,窗口的形狀可以是矩形、圓形等,它的中心一般位于被處理點上。窗口大小及形狀有時對濾波效果影響較大。一維信號中值濾波具有如下重要性質(zhì):輸入是階躍信號或斜坡信號時,輸出信號和輸入信號相同。若輸入是脈寬小于窗口一半的脈沖p,則該脈沖被濾除,否則輸出和輸入相同。輸入是三角形信號時,輸出時其頂部被削平。二維信號的中值濾波性質(zhì)與之類似。在MATLAB7.0圖像處理工具箱中,提供了medfilt2函數(shù)用于實現(xiàn)中值濾波。例如對加入椒鹽噪聲的圖像

33、eight.tif作中值濾波,程序代碼示例如下,處理結(jié)果如圖所示。I=imread(eight.tif);J=imnoise(I,salt & pepper,0.02);K=medfilt2(J);subplot(1,2,1),imshow(J) subplot(1,2,2),imshow(I) 噪聲圖像中值濾波結(jié)果(3)自適應(yīng)濾波MATLAB7.0圖像處理工具箱中的wiener2函數(shù)可以實現(xiàn)對圖像噪聲的自適應(yīng)濾除。wiener2函數(shù)根據(jù)圖像的局部方差來調(diào)整濾波器的輸出。以下程序代碼示例說明了該函數(shù)的用法,對加入高斯噪聲的圖像eight.tif作維納濾波,結(jié)果如圖所示。I=imread(eig

34、ht.tif);J=imnoise(I,gaussian,0,0.008);K=wiener2(J,5 5);subplot(1,2,1),imshow(J);subplot(1,2,2),imshow(K); 噪聲圖像維納濾波前、后效果注釋:二維維納濾波函數(shù)wiener2K=wiener2(J,5 5),其中J表示待濾波圖像矩陣,5,5表示濾波器窗口大小(4) 巴特沃斯低通濾波器去除圖像椒鹽噪聲,教材112頁例題5.5(5)理想高通濾波器、巴特沃斯高通濾波器、指數(shù)型高通濾波器、梯形高通濾波器圖像增強(qiáng)對比實驗,教材114頁例題5.6五、思考題(1)簡述高斯噪聲和椒鹽噪聲的特點。(2)結(jié)合實驗內(nèi)

35、容,定性評價平均濾波器/中值濾波器對高斯噪聲和椒鹽噪聲的去噪效果。(3)結(jié)合實驗內(nèi)容,定性評價濾波窗口對去噪效果的影響。六、實驗報告要求描述實驗的基本步驟,用數(shù)據(jù)和圖片給出各個步驟中取得的實驗結(jié)果,并進(jìn)行必要的討論,須包括原始圖像及其計算/處理后的圖像。實驗五 圖像邊緣檢測一、實驗?zāi)康膶W(xué)習(xí)常見的邊緣檢測基本方法,了解幾種不同邊緣檢測方式用于不同圖像處理所取得的效果,培養(yǎng)學(xué)生處理實際圖像的能力,并為課堂教學(xué)提供配套的實踐機(jī)會。二、實驗要求了解Matlab工具箱中關(guān)于圖像邊緣檢測的函數(shù);用梯度算子檢測圖像中的邊緣;用Sobel算子檢測圖像中的邊緣;比較兩種方法的處理結(jié)果。三、實驗設(shè)備與軟件(1)硬

36、件:學(xué)生每人一臺PC機(jī)。(2)軟件:Matlab軟件,包括圖像處理工具箱;實驗所需的圖片。四、實驗內(nèi)容與步驟(一)實驗內(nèi)容(1)調(diào)入并顯示圖像rice.png。(2)用Roberts算子檢測圖像中的邊緣信息:(3)用Prewitt算子和Sobel算子檢測圖像中的邊緣信息;(4)用拉普拉斯高斯算子檢測圖像中的邊緣信息。(5)改變閾值,觀察邊緣狀況。(6)將上述幾種處理方法的結(jié)果作比較。(二)實驗步驟在圖像的識別中常需要突出邊緣和輪廓信息,圖像銳化就是增強(qiáng)圖像的邊緣或輪廓。 數(shù)字圖像的邊緣檢測是圖像分割、目標(biāo)區(qū)域識別、區(qū)域形狀提取等圖像分析領(lǐng)域十分重要的基礎(chǔ),也是圖像識別中提取圖像特征的一個重要屬

37、性。在進(jìn)行圖像理解和分析時,第一步往往就是邊緣檢測,目前已成為機(jī)器視覺研究領(lǐng)域最活躍的課題之一,在工程應(yīng)用中占有十分重要的地位。物體的邊緣是以圖像的局部特征不連續(xù)的形式出現(xiàn)的,即是指圖像局部亮度變化最顯著的部分,例如灰度值的突變、顏色的突變、紋理結(jié)構(gòu)的突變等,同時物體的邊緣也是不同區(qū)域的邊界處。圖像具有方向和幅值兩個特征,通常沿邊緣的走向灰度變化平緩,垂直于邊緣走向的像素灰度變化劇烈。根據(jù)灰度變化的特點,可分為階躍型、房頂型和凸緣型。圖像平滑處理是通過平均(類似積分)過程使得圖像邊緣模糊,而圖像銳化處理則是通過微分而使圖像邊緣突出、清晰。常用的微分算子有Roberts算子、Prewitt算子、

38、Sobel算子等。(1)Roberts算子對于離散圖像來說,邊緣檢測算子就是用圖像的垂直和水平查分來逼近梯度算子:f=(f(x,y)-f(x-1,y),f(x,y)-f(x,y-1)因此當(dāng)需要檢測圖像邊緣時,最簡單的方法就是對每個像素計算f ,然后求絕對值,最后進(jìn)行閾值操作就可以實現(xiàn)。Roberts算子就是基于這種思想,該算子如下式所示:=它可以由以下兩個2*2的模板共同實現(xiàn): (2)Prewitt算子和Sobel算子在比較復(fù)雜的圖像中,僅用2*2的Roberts算子得不到較好的邊緣檢測,而相對較復(fù)雜的3*3的Prewitt算子和Sobel算子檢測效果較好。和Roberts算子類似,Prewi

39、tt算子也可以通過以下兩個模板實現(xiàn): 以上兩矩陣分別代表圖像的水平梯度和垂直梯度。如果用Prewitt算子檢測圖像M的邊緣,一般先用水平算子和垂直算子對圖像進(jìn)行卷積,得到兩個矩陣M1和M2,在不考慮邊界因素的時候,它們與原圖像有相同的大小,分別表示圖像M中相同位置對于x和y的偏導(dǎo)數(shù)。然后求M1和M2對應(yīng)位置的兩個數(shù)的平方和,得到一個新的矩陣G。G是M中像素灰度梯度的近似值,然后經(jīng)過閾值操作得到邊緣。Sobel算子與Prewitt算子的區(qū)別僅在于選用的模板不同: 為了方便,下面對上述常用算子的模板進(jìn)行總結(jié),如下表所示:常用邊緣檢測算子模板算子名稱H1H2特點Roberts邊緣定位準(zhǔn)對噪聲敏感Pr

40、ewitt平均、微分對噪聲有抑制作用Sobel加權(quán)平均邊寬=2像素Isotropic Sobel權(quán)值反比于臨點與中心點的距離檢測沿不同方向邊緣時梯度幅度一致MATLAB7.0圖像處理工具箱中提供了專門的邊緣檢測函數(shù),其調(diào)用格式如下:BW=edge(I,method)BW=edge(I,method,thresh)BW=edge(I,method,thresh,direction)BW,thresh=edge(I,method,)其中,I是輸入圖像,method是選用的方法(算子),可以選擇的method有Sobel、Prewitt、Roberts、log、candy、zerocross等??蛇x

41、的參數(shù)有thresh(門限)、sigma(方差)、direction(方向)。下邊的程序代碼示例為分別采用3種不同的邊緣檢測算子對原始圖像rice.png進(jìn)行邊緣提取,檢測結(jié)果如下圖所示。I=imread(rice.png);BW1=edge(I,roberts);figure;imshow(BW1);BW2=edge(I,sobe);figure;imshow(BW2);BW3=edge(I,prewitt);figure;imshow(BW3); 原始圖像 Roberts Sobel Prewitt 不同的邊緣檢測算子進(jìn)行邊緣提取的效果(3)拉普拉斯高斯算子前面都是利用邊緣處的梯度最大(正

42、的或負(fù)的)這一性質(zhì)來進(jìn)行邊緣檢測,即利用了灰度圖像的拐點位置是邊緣的性質(zhì)。除了這一點,邊緣還有另外一個性質(zhì),即在拐點位置處的二階導(dǎo)數(shù)為0,由這一性質(zhì)可以發(fā)現(xiàn)通過尋找二階導(dǎo)數(shù)的零交叉點來尋找邊緣,而Laplacian算子是最常用的二階導(dǎo)數(shù)算子。需要注意的是,一階導(dǎo)數(shù)對噪聲敏感因而不穩(wěn)定,由此,二階導(dǎo)數(shù)對噪聲就會更加敏感從而更加不穩(wěn)定,所以在作Laplacian變換之前需要做平滑。同時又因為卷積是可交換、可結(jié)合的,所以先作高斯卷積,再用Laplacian算子作卷積等價于對原圖像用高斯函數(shù)的Laplacian變換后的濾波作卷積。這樣就得到一個新的濾波器LoG(Laplacian of Gaussia

43、n)濾波器。利用以下代碼可以得到LoG算子的圖像:clearx=-2:0.05:2;y=-2:0.05:2;sigma=0.5;y=y;for i=1:(4/0.05+1) xx(i,:)=x; yy(:,i)=y;endr=-1/(2*pi*sigma4)*(xx.2+yy.2)/(sigma2)-2).*exp(-(xx.2+yy.2)/(2*sigma2);colormap(jet(16);mesh(xx,yy,r);在實際應(yīng)用中,使用LoG模板做卷積,然后尋找那些零交叉像素:如果一個像素值小于-(theta)0,而周圍鄰接的8個像素都大于(theta)0,則這個像素就是零交叉點。利用以

44、下程序代碼,對原始圖像進(jìn)行LoG算子邊緣提取,得到如下圖所示的效果。BW=edge(I,log);figure;imshow(BW);LoG算子邊緣提取結(jié)果比較以上幾個算子,可以發(fā)現(xiàn)用LoG算子進(jìn)行邊緣檢測的效果比較好。(4)Canny算子還有一個很重要的邊緣檢測算子,即Canny算子,它是最優(yōu)的階梯型邊緣(step edge)檢測算子。從以下的三個標(biāo)準(zhǔn)意義來說,Canny邊緣檢測算子對受到白噪聲影響的階躍型邊緣是最優(yōu)的。(1) 檢測標(biāo)準(zhǔn)。不丟失重要的邊緣,不應(yīng)有虛假的邊緣。(2) 定位標(biāo)準(zhǔn)。實際邊緣與檢測到的邊緣位置之間的偏差最小。(3) 單響應(yīng)標(biāo)準(zhǔn)。將多個響應(yīng)降低為單個邊緣響應(yīng)。Canny

45、算子的實現(xiàn)步驟如下:(1) 首先用2D高斯濾波模板與原始圖像進(jìn)行卷積,以消除噪聲。(2) 利用導(dǎo)數(shù)算子(如Prewitt算子、Sobel算子)找到圖像灰度沿著兩個方向的導(dǎo)數(shù),并求出梯度的大小。(3) 利用上步的結(jié)果計算出梯度的方向。(4) 求出邊緣的方向,就可以把邊緣的梯度方向大致分為4種(水平、垂直、45度方向和135度方向),并可以找到這個像素梯度方向的鄰接像素。(5) 遍歷圖像。若某個像素的灰度值與其梯度方向上前后兩個像素的灰度值相比不是最大的,那么將這個像素值置為0,即不是邊緣。(6) 使用累計直方圖計算兩個閾值。凡是大于高閾值的一定是邊緣;凡是小于低閾值的一定不是邊緣。如果檢測結(jié)果在

46、兩個閾值之間,則根據(jù)這個像素的鄰接像素中有沒有超過高閾值的邊緣像素,如果有,則它是邊緣,否則不是。以下程序代碼是利用MATLAB中 edge函數(shù),并采用Canny算子,對原始圖像進(jìn)行邊緣檢測,檢測效果如下圖所示。I=imread(rice.png);BW=edge(I,canny);imshow(BW); Canny算子邊緣檢測效果比較如上幾個算子進(jìn)行邊緣檢測的結(jié)果,可以看出Canny算子檢測結(jié)果不僅能清晰地提取圖像的邊緣,而且邊緣連續(xù)性比較好,這是Canny的優(yōu)良之處。五、思考題(1)在一幅圖像中存在多個方向的邊緣,是否能用拉普拉斯算子只檢測某個特定方向的邊緣?(2)用Sobel算子可以檢測

47、對角線邊緣嗎?(3)選取的閾值對最終檢測得到的邊緣有何影響?六、實驗報告要求描述實驗的基本步驟,用數(shù)據(jù)和圖片給出各個步驟中取得的實驗結(jié)果,并進(jìn)行必要的討論,須包括原始圖像及其計算/處理后的圖像。實驗六 圖像的區(qū)域分割一、實驗?zāi)康膶W(xué)習(xí)常用的區(qū)域分割基本方法,了解幾種不同區(qū)域分割方式用于不同圖像處理所取得的效果,培養(yǎng)學(xué)生處理實際圖像的能力,并為課堂教學(xué)提供配套的實踐機(jī)會。二、實驗要求了解Matlab工具箱中關(guān)于圖像區(qū)域分割的函數(shù);用閾值化方法分割圖像;用分水嶺算法分割圖像;比較兩種方法的處理結(jié)果。三、實驗設(shè)備與軟件(1)硬件:學(xué)生每人一臺PC機(jī)。(2)軟件:Matlab軟件,包括圖像處理工具箱;實

48、驗所需的圖片。四、實驗內(nèi)容與步驟(一)實驗內(nèi)容(1)調(diào)入并顯示圖像rice.png。(2)用迭代式閾值選擇方法分割圖像:(3)用Otsu法閾值選擇法分割圖像;(4)用分水嶺算法分割圖像。(5)將上述幾種處理方法的結(jié)果作比較。(二)實驗步驟在一幅圖像中,人們常常只對其中的部分目標(biāo)感興趣,這些目標(biāo)通常占據(jù)一定的區(qū)域,并且在某些特性(如灰度、輪廓、顏色和紋理等)上和臨近的圖像有差別。這些特性差別可能非常明顯,也可能很細(xì)微,以至肉眼察覺不出來。隨著計算機(jī)圖像處理技術(shù)的發(fā)展,使得人們可以通過計算機(jī)來獲取和處理圖像信息。圖像識別的基礎(chǔ)是圖像分割,其作用是把反映物體真實情況的、占據(jù)不同區(qū)域的、具有不同特性的

49、目標(biāo)區(qū)分開來,并形成數(shù)字特征。圖像分割是圖像理解的基礎(chǔ),而在理論上圖像分割又依賴圖像理解,它們彼此是緊密關(guān)聯(lián)的。圖像分割在一般意義下是十分困難的問題,目前的圖像分割一般作為圖像的前期處理階段,是針對分割對象的技術(shù),最常用到的是利用閾值化處理進(jìn)行的圖像分割。所謂閾值的方法實質(zhì)是利用圖像的灰度直方圖信息得到用于分割的閾值。基于閾值的分割方法可以分為全局閾值的方法好局部閾值的方法,全局閾值的方法是利用整幅圖像的灰度信息,從整個圖像中得到用于分割的閾值,并且根據(jù)該閾值對圖像進(jìn)行分割;而局部閾值的方法是根據(jù)圖像中不同區(qū)域獲得對應(yīng)不同區(qū)域的幾個閾值,利用這些得到的閾值對圖像進(jìn)行分割,也就是一個閾值對應(yīng)圖像

50、中的一個子區(qū)域。該方法的關(guān)鍵是如何合理地選擇閾值,人工選擇法是通過人眼的觀察,應(yīng)用人們對圖像的知識,在分析圖像直方圖的基礎(chǔ)上人工選出合適的閾值,也可以在人工選出閾值后,根據(jù)分割效果不斷地交換操作,從而選擇出較佳的閾值;自動閾值法通常使用灰度直方圖來分析圖像中灰度值的分布,結(jié)合特定的應(yīng)用區(qū)域知識來選取合適的閾值。(1)迭代式閾值選擇迭代式閾值選擇方法的基本思想是:開始時候選擇一個閾值作為初始計值,然后按某種策略不斷地改進(jìn)這一估計值,直到滿意給定的準(zhǔn)則為止。在迭代過程中,關(guān)鍵之處在于選擇什么樣的閾值改進(jìn)策略。好的與之改進(jìn)側(cè)率應(yīng)該具備兩個特征:一是能夠快速收斂;二是在每一個迭代過程中,新產(chǎn)生閾值優(yōu)于

51、上一次的閾值。如下是具體操作步驟:a 選擇圖像灰度的中值作為初始閾值;b 利用此閾值把圖像分割成兩個區(qū)域和,用下式計算區(qū)域和的灰度均值和 c 計算出和后,計算新的閾值d 重復(fù)步驟2和3,直到和的差小于某個給定值。下面為實現(xiàn)迭代式閾值選擇的MATLAB代碼:f=imread(rice.png);subplot(121);imshow(f);title(原始圖像)f=double(f);T=(min(f(:)+max(f(:)/2;done=false;i=0;while done r1=find(fT); Tnew=(mean(f(r1)+mean(f(r2)/2; done=abs(Tnew-

52、T)1; T=Tnew; i=i+1;endf(r1)=0;f(r2)=1;subplot(122);imshow(f);title(迭代閾值二值化圖像) 用迭代式閾值選擇法二值化圖像(2)Otsu法閾值選擇Otsu法是一種使類間方差最大的自動確定閾值的方法,該方法具有簡單、處理速度快的特點,是一種常用的閾值選取方法。MATLAB工具箱提供的graythresh函數(shù)求取閾值采用的就是這種方法。其基本思想是:設(shè)圖像像素數(shù)為N,灰度范圍為0,L-1,對應(yīng)灰度級i的像素數(shù)為,概率為 i=0,1,2,L-1 把圖像中的像素按灰度值用閾值T分成兩類和,由灰度值在0,T之間的像素組成,由灰度值在T+1,L-1之間的像素組成,對于灰度分布概率,整幅圖像的均值為則和的均值為,其

溫馨提示

  • 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

提交評論