matlab imdilate_MATLAB--数字图像处理 数学形态学应用
一、實驗名稱
數學形態學應用
二、實驗目的
1.熟悉MATLAB軟件的使用。
2.掌握數字圖像處理中的腐蝕、膨脹定義及操作。
3.掌握圖像的開運算、閉運算
三、實驗內容
1.在長方形目標物A中,內部有噪聲導致的空洞,周圍有噪聲塊。編寫MATLAB程序,達到處理后效果:目標本身除了4個角的直角變為圓角外沒有變化。
2.利用擊中擊不中原理,確定所需判斷圖像在圖像中的位置
四、實驗儀器與設備
Win10 64位電腦
MATLAB R2017a
五、實驗原理
1.腐蝕
把結構元素B平移a后得到Ba,若Ba包含于X,我們記下這個a點,所有滿足上述條件的a點組成的集合稱做X被B腐蝕(Erosion)的結果。用公式表示為:E(X)={a| Ba∈X}=XB。原理圖如下:
2.膨脹
膨脹(dilation)可以看做是腐蝕的對偶運算,其定義是:把結構元素B平移a后得到Ba,若Ba擊中X,我們記下這個a點。所有滿足上述條件的a點組成的集合稱做X被B膨脹的結果。用公式表示為:D(X)={a | Ba↑X}=X B,如圖6.13所示。圖6.13中X是被處理的對象,B是結構元素,不難知道,對于任意一個在陰影部分的點a,Ba擊中X,所以X被B膨脹的結果就是那個陰影部分。陰影部分包括X的所有范圍,就象X膨脹了一圈似的,這就是為什么叫膨脹的原因。原理圖如下:
3.擊中與擊不中原理
擊中擊不中變換(HMT)需要兩個結構元素B1和B2,合成一個結構元素對B=(B1,B2)一個用于探測圖像內部,作為擊中部分;另一個用于探測圖像外部,作為擊不中部分。顯然,B1和B2是不應該相連接的,即B1∩B2=Φ。擊中擊不中變換的數學表達式為:
g(x, y)=hitmiss[f(x, y), B]=erode[f(x, y), B1]AND erode[fc(x, y), B2]
其中,fc(x,y)表示的是f(x,y)的補集。
Hit-miss算法步驟:
擊中擊不中變換是形態學中用來檢測特定形狀所處位置的一個基本工具。它的原理就是使用腐蝕;如果要在一幅圖像A上找到B形狀的目標,我們要做的是:
六、實驗過程及代碼
1.去除噪聲、空洞
A1=imread('noise.png');C=[0 1 01 1 10 1 0]; A2=imdilate(A1,C);%圖像A1被結構元素B膨脹 A3=imdilate(A2,C); A4=imdilate(A3,C); A5=imdilate(A4,C); A6=imdilate(A5,C); A7=imdilate(A6,C); A8=imdilate(A7,C);A9=imerode(A8,C); %腐蝕 A10=imerode(A9,C); A11=imerode(A10,C); A12=imerode(A11,C); A13=imerode(A12,C); A14=imerode(A13,C); A15=imerode(A14,C); A16=imerode(A15,C); A17=imerode(A16,C); A18=imerode(A17,C); A19=imerode(A18,C); A20=imerode(A19,C);D=strel('rectangle',[2 2]); A21=imdilate(A20,C); A22=imdilate(A21,C); A23=imdilate(A22,C); A24=imdilate(A23,C); A25=imdilate(A24,C); A26=imdilate(A25,C); A27=imdilate(A26,C);imshow(A27);2.擊中與擊不中
t=zeros(500,500);for i=100:200 for j=100:200 t(i,j)=1; end endfor i=70:140 for j=370:440 t(i,j)=1; end endfor i=300:400 for j=300:480 t(i,j)=1; end endimshow(t);%構造原圖m=zeros(100,100);for i=1:100 for j=1:100 m(i,j)=1; end endfigure,imshow(m);%構造m結構元素n=zeros(120,120);for i=1:120 for j=1:120 n(i,j)=1; end endfor i=10:110 for j=10:110 n(i,j)=0; end endfigure,imshow(n);%構造n結構元素 與m交集為空x1=imerode(t,m); figure,imshow(x1);%原圖被m結構元素腐蝕后 x2=imerode(~t,n); figure,imshow(x2);%原圖補集被n結構元素腐蝕后x3=x1.*x2; figure,imshow(x3);%求兩張腐蝕后圖像的交集七、實驗結果與分析
1.去除噪聲、空洞
圖 1 左:原圖 右:處理后
2.擊中與擊不中
圖 2原圖(左) 結構元素m(右,純白色)
圖 3 原圖補集(左) n結構元素
圖 4 m對原圖腐蝕后(左) n對原圖補集腐蝕后(右)
圖 5兩腐蝕圖求交集
圖 6 最終結果圖(紅色線圈出的位置就是我們需要找的位置)
八、實驗總結及心得體會
在這次實驗中,自己學會了數字圖像處理中的腐蝕、膨脹操作,其原理就是利用集合論的知識,對圖像進行處理。這利用MATLAB編程的過程中,遇到了一些小困難,主要原因還是對一些函數的不熟悉。在擊中與擊不中這一塊,感觸頗多。這一塊內容幾乎用了半天的時間,才搞懂。這里暴露出的問題時原理理解的不是很深刻,加之MATLAB這里與課本上的例子有點出入,在這里饒了一點彎路。其實還好,在csdn上看別人寫的文章,多看幾遍,照著例子多看幾遍,最后還是明白了。在擊中與擊不中實驗中,我采用的方法是先自己創造出原圖、兩個結構元素,這樣是為了更好的和課本一致,然后稍微改動了一些,感覺課本在講這塊有點錯誤,課本是從原理角度解釋擊中與擊不中,在MATLAB中,我們則需要取反即可。
總結
以上是生活随笔為你收集整理的matlab imdilate_MATLAB--数字图像处理 数学形态学应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7纯净版下载csdn_win10原
- 下一篇: 鱼骨图分析法实际案例_让你头脑更精明的十