当前位置:文档之家› 数学形态学图像处理的基本运算实现及分析

数学形态学图像处理的基本运算实现及分析

数学形态学图像处理的基本运算实现及分析
一、基本原理
数学形态学是一种应用于图像处理和模式识别领域的新的方法。

它的基本思想是用具有一定形态的结构元素去度量和提取图像中的对应形状以达到对图像进行分析和识别的目的。

数学形态学的数学基础和所用语言是集合论。

数学形态学的应用可以简化图像数据,保持它们基本的形状特性,并除去不相干的结构。

另一方面,数学形态学的算法具有天然的并行实现的结构。

1、基本运算
数学形态学的基本运算有四个:膨胀、腐蚀、开启和关。

如用A 表示图像集合,B 表示结构元素,形态学运算就是用B 对A 进行操 作。

A 被
B 膨胀,记为A ⊕B ,⊕为膨胀算子,膨胀的定义为
A B ⊕ˆ{|[()]}x x B A =≠∅
该式表明的膨胀过程是B 首先做关于原点的映射,然后平移x 。

A 被B 的膨胀是B 被所有x 平移后与A 至少有一个非零公共元素。

A 被
B 腐蚀,记为A ⊙B ,⊙为腐蚀算子,腐蚀的定义为
A B Θˆ{|[()]}x x B A =≠∅
也就是说,A 被B 的腐蚀的结果为所有使B 被x 平移后包含于A 的点x 的集合。

换句话说,用B 来腐蚀A 得到的集合是B 完全包括在A 中时B 的原点位置的集合。

膨胀和腐蚀并不互为逆运算,所以它们可以级连结合使用。

例如,利用同一个结构元素B ,先对图像腐蚀然后膨胀其结果,或先对图像膨胀然后瘸蚀其结果,前一种运算称为开运算,后一种运算称为关运算。

它们也是数学形态学中的重要运算。

开启的运算符为o ,A 用B 来开启写作AoB ,其定义为:
A o ()
B A B B =Θ⊕
关的运算符为·,A 用B 来关写作A ·B ,其定义为:
A ·()
B A B B =⊕Θ
开和关两种运算都可以去除比结构元素小的特定图像细节,同时保证不产生全局的几何失真。

开运算可以把比结构元素小的椒盐噪声滤除,切断细长搭接而起到分离作用。

关运算可使比结构元素小的缺口或孔填补上,搭接短的间断而起到连通作用。

2、实际应用
近年来,数学形态学在图像处理方面得到了日益广泛的应用。

下面主要就数学形态学在边缘检测、骨架提取等方面的应用做简要介绍。

集合A 的边界记为β(A),可以通过下述算法提取边缘:设B 是一个合适的结构元素,首先令A 被B 腐蚀,然后求集合A 和它的腐蚀的差。

如下式所示:
()()A A A B β=-Θ
下解释了边缘提取的过程。

它表示了一个简单的二值图像,一个结构元素和用以上公式得出的结果。

图 (b)中的结构元素是最常用的一种,但它决不是唯一的。

如果采用一个5×5全“1”的结构元素,可得到一个二到三个像素宽的边缘。

应注意的是,当集合B 的原点处在集合的边界时,结构元素的一部分位于集合之外。

这种条件下的通常的处理是约定集合边界外的值为0。

利用形态学方法提取一个区域的骨格可以用腐蚀和开运算表示。

也就是,A 的骨骼记为S(A),骨骼化可以表示如下:
0()()K
k k S A S A ==

0(){()[)]}K
k S A A kB A kB B ==
Θ-Θ
其中B 是结构元素,()A kB Θ表示对A 连续腐蚀k 次。

下图的解释说明了以上讨论的概念。

第一列显示了原始集合(顶部)和通过结构元素B 两次腐蚀的图形。

由于再多一次对A 的腐蚀将产生空集,所以选取K =2。

第二列显示了第一列通过B 的开运算而得到的图形。

以上结果可以通过以前讨论过的开运算拟合性质加以解释。

第三列仅仅显示出第一列与第二列的差别。

第四列包含两个部分骨骼及最后的结果(第四列的底部)。

最后的骨骼不但比所要求的更粗,而且相比较更重要,它是不连续的。

形态学给出了就特定图形侵蚀和空缺的描述。

形态学给出了就特定图形侵蚀和空缺的描述。

通常,骨骼必须最大限度的细化、相连、最小限度的腐蚀。

第五列显示了0()S A 、1()S A B ⊕以及
22(()2)())S A B S A B B ⊕=⊕⊕。

最后一列显示了图像A 的重构。

可知,A 就是第五列中膨胀骨骼子集的“并”。

二、源程序
1、膨胀
bw = imread('text.png');
se = strel('line',11,90);%生成线形的结构元素
bw2 = imdilate(bw,se);%对图像进行膨胀
subplot(121), imshow(bw), title('原始图像') ;
subplot(122), imshow(bw2), title('膨胀后的图像') ;
2、腐蚀
originalBW = imread('circles.png');
se = strel('disk',11);%生成圆盘形的结构元素
erodedBW = imerode(originalBW,se);%对图像进行腐蚀
subplot(121), imshow(originalBW), title('原始图像');
subplot(122), imshow(erodedBW); title('腐蚀后的图像');
3、开
BW1 = imread('circbw.tif'); %读取图像
subplot(121), imshow(BW1); title('原始的图像');
se = strel('rectangle',[40 30]); %生成矩形结构元素
BW2 = imopen(BW1,SE);%对图像直接进行开运算
subplot(122), imshow(BW2); title('开运算后的图像');
4、关
originalBW = imread('circles.png');
subplot(121), imshow(originalBW); title('原始的图像'); se = strel('disk',10);
closeBW = imclose(originalBW,se);
subplot(122), imshow(closeBW); title('关运算后的图像') 5、边缘检测
BW1 = imread('circbw.tif');
BW2 = bwperim(BW1,8);
subplot(121), imshow(BW1) ; title('原始图像');
subplot(122), imshow(BW2) ; title('边缘检测后的图像');
6、骨架提取
BW1 = imread('circbw.tif');
BW2 = bwmorph(BW1,'skel',Inf);
subplot(121), imshow(BW1) ; title('原始图像');
subplot(122), imshow(BW2) ; title('骨架提取后的图像');
三、程序运行结果
1、膨胀
2、腐蚀
3、开
4、关
5、边缘检测
6、骨架提取
四、程序运行结果分析
从以上运行结果可以分析得到各操作的功能结果如下。

1、膨胀
扩展边界。

2、腐蚀
收缩边界。

3、开
平滑轮廓,切除狭区,去除小的孤岛及突刺。

4、关
平滑轮廓,联络小狭区,纵向细化沟渠,并且去除小洞。

5、边缘检测
提取图像边界上的点集。

6、骨架提取
找到图像的骨骼。

五、总结及收获
数学形态学对图像的处理具有直观上的简明性和数学上的严谨性,在定量描述图像的形态特征上具有独特的优势,为基于形状细节进行图像处理提供了强有力的手段。

建立在集合理论基础上的数学形态学,主要通过选择相应的结构元素采用膨胀、腐蚀、开启、闭合4种基本运算的组合来处理图像。

数学形态学在图像处理中的应用广泛,有许多实用的算法,但在每种算法中结构元素的选取都是一个重要的问题。

相关主题