




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數字圖像處理實驗講義(Digital Image Processing) 實驗一 圖像的顯示與格式變換一、實驗目的了解Matlab軟件/語言,學會使用Matlab的圖像處理工具箱(Image Processing Toolbox),使學生初步具備使用本軟件處理圖像信息的能力,并能夠利用Matlab完成本課程規定的其他實驗和作業。熟悉常用的圖像文件格式與格式轉換,熟悉圖像矩陣的顯示方法(灰度、索引、黑白、彩色),熟悉圖像矩陣的格式轉換。二、實驗要求學生應當基本掌握Matlab的操作,掌握Matlab圖像處理工具箱中最常用的函數的用法。練習圖像讀寫命令imread和imwrite并進行圖像文件格式
2、間的轉換。三、實驗設備與軟件(1)硬件:學生每人一臺PC機。(2)軟件:Matlab軟件,包括圖像處理工具箱;實驗所需的圖片。四、實驗內容與步驟(1)學會Matlab的基本操作;(2)使用read函數讀入圖像rice.png,pout.tif;(3)使用figure函數創建窗口;(4)使用image/imshow函數顯示圖像;(5)使用colorbar函數在圖像的右側顯示圖像的亮度條。五、思考題(1)簡述Matlab的特點。(2)Matlab可以支持哪些圖像文件格式?(3)說明函數imread的用途格式以及各種格式所得到圖像的性質。(4)用I=imread(rice.png)命令得到的圖像能否
3、進行算術運算?六、實驗報告要求描述實驗的基本步驟,用數據和圖片給出各個步驟中取得的實驗結果,并進行必要的討論,須包括原始圖像及其計算/處理后的圖像。七、實驗圖像 rice.png pout.tif實驗一 步驟與講解1. matlab 7.0自帶測試圖片目錄D:MATLAB7toolboximagesimdemos (也可能安裝在C盤)2. 測試圖片格式各有不同,rice.png , pout.tif, cameraman.tif,等。可以找到這些圖片右擊鼠標查看屬性,即可知道個圖片的格式。3. image函數是MATLAB提供的最原始的圖像顯示函數,如: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) %得出圖片的行數和列數imshow(f) %顯示圖片注意,命令行后面有無分號“;” ,無分號的Matlab 會立即顯示該行中指的運算的結果,有分號則不運算。分號不能是中文狀態下的” ;”,必須在英文狀態下輸入 “;”在Matlab的工作目錄或者搜索路徑下的圖片可以直接打開,不用填寫文件目錄。否則f=imread(D:MATLAB7toolboximagesimdemosrice.png).5. 使用figure函數創建窗口;f=imread(ri
5、ce.png);g=imread(rice.png); imshow(f),figure,imshow(g) % 當用imshow顯示另一幅圖像時會使用新圖像替換舊圖像,而使用figure函數則可以保持第一副圖像同時顯示第二幅圖像。注意只要用逗號或者分號正確的分隔開了不同的命令,一行中就可以寫幾條命令。任何時候都可以使用分號來取消一個命令行的輸出。6. 使用colorbar函數在圖像的右側顯示圖像的亮度條。f=imread(rice.png);imshow(f)colorbar % 此時圖片右側顯示亮度條。實驗二 圖像的運算一、實驗目的學會使用Matlab對圖像作幾何運算,使學生掌握圖像點運算
6、和代數運算的實現方法、體會圖像運算效果。了解幾種圖像幾何運算的簡單應用,培養處理實際圖像的能力,并為課堂教學提供配套的實踐機會。二、實驗要求了解Matlab工具箱中關于圖像運算的函數;學生應當完成對于給定圖像進行點運算、代數運算及幾何運算等,并能夠正確地評價處理的結果,能夠從理論上做出合理的解釋。三、實驗設備與軟件(1)硬件:學生每人一臺PC機。(2)軟件:Matlab軟件,包括圖像處理工具箱;實驗所需的圖片。四、實驗內容與步驟(一)實驗內容(1)選擇一幅圖像,通過圖像點運算改變對比度。(2)選擇一幅圖像,做加、減、乘、除代數運算,(3)選擇一幅圖像,改變圖像大小,分別將原圖像放大1.5倍和縮
7、小0.5倍。(4)選擇一幅圖像,分別進行順時針和逆時針旋轉任意角度,觀察顯示效果。(5)通過交互式操作,從一幅圖像中剪切一個矩形區域。(6) 圖像鏡像變換,教材43頁例題3.2(7) 圖像旋轉變換,教材46頁例題3.3 (二)實驗步驟(1)圖像點運算讀入圖像“rice.png”,通過圖像點運算改變對比度。rice=imread(rice.png);subplot(131),imshow(rice); I=double(rice); % double把任何類型數據轉換成雙精度數值,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)圖像的代數運算a 加法運算圖像相加一般用于對同一場景的多幅圖像求平均效果,以便有效地降低具有疊加性質的隨機噪聲。直接采集的圖像品質一般都較好,不需要進行加法運算處理,但是對于那些經過長距離模擬通信方式傳送的圖像(如衛星圖像),這種處理是必不可少的。在MATLAB7.0中,如果要進行兩幅圖像的加法,或者給一幅圖像加上一個常數,可以調用imadd函數來實現。imadd函數將某一幅輸入圖像的每一個像素值與另一幅圖像相應的像素值相加,返回相應的像素值之和作為輸入圖像。ima
9、dd函數的調用格式可參考圖像處理的工具箱。下面的程序可將圖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給圖像的每一個像素加上一個常數可以使圖像的亮度增加。例如以下程序示例的處理效果如圖3所示。I=imread(rice.png);J=imadd(I,50);subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J)
10、; 圖3b 減法運算圖像減法也稱為差分方法,是一種常用于檢測圖像變化及運動物體的圖像處理方法。圖像減法可以作為許多圖像處理過程的準備步驟。例如,可以使用圖像減法來檢測一系列相同場景圖像的差異。圖像減法與閾值化處理的綜合使用通常是建立機器視覺系統最有效的方法之一。當然,在利用圖像減法處理圖像時,往往需要考慮背景的更新機制,盡量補償因天氣、光線等因素對圖像顯示效果造成的影響。在MATLAB7.0中,使用imsubtract函數可以將一幅圖像從另一幅圖像中減去,或者從一幅圖像中減去一個常數。imsubtract函數將一幅輸入圖像的像素值從另一幅輸入圖像相應的像素值中減去,再將相應的像素值之差作為輸出
11、圖像相應的像素值。以下的程序代碼示例首先根據原始圖像生成其背景亮度圖像,然后再從原始圖像中將背景亮度圖像減去,從而生成如圖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(:)表示將矩陣中的數據以一列輸出 例如x=1 2 3;4 5 6;x(:)ans = 1 4 2 5 3 62. blkpr
12、oc()對圖像進行分塊處理函數pic=imread(lena.bmp);img=blkproc(pic,8,8,dct2);該例中把lena.bmp圖片分成8*8像素塊進行dct2變換。3. imresize() 函數用于對圖像做縮放處理B = imresize(A, numrows numcols)numrows和numcols分別指定目標圖像的高度和寬度。 顯而易見, 由于這種格式允許圖像縮放后長寬比例和源圖像長寬比例不相同,因此所產生的圖像有可能發生畸變。B = imresize(A, m) 返回的圖像B的長寬是圖像A的長寬的m倍,即縮放圖像。 m大于1, 則放大圖像; m小于1, 縮小
13、圖像。c 乘法運算兩幅圖像進行乘法運算可以實現掩模操作,即屏蔽掉圖像的某些部分。一幅圖像乘以一個常數通常被稱為縮放,這是一種常見的圖像處理操作。如果使用的縮放因數大于1,那么將增強圖像的亮度,如果因數小于1則會使圖像變暗。縮放操作通常將產生比簡單添加像素便宜量自然得多的明暗效果。這是因為該操作能夠更好的維持圖像的相關對比度。此外,由于時域的卷積或相關運算與頻域的乘積運算對應,因此乘法運算有時也作為一種技巧來實現卷積或相關處理。在MATLAB7.0中,可以使用immultiply函數實現兩幅圖像的乘法。immultiply函數將兩幅圖像相應的像素值進行元素對元素的乘法操作,并將乘法的運算結果作為
14、輸出圖像相應的像素值。例如,以下程序示例將使用給定的縮放因數對圖5所示的圖像進行縮放,從而得到如圖6所示的較為明亮的圖像。I=imread(moon.tif);I16=uint16(I);J=immultiply(I16,I16);imshow(I),figure,imshow(J) 圖5 縮放前 圖6 縮放后d 除法運算除法運算可用于校正成像設備的非線性影響,這在特殊形態的圖像(如斷層掃描等醫學圖像)處理中經常用到。圖像除法也可以用來檢測兩幅圖像間的區別,但是除法操作給出的是相應像素值的變化比率,而不是每個像素的絕對差異,因而圖像除法操作也稱為比率變換。在MATLAB7.0中,可以使用imd
15、ivide函數進行兩幅圖像的除法。imdivide函數對兩幅輸入圖像的所有相應像素執行元素對元素的除法操作(點除),并將得到的結果作為輸出圖像的相應像素值。以下程序代碼示例將圖7的兩幅圖進行除法操作,得到如圖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)圖像的插值運算MATLAB7.0中的imresize函數和imrotate函數用于二維圖像的差值運算,MATLAB7.0的圖像處理工具箱提供了3種插補方法:近鄰(nearest neighbor)插值雙線性(bilinear)插值雙立方(bicubic)插值這三種插補方法的運算方式基本類似。對于每種插補方法,為了確定插值像素點的數據值,用戶必須在輸入圖像中查找到與輸出像素相應的點。但是上述三種插值方法的主要區別在于其對像素點賦值內容的不同:對于近鄰插值來說,輸出像素的賦值為當前點的像素點。對于雙線性插值來說,輸出像素的賦值為2*2矩陣所包含的有效點的
17、加權平均值。對于雙立方插值來說,輸出像素的賦值為4*4矩陣所包含的有效點的加權平均值。(4)調整圖像的大小改變圖像的大小可用imresize函數來調整。imresize函數主要特點有:可以指定輸出圖像的大小。可以指定插值方法。可以指定濾波器來阻止混淆。a 指定輸出圖像的大小指定輸出圖像大小的方法有兩種:一是指定放大因子,二是指定輸出圖像的維數。以下程序代碼示例用指定放大因子的方法說明imresize函數的使用用法,并將原圖像放大了1.5倍,其效果如圖9所示。 a 改變前 b 改變后 圖9 圖像大小改變前、后的效果對比b 指定插值方法在默認的情況下,imresize函數可用最近鄰插值法來指定輸出
18、圖像的像素值。當然,也可以指定其他的插值方法,以下命令行用imresize函數指定了雙線性插值方法。Y=imresize(X,100 150,bilinear)(5)圖像旋轉變換, 完成教材46頁例題3.3程序可通過imrotate函數來旋轉圖像。imrotate函數主要包括兩個參數:需要旋轉的圖像和旋轉的角度。如果指定一個正的旋轉角度,那么imrotate函數將使用指定的插值方法和旋轉角度將圖像逆時針旋轉;如果指定一個負值,那么將按順時針方向旋轉。如果命令中沒有指定插補方法,則函數采用默認的最近鄰插補方法。例如以下的程序代碼示例將ic.tif圖像旋轉35,其旋轉效果如圖10所示。I=imre
19、ad(circuit.tif);J=imrotate(I,35,bilinear);imshow(I);figgure,imshow(J); a 旋轉前 b 旋轉后 圖10 圖像旋轉前、后的顯示效果比較(6) 圖像鏡像變換,完成教材43頁例題3.2程序 五、思考題(1)簡述圖像進行代數運算和幾何運算特點。(2)結合實驗內容,定性評價圖像經過幾何運算后的效果以及代數運算和幾何運算的適用場合。六、實驗報告要求描述實驗的基本步驟,用數據和圖片給出各個步驟中取得的實驗結果,并進行必要的討論,須包括原始圖像及其計算/處理后的圖像。實驗三 圖像的增強一、實驗目的學習常見的圖像增強的方法,并實際體會圖像增強
20、前后畫質的變化;了解幾種不同增強方式用于不同圖像處理所取得的效果,培養處理實際圖像的能力,并為課堂教學提供配套的實踐機會。二、實驗要求利用Matlab工具箱中關于圖像增強的函數,計算本指導書中指定圖像的直方圖,并對其進行灰度增強處理,自己編寫程序實現Matlab工具箱中函數以外的圖像增強算法,對于本指導書中指定的圖像進行處理。三、實驗設備與軟件(1)硬件:學生每人一臺PC機。(2)軟件:Matlab軟件,包括圖像處理工具箱;實驗所需的圖片。四、實驗內容與步驟(一)實驗內容(1)選擇一幅對比度不足的圖像,進行灰度變換,增強對比度,顯示增強前后的圖像及其直方圖;(2)選擇一幅直方圖不均勻的圖像,進
21、行直方圖均衡化,顯示處理前后的圖像及其直方圖;(3)選擇一副直方圖不均勻的圖像,進行直方圖規定化,顯示處理前后的圖像及其直方圖。 (二)實驗步驟(1)圖像的對比度調整MATLAB7.0圖像處理工具箱中的imadjust函數可以實現對圖像的對比度進行調整。imadjust函數調用模式為J=imadjust(I,low_in high_in,low_out high_out,gamma)其中low_in high_in指定輸入圖像需要調整的灰度范圍,low_out high_out指定輸出圖像的灰度范圍。gamma描述I和J關系曲線的形狀,默認時,gamma=1,表示線性變換。說明:使用imadj
22、ust函數時,按照以下兩個步驟1、 繪制直方圖,觀察灰度范圍;2、 將灰度范圍轉換為0.0-1.0之間的分數。例:I=imread(pout.tif);subplot(2,2,1); imshow(I);subplot(2,2,2); imhist(I); % imhist該函數用于獲取圖像數據直方圖J=imadjust(I,0.3 0.7,0 1); subplot(2,2,3); imshow(J);subplot(2,2,4); imhist(J);注意區分大小寫注釋:subplot(m,n,p)或者subplot(m n p)。subplot是將多個圖畫到一個平面上的工具。其中,m表示
23、是圖排成m行,n表示圖排成n列,也就是整個figure中有n個圖是排成一列的,一共m行,如果m=2就是表示2行圖。p表示圖所在的位置,p=1表示從左到右從上到下的第一個位置。 簡單的例子把繪圖窗口分成兩行兩列四塊區域,然后在每個區域分別作圖,基本步驟:subplot(2 2 1); % 2、2、1之間沒有空格也可以在第一塊繪圖subplot(2 2 2)在第二塊繪圖subplot(2 2 3)在第三塊繪圖subplot(2 2 4)在第四塊繪圖(2)直方圖均衡化MATLAB7.0圖像處理工具箱中,可以使用histeq函數實現直方圖均衡化。函數的調用方法為:J,T=histeq(I,N)該函數對
24、圖像I進行變換,返回有N個灰度級的圖像J,J中的每一個灰度級具有大致相等的像素點,所以圖像J的直方圖比較平坦,N的默認值為64, T是轉移函數。例: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);原始圖與其直方圖:均衡化后的結果(3)直方圖規定化MATLAB7.0圖像處理工具箱中,可以使用histeq函數實現直方圖規定化。函數的調用方法為: 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)結合實驗內容,定性地評價直方圖均衡化和規定化增強效果。六、實驗報告要求描述實驗的基本步驟,用數據和圖片給出各個步驟中取得的實驗結果,并進行必要的討論,須包括原始圖像及其計算/處理后的圖像。實驗四 圖像的濾波(恢復)一、實驗目的學會使用Matlab對圖像作濾波處理,使學生掌握濾波算法、體會濾波效果。了解幾種不同濾波方式的使用和使用的場合,培養處理實際圖像的能力,并為課堂教學提供配套的實踐機會。二、實驗要求學生應當完成對于給定圖像+噪聲,使用平均濾波器、中值濾波器對不太強度的高斯噪
27、聲和椒鹽噪聲進行濾波處理;能夠正確地評價處理的結果,能夠從理論上做出合理的解釋。三、實驗設備與軟件(1)硬件:學生每人一臺PC機。(2)軟件:Matlab軟件,包括圖像處理工具箱;實驗所需的圖片。四、實驗內容與步驟(一)實驗內容(1)選擇一幅圖像,增強零均值噪聲,采用平均濾波、中值濾波等方法對圖像進行濾波,比較濾波效果。(2)選擇一幅圖像,疊加椒鹽噪聲,采用平均濾波、中值濾波等方法對圖像進行濾波,比較濾波效果。(3) 巴特沃斯低通濾波器去除圖像椒鹽噪聲,教材112頁例題5.5(4)理想高通濾波器、巴特沃斯高通濾波器、指數型高通濾波器、梯形高通濾波器圖像增強對比實驗,教材114頁例題5.6(5)
28、考慮濾波器模板大小對平均濾波器濾波效果的影響。(6)考慮濾波器模板大小對中值濾波器濾波效果的影響。(二)實驗步驟MATLAB的圖像處理工具箱提供imnoise函數,可以用該函數模擬給圖像加不同類型的噪聲。該函數的調用格式如下:J=imnoise(I,type,parameters);其中I為加噪聲前的圖像,J為加噪聲后的圖像,type為噪聲類型。imnoise函數能夠產生5種噪聲。imnoise函數支持的噪聲類型及參數說明類 型參 數說 明Gaussianm,v均值為m,方差為v的高斯噪聲localvarv均值為0,方差為v的高斯噪聲possion無泊松噪聲salt&pepperd密度為d的椒
29、鹽噪聲specklev均值為0,方差為v的均勻分布的隨機噪聲 MATLAB7.0圖像處理工具箱提供了多種去除圖像噪聲的方法,主要有: 線性濾波 中值濾波 自適應濾波(1)線性濾波對一些圖像進行線性濾波可以去除圖像中某些類型的噪聲,如采用鄰域平均法的均值濾波器就非常適用于去除通過掃描得到的圖像中的顆粒噪聲。下面程序代碼示例是對一幅含噪圖像進行去噪處理,其結果如圖所示。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( )函數表示轉換成無符號16位整數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上,默認值為均值是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) 對噪聲圖像線性濾波的結果(2)中值濾波中值濾波也是一種典型的低通濾波器,主要目的是保護圖像邊緣,同時也能去除噪聲。與加權平均方式的平滑濾波不同,中值濾波是將鄰域中的像素按灰度級排序,取其中間值為輸出像素。中值濾波的效果依賴于兩個要素:鄰域的空間范圍和中值計算中涉及的像素數(當空間范圍較大時,一般只取若干稀疏分布的像素作中值計算)。中值濾波能夠在抑制隨機噪聲的同時不使邊緣模糊,因而受到歡迎。中值濾波的方法簡單,易于實現,
32、而且能較好地保護邊界,但有時會丟失圖像中的細線和小塊目標區域。鄰域的大小決定在多少個數值中進行求中值操作,窗口的形狀決定了在什么樣的幾何空間中取元素計算中值。對二維圖像,窗口的形狀可以是矩形、圓形等,它的中心一般位于被處理點上。窗口大小及形狀有時對濾波效果影響較大。一維信號中值濾波具有如下重要性質:輸入是階躍信號或斜坡信號時,輸出信號和輸入信號相同。若輸入是脈寬小于窗口一半的脈沖p,則該脈沖被濾除,否則輸出和輸入相同。輸入是三角形信號時,輸出時其頂部被削平。二維信號的中值濾波性質與之類似。在MATLAB7.0圖像處理工具箱中,提供了medfilt2函數用于實現中值濾波。例如對加入椒鹽噪聲的圖像
33、eight.tif作中值濾波,程序代碼示例如下,處理結果如圖所示。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) 噪聲圖像中值濾波結果(3)自適應濾波MATLAB7.0圖像處理工具箱中的wiener2函數可以實現對圖像噪聲的自適應濾除。wiener2函數根據圖像的局部方差來調整濾波器的輸出。以下程序代碼示例說明了該函數的用法,對加入高斯噪聲的圖像eight.tif作維納濾波,結果如圖所示。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); 噪聲圖像維納濾波前、后效果注釋:二維維納濾波函數wiener2K=wiener2(J,5 5),其中J表示待濾波圖像矩陣,5,5表示濾波器窗口大小(4) 巴特沃斯低通濾波器去除圖像椒鹽噪聲,教材112頁例題5.5(5)理想高通濾波器、巴特沃斯高通濾波器、指數型高通濾波器、梯形高通濾波器圖像增強對比實驗,教材114頁例題5.6五、思考題(1)簡述高斯噪聲和椒鹽噪聲的特點。(2)結合實驗內
35、容,定性評價平均濾波器/中值濾波器對高斯噪聲和椒鹽噪聲的去噪效果。(3)結合實驗內容,定性評價濾波窗口對去噪效果的影響。六、實驗報告要求描述實驗的基本步驟,用數據和圖片給出各個步驟中取得的實驗結果,并進行必要的討論,須包括原始圖像及其計算/處理后的圖像。實驗五 圖像邊緣檢測一、實驗目的學習常見的邊緣檢測基本方法,了解幾種不同邊緣檢測方式用于不同圖像處理所取得的效果,培養學生處理實際圖像的能力,并為課堂教學提供配套的實踐機會。二、實驗要求了解Matlab工具箱中關于圖像邊緣檢測的函數;用梯度算子檢測圖像中的邊緣;用Sobel算子檢測圖像中的邊緣;比較兩種方法的處理結果。三、實驗設備與軟件(1)硬
36、件:學生每人一臺PC機。(2)軟件:Matlab軟件,包括圖像處理工具箱;實驗所需的圖片。四、實驗內容與步驟(一)實驗內容(1)調入并顯示圖像rice.png。(2)用Roberts算子檢測圖像中的邊緣信息:(3)用Prewitt算子和Sobel算子檢測圖像中的邊緣信息;(4)用拉普拉斯高斯算子檢測圖像中的邊緣信息。(5)改變閾值,觀察邊緣狀況。(6)將上述幾種處理方法的結果作比較。(二)實驗步驟在圖像的識別中常需要突出邊緣和輪廓信息,圖像銳化就是增強圖像的邊緣或輪廓。 數字圖像的邊緣檢測是圖像分割、目標區域識別、區域形狀提取等圖像分析領域十分重要的基礎,也是圖像識別中提取圖像特征的一個重要屬
37、性。在進行圖像理解和分析時,第一步往往就是邊緣檢測,目前已成為機器視覺研究領域最活躍的課題之一,在工程應用中占有十分重要的地位。物體的邊緣是以圖像的局部特征不連續的形式出現的,即是指圖像局部亮度變化最顯著的部分,例如灰度值的突變、顏色的突變、紋理結構的突變等,同時物體的邊緣也是不同區域的邊界處。圖像具有方向和幅值兩個特征,通常沿邊緣的走向灰度變化平緩,垂直于邊緣走向的像素灰度變化劇烈。根據灰度變化的特點,可分為階躍型、房頂型和凸緣型。圖像平滑處理是通過平均(類似積分)過程使得圖像邊緣模糊,而圖像銳化處理則是通過微分而使圖像邊緣突出、清晰。常用的微分算子有Roberts算子、Prewitt算子、
38、Sobel算子等。(1)Roberts算子對于離散圖像來說,邊緣檢測算子就是用圖像的垂直和水平查分來逼近梯度算子:f=(f(x,y)-f(x-1,y),f(x,y)-f(x,y-1)因此當需要檢測圖像邊緣時,最簡單的方法就是對每個像素計算f ,然后求絕對值,最后進行閾值操作就可以實現。Roberts算子就是基于這種思想,該算子如下式所示:=它可以由以下兩個2*2的模板共同實現: (2)Prewitt算子和Sobel算子在比較復雜的圖像中,僅用2*2的Roberts算子得不到較好的邊緣檢測,而相對較復雜的3*3的Prewitt算子和Sobel算子檢測效果較好。和Roberts算子類似,Prewi
39、tt算子也可以通過以下兩個模板實現: 以上兩矩陣分別代表圖像的水平梯度和垂直梯度。如果用Prewitt算子檢測圖像M的邊緣,一般先用水平算子和垂直算子對圖像進行卷積,得到兩個矩陣M1和M2,在不考慮邊界因素的時候,它們與原圖像有相同的大小,分別表示圖像M中相同位置對于x和y的偏導數。然后求M1和M2對應位置的兩個數的平方和,得到一個新的矩陣G。G是M中像素灰度梯度的近似值,然后經過閾值操作得到邊緣。Sobel算子與Prewitt算子的區別僅在于選用的模板不同: 為了方便,下面對上述常用算子的模板進行總結,如下表所示:常用邊緣檢測算子模板算子名稱H1H2特點Roberts邊緣定位準對噪聲敏感Pr
40、ewitt平均、微分對噪聲有抑制作用Sobel加權平均邊寬=2像素Isotropic Sobel權值反比于臨點與中心點的距離檢測沿不同方向邊緣時梯度幅度一致MATLAB7.0圖像處理工具箱中提供了專門的邊緣檢測函數,其調用格式如下: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等。可選
41、的參數有thresh(門限)、sigma(方差)、direction(方向)。下邊的程序代碼示例為分別采用3種不同的邊緣檢測算子對原始圖像rice.png進行邊緣提取,檢測結果如下圖所示。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 不同的邊緣檢測算子進行邊緣提取的效果(3)拉普拉斯高斯算子前面都是利用邊緣處的梯度最大(正
42、的或負的)這一性質來進行邊緣檢測,即利用了灰度圖像的拐點位置是邊緣的性質。除了這一點,邊緣還有另外一個性質,即在拐點位置處的二階導數為0,由這一性質可以發現通過尋找二階導數的零交叉點來尋找邊緣,而Laplacian算子是最常用的二階導數算子。需要注意的是,一階導數對噪聲敏感因而不穩定,由此,二階導數對噪聲就會更加敏感從而更加不穩定,所以在作Laplacian變換之前需要做平滑。同時又因為卷積是可交換、可結合的,所以先作高斯卷積,再用Laplacian算子作卷積等價于對原圖像用高斯函數的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);在實際應用中,使用LoG模板做卷積,然后尋找那些零交叉像素:如果一個像素值小于-(theta)0,而周圍鄰接的8個像素都大于(theta)0,則這個像素就是零交叉點。利用以
44、下程序代碼,對原始圖像進行LoG算子邊緣提取,得到如下圖所示的效果。BW=edge(I,log);figure;imshow(BW);LoG算子邊緣提取結果比較以上幾個算子,可以發現用LoG算子進行邊緣檢測的效果比較好。(4)Canny算子還有一個很重要的邊緣檢測算子,即Canny算子,它是最優的階梯型邊緣(step edge)檢測算子。從以下的三個標準意義來說,Canny邊緣檢測算子對受到白噪聲影響的階躍型邊緣是最優的。(1) 檢測標準。不丟失重要的邊緣,不應有虛假的邊緣。(2) 定位標準。實際邊緣與檢測到的邊緣位置之間的偏差最小。(3) 單響應標準。將多個響應降低為單個邊緣響應。Canny
45、算子的實現步驟如下:(1) 首先用2D高斯濾波模板與原始圖像進行卷積,以消除噪聲。(2) 利用導數算子(如Prewitt算子、Sobel算子)找到圖像灰度沿著兩個方向的導數,并求出梯度的大小。(3) 利用上步的結果計算出梯度的方向。(4) 求出邊緣的方向,就可以把邊緣的梯度方向大致分為4種(水平、垂直、45度方向和135度方向),并可以找到這個像素梯度方向的鄰接像素。(5) 遍歷圖像。若某個像素的灰度值與其梯度方向上前后兩個像素的灰度值相比不是最大的,那么將這個像素值置為0,即不是邊緣。(6) 使用累計直方圖計算兩個閾值。凡是大于高閾值的一定是邊緣;凡是小于低閾值的一定不是邊緣。如果檢測結果在
46、兩個閾值之間,則根據這個像素的鄰接像素中有沒有超過高閾值的邊緣像素,如果有,則它是邊緣,否則不是。以下程序代碼是利用MATLAB中 edge函數,并采用Canny算子,對原始圖像進行邊緣檢測,檢測效果如下圖所示。I=imread(rice.png);BW=edge(I,canny);imshow(BW); Canny算子邊緣檢測效果比較如上幾個算子進行邊緣檢測的結果,可以看出Canny算子檢測結果不僅能清晰地提取圖像的邊緣,而且邊緣連續性比較好,這是Canny的優良之處。五、思考題(1)在一幅圖像中存在多個方向的邊緣,是否能用拉普拉斯算子只檢測某個特定方向的邊緣?(2)用Sobel算子可以檢測
47、對角線邊緣嗎?(3)選取的閾值對最終檢測得到的邊緣有何影響?六、實驗報告要求描述實驗的基本步驟,用數據和圖片給出各個步驟中取得的實驗結果,并進行必要的討論,須包括原始圖像及其計算/處理后的圖像。實驗六 圖像的區域分割一、實驗目的學習常用的區域分割基本方法,了解幾種不同區域分割方式用于不同圖像處理所取得的效果,培養學生處理實際圖像的能力,并為課堂教學提供配套的實踐機會。二、實驗要求了解Matlab工具箱中關于圖像區域分割的函數;用閾值化方法分割圖像;用分水嶺算法分割圖像;比較兩種方法的處理結果。三、實驗設備與軟件(1)硬件:學生每人一臺PC機。(2)軟件:Matlab軟件,包括圖像處理工具箱;實
48、驗所需的圖片。四、實驗內容與步驟(一)實驗內容(1)調入并顯示圖像rice.png。(2)用迭代式閾值選擇方法分割圖像:(3)用Otsu法閾值選擇法分割圖像;(4)用分水嶺算法分割圖像。(5)將上述幾種處理方法的結果作比較。(二)實驗步驟在一幅圖像中,人們常常只對其中的部分目標感興趣,這些目標通常占據一定的區域,并且在某些特性(如灰度、輪廓、顏色和紋理等)上和臨近的圖像有差別。這些特性差別可能非常明顯,也可能很細微,以至肉眼察覺不出來。隨著計算機圖像處理技術的發展,使得人們可以通過計算機來獲取和處理圖像信息。圖像識別的基礎是圖像分割,其作用是把反映物體真實情況的、占據不同區域的、具有不同特性的
49、目標區分開來,并形成數字特征。圖像分割是圖像理解的基礎,而在理論上圖像分割又依賴圖像理解,它們彼此是緊密關聯的。圖像分割在一般意義下是十分困難的問題,目前的圖像分割一般作為圖像的前期處理階段,是針對分割對象的技術,最常用到的是利用閾值化處理進行的圖像分割。所謂閾值的方法實質是利用圖像的灰度直方圖信息得到用于分割的閾值。基于閾值的分割方法可以分為全局閾值的方法好局部閾值的方法,全局閾值的方法是利用整幅圖像的灰度信息,從整個圖像中得到用于分割的閾值,并且根據該閾值對圖像進行分割;而局部閾值的方法是根據圖像中不同區域獲得對應不同區域的幾個閾值,利用這些得到的閾值對圖像進行分割,也就是一個閾值對應圖像
50、中的一個子區域。該方法的關鍵是如何合理地選擇閾值,人工選擇法是通過人眼的觀察,應用人們對圖像的知識,在分析圖像直方圖的基礎上人工選出合適的閾值,也可以在人工選出閾值后,根據分割效果不斷地交換操作,從而選擇出較佳的閾值;自動閾值法通常使用灰度直方圖來分析圖像中灰度值的分布,結合特定的應用區域知識來選取合適的閾值。(1)迭代式閾值選擇迭代式閾值選擇方法的基本思想是:開始時候選擇一個閾值作為初始計值,然后按某種策略不斷地改進這一估計值,直到滿意給定的準則為止。在迭代過程中,關鍵之處在于選擇什么樣的閾值改進策略。好的與之改進側率應該具備兩個特征:一是能夠快速收斂;二是在每一個迭代過程中,新產生閾值優于
51、上一次的閾值。如下是具體操作步驟:a 選擇圖像灰度的中值作為初始閾值;b 利用此閾值把圖像分割成兩個區域和,用下式計算區域和的灰度均值和 c 計算出和后,計算新的閾值d 重復步驟2和3,直到和的差小于某個給定值。下面為實現迭代式閾值選擇的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函數求取閾值采用的就是這種方法。其基本思想是:設圖像像素數為N,灰度范圍為0,L-1,對應灰度級i的像素數為,概率為 i=0,1,2,L-1 把圖像中的像素按灰度值用閾值T分成兩類和,由灰度值在0,T之間的像素組成,由灰度值在T+1,L-1之間的像素組成,對于灰度分布概率,整幅圖像的均值為則和的均值為,其
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《涉外公證講座》課件
- 四川民族學院《文學風格論》2023-2024學年第二學期期末試卷
- 江蘇海洋大學《景觀建筑與外部環境設計》2023-2024學年第二學期期末試卷
- 內蒙古烏蘭察布集寧二中2024-2025學年高三下學期高考考前質量檢測試題三(5月模擬)數學試題含解析
- 江蘇省灌云縣高中名校2025年高三延長假期綜合考試英語試題含解析
- 遼寧省丹東市重點中學2024-2025學年高三2月份自測歷史試題含解析
- 昔陽縣2025年小升初總復習數學測試題含解析
- 江西省鄱陽縣第二中學2025年初三五月份適應性考試物理試題(文史類)試題含解析
- 新疆鐵道職業技術學院《綜合英語III》2023-2024學年第二學期期末試卷
- 江蘇省南京師范大學連云港華杰實驗學校2024-2025學年高三高考考前最后一卷英語試題含解析
- 職業健康與環境保護的重要性
- 前置胎盤的教學查房課件
- 結構主義詩學
- 2022年初中英語新課標解讀課件
- 工程全過程造價咨詢服務方案(技術方案)
- 匹茲堡全球創新城市-案例研究
- 項目服務保障措施
- 三級安全教育登記卡(新)
- 自身免疫性腦炎診治護理查房
- 小學生必背古詩詞75+80首電子版
- 藥學專業副主任藥師試題
評論
0/150
提交評論