膨脹、腐蝕、開、閉運算是數學形態學最基本的變換。
本文主要針對二值圖像的形態學
膨脹:把二值圖像各1像素連接成分的邊界擴大一層(填充邊緣或0像素內部的孔);
B=[0 1 0
1 1 1
0 1 0];
A2=imdilate(A1,B);%圖像A1被結構元素B膨脹
腐蝕:把二值圖像各1像素連接成分的邊界點去掉從而縮小一層(可提取骨干信息,去掉毛刺,去掉孤立的0像素);
%strel函數的功能是運用各種形狀和大小構造結構元素
se1=strel('disk',5);%這里是創建一個半徑為5的平坦型圓盤結構元素
A2=imerode(A1,se1);
開:先腐蝕再膨脹,可以去掉目標外的孤立點
%se=strel('square',5');%方型結構元素
se=strel('disk',5');%圓盤型結構元素
imshow(f);%原圖像
title('開閉運算原始圖像')
%運行結果如下:
%開運算數學上是先腐蝕后膨脹的結果 %開運算的物理結果為完全刪除了不能包含結構元素的對象區域,平滑 %了對象的輪廓,斷開了狹窄的連接,去掉了細小的突出部分 fo=imopen(f,se);%直接開運算 figure,subplot(221),imshow(fo); title('直接開運算');
閉:先膨脹再腐蝕,可以去掉目標內的孔。
%閉運算在數學上是先膨脹再腐蝕的結果
%閉運算的物理結果也是會平滑對象的輪廓,但是與開運算不同的是,閉運算
%一般會將狹窄的缺口連接起來形成細長的彎口,並填充比結構元素小的洞
fc=imclose(f,se);%直接閉運算
subplot(222),imshow(fc);
title('直接閉運算');
以下參考論文:《數學形態學在圖像處理中的應用》