数学形态学(Mathematical Morphology)——二值形态学算法
1、基本概念函数
结构元素(Structure Element):spa
设有两幅图象B,A。若A是被处理的对象,而B是用来处理A的,则称B为结构元素,又被形象地称作刷子。结构元素一般都是一些比较小的图象。3d
腐蚀(Erosion):对象
X用S腐蚀的结果是全部使S平移x后仍在X中的x的集合。换句话说,用S来腐蚀X获得的集合是S彻底包括在X中时S的原点位置的集合,用公式表示为:
blog
膨胀(Dilation):数学
膨胀能够看作是腐蚀的对偶运算,其定义是:把结构元素B平移a后获得Ba,若Ba击中X,咱们记下这个a点。全部知足上述条件的a点组成的集合称作X被B膨胀的结果。
io
开运算(Opening Operation):原理
先腐蚀后膨胀称为开运算,即:程序
闭运算(Closing Operation):
先膨胀后腐蚀称为闭运算,即:
2、基本原理
腐蚀
以下图所示,X表示原始图像,B表示结构元素,B对X 腐蚀的示意图以下:
对于任意一个在阴影部分的点a,Ba 包含于X,因此X被B腐蚀的结果就是那个阴影部分。阴影部分在X的范围以内,且比X小,就象X被剥掉了一层似的,这就是为何叫腐蚀的缘由。腐蚀在数学形态学运算中的做用是消除物体边界点。
B对X 腐蚀的效果图以下图所示:
膨胀
以下图所示,X表示原始图像,B表示结构元素,B对X 膨胀的示意图以下:
图中X是被处理的对象,B是结构元素,对于任意一个在阴影部分的点a,Ba击中X,因此X被B膨胀的结果就是那个阴影部分。阴影部分包括X的全部范围,就象X膨胀了一圈似的,这就是为何叫膨胀的缘由。
B对X膨胀的效果图下图所示:
开运算
开运算的效果图以下图所示:
咱们能够获得关于开运算的几点结论:
(1)开运算可以除去孤立的小点,毛刺和小桥,而总的位置和形状不便。
(2)开运算是一个基于几何运算的滤波器。
(3)结构元素大小的不一样将致使滤波效果的不一样。
(4)不一样的结构元素的选择致使了不一样的分割,即提取出不一样的特征。
闭运算
闭运算的效果图以下图所示:
咱们也能够获得关于闭运算的几点结论:
(1)闭运算可以填平小湖(即小孔),弥合小裂缝,而总的位置和形状不变。
(2)闭运算是经过填充图像的凹角来滤波图像的。
(3)结构元素大小的不一样将致使滤波效果的不一样。
(4)不一样结构元素的选择致使了不一样的分割。
MATLAB程序:
结构元素:
%strel函数的功能是运用各类形状和大小构造结构元素
se1=strel('disk',5);%这里是建立一个半径为5的平坦型圆盘结构元素
腐蚀:
A2=imerode(A1,se1);
膨胀:
B=[0 1 0
1 1 1
0 1 0];
A2=imdilate(A1,B);%图像A1被结构元素B膨胀
开运算:
se=strel('square',5');%方型结构元素
fo=imopen(f,se);%直接开运算
闭运算:
fc=imclose(f,se);%直接闭运算
下面是算法实现的程序代码:
I1=imread('tire.tif'); %读灰度图tire.tif
I2=imnoise(I1,'salt & pepper'); %在图像上加入椒盐噪声
figure,imshow(I2) %显示加椒盐噪声后的灰度图像
I3=im2bw(I2); %把加椒盐噪声后的灰度图像二值化
figure,imshow(I3) %显示二值化后的图像
I4=bwmorph(I3,'open'); %对二值噪声图像进行二值形态学开运算
figure,imshow(I4) %显示开运算后的图像
I5=bwmorph(I4,'close'); %对上述图像进行形态学闭运算
figure,imshow(I5) %显示最终处理后的图像