1.基本符号和关系的定义
先来定义一些基本符号和关系。
(1)元素 设有一幅图像X,若点a在X的区域以内,则称a为X的元素,记作a∈X,如图4-13所示。
(2)B包含于X 设有两幅图像B、X。对于B中所有的元素ai,都有ai∈X,则称B包含于(Included in)X,记作BX,如图4-14所示。
(3)B击中X 设有两幅图像B、X。若存在这样一个点,它既是B的元素,又是X的元素,则称B击中(Hit)X,记作B↑X,如图4-15所示。
(4)B不击中X 设有两幅图像B、X。若不存在任何一个点,它既是B的元素,又是X的元素,即B和X的交集是空,则称B不击中(Miss)X,记作B∩X=。其中,∩是集合运算中交集的符号;表示空集,如图4-16所示。
图4-13 元素
图4-14 包含
图4-15 击中
图4-16 不击中
(5)补集 设有一幅图像X,所有X区域以外的点构成的集合称为X的补集,记作Xc,如图4-17所示。显然,如果B∩X=,则B在X的补集内,即BXc。
(6)结构元素 设有两幅图像B、X。若X是被处理的对象,而B是用来处理X的,则称B为结构元素(Structure Element),又被形象地称做刷子。结构元素通常都是一些比较小的图像。
(7)对称集 设有一幅图像B,将B中所有元素的坐标取反,即令(x,y)变成(-x,-y),所有这些点构成的新的集合称为B的对称集,记作Bv,如图4-18所示。
图4-17 补集的示意图
(8)平移 设有一幅图像B,有一个点a(x0,y0),将B平移a后的结果是,把B中所有元素的横坐标加x0,纵坐标加y0,即令(x,y)变成(x+x0,y+y0),所有这些点构成的新的集合称为B的平移,记作Ba,如图4-19所示。
图4-18 对称集的示意图
图4-19 平移的示意图
介绍了这么多基本符号和关系,现在应用这些符号和关系,看一下形态学的基本运算。
2.形态学的基本运算
(1)腐蚀 把结构元素B平移a后得到Ba,若Ba包含于X,记下这个a点,所有满足上述条件的a点组成的集合称做X被B腐蚀(Erosion)的结果,用公式表示为E(X)={a|BaX}=X㊀B,如图4-20所示。
图4-20 腐蚀的示意图
图4-20中,X是被处理的对象,B是结构元素。不难知道,对于任意一个在阴影部分的点a,Ba包含于X,所以X被B腐蚀的结果就是那个阴影部分。阴影部分在X的范围之内,且比X小,就像X被剥掉了一层似的,这就是为什么叫腐蚀的原因。
值得注意的是,上面的B是对称的,即B的对称集Bv=B,所以X被B腐蚀的结果和X被Bv腐蚀的结果是一样的。如果B不是对称的,则如图4-21所示,就会发现X被B腐蚀的结果和X被Bv腐蚀的结果不同。
图4-20和图4-21都是腐蚀的示意图,现在来看看实际上是怎样进行腐蚀运算的。
如图4-22所示,左边是被处理的图像X(二值图像,针对的是黑点),中间是结构元素B,那个标有origin的点是中心点,即当前处理元素的位置,在介绍模板操作时也有过类似的概念。腐蚀的方法是,拿B的中心点和X上的点一个一个地对比,如果B上的所有点都在X的范围内,则该点保留,否则将该点去掉;右边是腐蚀后的结果。可以看出,它仍在原来X的范围内,且比X包含的点要少,就像X被腐蚀掉了一层。
(www.xing528.com)
图4-21 结构元素非对称时,腐蚀的结果不同
图4-22 腐蚀运算
图4-23为原图,图4-24为腐蚀后的结果,能够很明显地看出腐蚀的效果。
图4-23 原图
图4-24 腐蚀后的效果
图4-25 膨胀的示意图
(2)膨胀 膨胀(Dilation)可以看作是腐蚀的对偶运算,其定义是:把结构元素B平移a后得到Ba,若Ba击中X,记下这个a点。所有满足上述条件的a点组成的集合称作X被B膨胀的结果。用公式表示为:D(X)={a|Ba↑X}=X㊉B。图4-25中X是被处理的对象,B是结构元素,不难知道,对于任意一个在阴影部分的点a,Ba击中X,所以X被B膨胀的结果就是那个阴影部分。阴影部分包括X的所有范围,就像X膨胀了一圈似的,这就是为什么叫膨胀的原因。
同样,如果B不是对称的,X被B膨胀的结果和X被Bv膨胀的结果是不同的。
现在来看看实际上是怎样进行膨胀运算的。如图4-26所示,左边是被处理的图像X(二值图像,针对的是黑点),中间是结构元素B。膨胀的方法是,拿B的中心点和X上的点及X周围的点一个一个地对比,如果B上有一个点落在X的范围内,则该点就为黑;右边是膨胀后的结果。可以看出,它包括X的所有范围,就像X膨胀了一圈似的。
图4-26 膨胀运算
图4-27为图4-23膨胀后的结果,能够很明显地看出膨胀的效果。
图4-27 膨胀后的效果
(3)细化 所谓细化,就是从原来的图中去掉一些点,但仍要保持原来的形状。实际上,是保持原图的骨架。所谓骨架,可以理解为图像的中轴,例如一个长方形的骨架是它的长方向上的中轴线;正方形的骨架是它的中心点;圆的骨架是它的圆心,直线的骨架是它自身,孤立点的骨架也是自身。那么怎样判断一个点是否能去掉呢?显然,要根据它的八个相邻点的情况来判断,现给出图4-28所示几个例子。
图4-28 根据某点的八个相邻点的情况来判断该点是否能删除
图4-28中,图a不能删,因为它是个内部点,我们要求的是骨架,如果连内部点也删了,骨架也会被掏空的;图b不能删,和图a是同样的道理;图c可以删,这样的点不是骨架;图d不能删,因为删掉后,原来相连的部分断开了;图e可以删,这样的点不是骨架;图f不能删,因为它是直线的端点,如果这样的点删了,那么最后整个直线也被删了,就剩不下什么了。
小结一下,有如下的判据:图a内部点不能删除;图b孤立点不能删除;图c直线端点不能删除;图d如果待判断点是边界点,去掉它后,如果连通分量不增加,则它可以删除。
给出一个具体的细化算法:一幅图像中的一个3×3区域(见图4-29),对各点标记名称P1,P2,…,P8,其中P1位于中心。如果P1=1(即黑点),下面四个条件如果同时满足,则删除P1(P1=0)。
● 2≤NZ(P1)≤6;
● Z0(P1)=1;
● P2×P4×P8=0或者Z0(P1)≠1;
● P2×P4×P6=0或者Z0(P4)≠1。
对图像中的每一个点重复这一步骤,直到所有的点都不可删除为止。图4-29给出了这一算法的应用示例。
图4-29 细化示例
a)标记点P1和邻点 b)细化过程
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。