首页 理论教育 如何进行水平膨胀运算?

如何进行水平膨胀运算?

时间:2023-06-23 理论教育 版权反馈
【摘要】:如果膨胀时所用的结构元素如图3-35a所示,即为水平膨胀,其具体实现步骤只需将水平腐蚀的步骤3)修改为:“由于使用1×3的结构元素,为防越界不处理最左边和最右边的两列像素,而从第2行第2列开始,将像素灰度值赋为255,判断该像素的前一点和后一点是否与结构元素有交点,有则将检查的像素灰度值赋为0,否则保持不变,并将结果暂存在内存缓冲区中”。

如何进行水平膨胀运算?

膨胀(Dilation)是腐蚀的对偶运算,其定义是:把结构元素B平移a后得到Ba,若Ba击中X,记下a点,所有满足上述条件的a点组成的集合称作X被B膨胀的结果。数学表达式为:

如图3-36所示,X是被处理的对象,B是结构元素,对于任意一个在阴影部分的点a,Ba击中X,所以X被B膨胀的结果就是阴影部分,包括X的所有范围,就像X膨胀了一圈,故将此运算称为膨胀。同样,如果B不是对称的,X被B膨胀的结果和X被Bv膨胀的结果是不同的。

图3-36 膨胀运算示意图

腐蚀运算和膨胀互为对偶运算:

即X被B腐蚀后的补集等于X的补集被B膨胀。

图3-37是实际中膨胀运算的过程,左边是被处理的图像X(二值图像,1是目标,0是背景),中间是结构元素B。用B的中心点与X中的1点逐一比对,如果B上有一个点落在X的范围内,则该点就为1。右图是膨胀后的结果,可以看出,它包括X的所有范围,就像X膨胀了一圈。(www.xing528.com)

如果膨胀时所用的结构元素如图3-35a所示,即为水平膨胀,其具体实现步骤只需将水平腐蚀的步骤3)修改为:“由于使用1×3的结构元素,为防越界不处理最左边和最右边的两列像素,而从第2行第2列开始,将像素灰度值赋为255,判断该像素的前一点和后一点是否与结构元素有交点(即是否有点为0),有则将检查的像素灰度值赋为0,否则保持不变,并将结果暂存在内存缓冲区中”。其余步骤与水平腐蚀相同。

如果膨胀时所用的结构元素如图3-35b所示,即为垂直膨胀,其具体实现步骤只需将垂直腐蚀的步骤3)修改为:“由于使用3×1的结构元素,为防越界,不处理最上和最下的两行像素,而从第2行第2列开始,将像素灰度值赋为255,判断该像素的上一点和下一点是否与结构元素有交点(即有点为0),有则将检查的像素灰度值赋为0,否则保持不变,并将结果暂存在内存缓冲区中”。其余步骤与垂直腐蚀相同。

图3-37 膨胀运算示例

a)X b)B c)X⊕B

如果膨胀时所用的结构元素如图3-35c所示,即为全方向膨胀,实现步骤只需将全方向腐蚀的步骤4)修改为:“为防越界,不处理最左、最右、最上和最下四边的像素,而从第2行第2列开始,将像素灰度值赋为255,利用结构元素数组判断该像素的前一点、后一点、上一点、下一点这四点(即数组中除中心点外,四个为0的位置,也就是其4邻域)中是否有相交点,有则将检查的像素灰度值赋为0,否则保持不变。并将结果暂存在内存缓冲区中。这里也可以定X不同形状的结构元素B来进行不同的膨胀,方法是检查B中为0所对应的像素是否与物体相交不为空,是则保留该点,否则置为255”。其余步骤与全方向腐蚀相同。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈