数字图像处理编成入门笔记——第6章腐蚀,膨胀,细化算法

来源:互联网 发布:c语言 goto坏处 编辑:程序博客网 时间:2024/05/29 02:33

这部份内容属于数学形态学,作者说是他认为最有趣的一个章节。限于篇幅,只介绍二值图象的形态学运算。在程序中,为了处理的方便,还是采用256级灰度图,不过只用到了调色板中的0255两项。

 

 先来定义一些基本符号和关系。

1.      元素:记作aX

2.      B包含于X记作B X

3.      B击中XBX有交集,记作BX

4.      B不击中X记作BX=Ф

5.      补集:B Xc

6.      结构元素:也被称作刷子,可以看作是特殊的颜色图案。

7.      对称集:B中所有元素的坐标取反,即令(xy)变成(-x-y),记作Bv

8.      平移:设有一幅图象B,有一个点a(x0,y0),将B平移a后的结果是,把B中所有元素的横坐标加x0,纵坐标加y0,即令(xy)变成(x+x0y+y0),记作Ba

 

6.1 腐蚀

1.定义:把结构元素B平移a后得到Ba,若Ba包含于X,我们记下这个a点,所有满足上述条件的a点组成的集合称做XB腐蚀(Erosion)的结果。用公式表示为:E(X)={a| Ba X}=X B

 

2.性质:

1) 其中,E(X)一定包含于X,而且比X小。

2) B对称的,即B的对称集Bv=B,所以XB腐蚀的结果和X Bv腐蚀的结果是一样的。如果B不是对称的,XB腐蚀的结果和X Bv腐蚀的结果不同。

 

3.腐蚀的方法:

  B的中心点和X上的黑点(因为被腐蚀的只有黑点)一个一个地对比,如果B上的所有点都在X的范围内,则该点保留,否则将该点去掉。

 

6.2 膨胀

1.定义:膨胀可以看做是腐蚀的对偶运算。把结构元素B平移a后得到Ba,若Ba击中X,我们记下这个a点。所有满足上述条件的a点组成的集合称做XB膨胀的结果。用公式表示为:D(X)={a | BaX}=X B

 

2.性质:

1X一定包含于D(X),而且比DX)小。

2)如果B不是对称的,XB膨胀的结果和X Bv膨胀的结果不同。

 

3.膨胀的方法:

B的中心点和X上的白点(只对白点进行扩张)及X周围的点一个一个地对,如果B上有一个点落在X的范围内,则该点就为黑。

 

  腐蚀运算和膨胀运算互为对偶的,用公式表示为(X B)c=(Xc B),即X B腐蚀后的补集等于X的补集被B膨胀。

 

6.3

1.定义:先腐蚀后膨胀称为开,即OPEN(X)=D(E(X))

2.作用:一般来说,开运算能够去除孤立的小点,毛刺和小桥(即连通两块区域的小点),而总的位置和形状不变。

 

6.4

1.定义:先膨胀后腐蚀称为闭,即CLOSE(X)=E(D(X))

2.作用:一般来说,闭运算能够填平小湖(即小孔),弥合小裂缝,而总的位置和形状不变。

 

注意:如果B是非对称的,进行开运算或闭运算时要用B对称集Bv膨胀,否则,开运算或闭运算的结果和原图相比要发生平移。开运算和闭运算是对偶运算。

 

6.5 细化

1.定义:从原来的图中去掉一些点,但仍要保持原来的形状。实际上,是保持原图的骨架。所谓骨架,可以理解为图象的中轴。

 

2.去除点选择的方法:扫描图中所有黑点的相邻8个点。黑点记为0,白点记为1。从左到右,从上到下,拼成8位二进制数值。然后查对应表(已经定义好了的),来决定是否删除这个点。

 

3.算法实现方法:设置一个BOOL变量表示这次扫描中有没有删除点。如果有,则继续新一轮扫描;反之终止。每次扫描包括一次水平扫描和一次垂直扫描。在每一行水平扫描的过程中,先判断每一点的左右邻居,如果都是黑点,则该点不做处理。另外,如果某个黑点被删除了,那么跳过它的右邻居,处理下一个点。

 

 

    这一章的算法实现比较简单,只是在概念理解方面花了一些时间。马上就要开学了,还有三章内容要看,唉~ 为自己加油打气~~~~

 

 

原创粉丝点击