膨脹和腐蝕的定義與功能:
膨脹將目標點融合到背景中,向外部擴展。膨脹處理可以將斷裂開的目標物進行合並,便於對其整體的提取。
腐蝕與膨脹意義相反,消除連通的邊界,使邊界向內收縮。腐蝕處理可以將粘連在一起的不同目標物分離,並可以將小的顆粒噪聲去除。
膨脹:
例如:
算法步驟分析:
- 掃描原圖,找到一個像素值為0的背景點
- 將預先設定好形狀和元素的結構元素移到該位置
- 判斷結構元素是否有覆蓋到像素值為1的背景點,如果有則選中的像素點像素值為1,否則為0
- 選擇下一像素值為0的像素點,重復2,3,直至所有像素點完成
例如:
matlab imdilate膨脹:
matlab函數:imdilate(I,SE);
I:傳入的圖像
SE:結構元素
A1=imread('resource\Test.PNG'); bw=im2bw(A1);%轉換為二值圖 bw2=imcomplement(bw); %黑白對調 B=[ 0,1,0; 1,1,1; 0,1,0]; A2=imdilate(bw2,B); %膨脹 A3=imdilate(A2,B); A4=imdilate(A3,B); subplot(231),imshow(A1); title('原始圖'); subplot(232),imshow(bw); title('原始圖轉化為二值圖'); subplot(233),imshow(bw2); title('二值圖黑白對調'); subplot(234),imshow(A2); title('第一次膨脹處理'); subplot(235),imshow(A3); title('第二次膨脹處理'); subplot(236),imshow(A3); title('第三次膨脹處理');
結果:
腐蝕:
例如:
算法步驟分析:
- 掃描原圖,找到像素值為1的背景點
- 將預先設定好形狀和元素的結構元素移到該位置
- 判斷結構元素所覆蓋的像素點是否全部為1,如果是則選中的像素點值為1,否則為0
- 選擇下一像素值為1的像素點,重復2,3,直至所有像素點完成
matlab imerode腐蝕:
matlab函數:imerode(I,SE);
I:傳入的圖像
SE:結構元素
A1=imread('resource\imerode.jpg'); bw=im2bw(A1);%轉換為二值圖 bw2=imcomplement(bw); %黑白對調 B=[ 0,1,0; 1,1,1; 0,1,0]; A2=imerode(bw2,B); %膨脹 A3=imerode(A2,B); A4=imerode(A3,B); subplot(231),imshow(A1); title('原始圖'); subplot(232),imshow(bw); title('原始圖轉化為二值圖'); subplot(233),imshow(bw2); title('二值圖黑白對調'); subplot(234),imshow(A2); title('第一次腐蝕處理'); subplot(235),imshow(A3); title('第二次腐蝕處理'); subplot(236),imshow(A3); title('第三次腐蝕處理');
結果:
灰度形態學的膨脹和腐蝕:
灰度形態學的腐蝕:
灰度形態學的腐蝕使用卷積的操作,用原圖像區域減取結構元素,去其中最小值賦予對應原點
假設有以下圖像(a)和結構元素(b)
以第一個區域為例
[0 0 0; [0 1 0; [0 -1 0;
0 4 3; 1 2 1; -1 2 2;
0 3 5] - 0 1 0] = 0 2 5]
此時區域的最小元素為-1,則使用-1替代原區域原點4
最終結果如下圖。
灰度形態學膨脹:
灰度形態學的腐蝕使用卷積的操作,用原圖像區域加上結構元素,去其中最大值賦予對應原點
假設有以下圖像(a)和結構元素(b)
以第一個區域為例
[0 0 0; [0 1 0; [0 1 0;
0 4 3; 1 2 1; 1 6 4;
0 3 5] - 0 1 0] = 0 4 5]
此時區域的最大元素為6,則使用6替代原區域原點4
最終結果如下圖(圖片“與結構元素對應像元相加去最小值”有誤,應為取最大值)
參考:
https://www.cnblogs.com/tornadomeet/archive/2012/03/20/2408086.html
https://blog.csdn.net/Chaolei3/article/details/79618602
https://blog.csdn.net/ywxk1314/article/details/81391800
https://blog.csdn.net/ywxk1314/article/details/81391478
