数学形态学之二值形态学(腐蚀、膨胀、开闭运算)基本原理

数学形态学(Mathematical Morphology)——二值形态学

一、基本概念

结构元素(Structure Element):

设有两幅图象B,A。若A是被处理的对象,而B是用来处理A的,则称B为结构元素,又被形象地称做刷子。结构元素通常都是一些比较小的图象。

腐蚀(Erosion):

X用S腐蚀的结果是所有使S平移x后仍在X中的x的集合。换句话说,用S来腐蚀X得到的集合是S完全包括在X中时S的原点位置的集合,用公式表示为:


膨胀(Dilation):

膨胀可以看做是腐蚀的对偶运算,其定义是:把结构元素B平移a后得到Ba,若Ba击中X,我们记下这个a点。所有满足上述条件的a点组成的集合称做X被B膨胀的结果。


开运算(Opening Operation):

先腐蚀后膨胀称为开运算,即:


闭运算(Closing Operation):

先膨胀后腐蚀称为闭运算,即:


二、基本原理

腐蚀

如下图所示,X表示原始图像,B表示结构元素,B对X 腐蚀的示意图如下:

数学形态学之二值形态学(腐蚀、膨胀、开闭运算)基本原理_第1张图片

对于任意一个在阴影部分的点a,Ba 包含于X,所以X被B腐蚀的结果就是那个阴影部分。阴影部分在X的范围之内,且比X小,就象X被剥掉了一层似的,这就是为什么叫腐蚀的原因。腐蚀在数学形态学运算中的作用是消除物体边界点。

B对X 腐蚀的效果图如下图所示:

数学形态学之二值形态学(腐蚀、膨胀、开闭运算)基本原理_第2张图片数学形态学之二值形态学(腐蚀、膨胀、开闭运算)基本原理_第3张图片

膨胀

如下图所示,X表示原始图像,B表示结构元素,B对X 膨胀的示意图如下:

数学形态学之二值形态学(腐蚀、膨胀、开闭运算)基本原理_第4张图片

图中X是被处理的对象,B是结构元素,对于任意一个在阴影部分的点a,Ba击中X,所以X被B膨胀的结果就是那个阴影部分。阴影部分包括X的所有范围,就象X膨胀了一圈似的,这就是为什么叫膨胀的原因。

B对X膨胀的效果图下图所示:

数学形态学之二值形态学(腐蚀、膨胀、开闭运算)基本原理_第5张图片

数学形态学之二值形态学(腐蚀、膨胀、开闭运算)基本原理_第6张图片

开运算

开运算的效果图如下图所示:

数学形态学之二值形态学(腐蚀、膨胀、开闭运算)基本原理_第7张图片

我们可以得到关于开运算的几点结论:
(1)开运算能够除去孤立的小点,毛刺和小桥,而总的位置和形状不便。
(2)开运算是一个基于几何运算的滤波器。
(3)结构元素大小的不同将导致滤波效果的不同。
(4)不同的结构元素的选择导致了不同的分割,即提取出不同的特征。

闭运算

闭运算的效果图如下图所示:

数学形态学之二值形态学(腐蚀、膨胀、开闭运算)基本原理_第8张图片

我们也可以得到关于闭运算的几点结论:
(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) %显示最终处理后的图像





你可能感兴趣的:(数学形态学之二值形态学(腐蚀、膨胀、开闭运算)基本原理)