首页 理论教育 腐蚀运算及实现步骤

腐蚀运算及实现步骤

时间:2026-01-23 理论教育 蒙娜丽莎 版权反馈
【摘要】:阴影部分在X的范围之内,且比X小,就像X被剥掉了一层似的,故将此运算称为腐蚀。图3-32结构元素对称的腐蚀运算示意图图3-33结构元素非对称的腐蚀运算示意图图3-34是实际中腐蚀运算的过程,左边是被处理的图像X,中间是结构元素B。如果腐蚀时所用的结构元素如图3-35a所示,即为水平腐蚀,其具体实现步骤如下:图3-34腐蚀运算示例a)X b)B c)X B1)获得原二值图像的首地址及图像的宽和高。

把结构元素B平移a后得到Ba,若Ba包含于X,记下a点,所有满足上述条件的a点组成的集合称作X被B腐蚀(Erosion)的结果。数学表达式为:

如图3-32所示,图中X是被处理的对象,B是对称的结构元素,即Bν=B,对于任意一个在阴影部分的点a,Ba包含于X,所以X被B腐蚀的结果就是阴影部分。阴影部分在X的范围之内,且比X小,就像X被剥掉了一层似的,故将此运算称为腐蚀。由于B是对称的,所以X被B腐蚀的结果和X被Bν腐蚀的结果是一样的。如果B不是对称的,如图3-33所示,X被B腐蚀的结果和X被ν腐蚀的结果是不同的。

图3-32 结构元素对称的腐蚀运算示意图

图3-33 结构元素非对称的腐蚀运算示意图

图3-34是实际中腐蚀运算的过程,左边是被处理的图像X(二值图像,1是目标,0是背景),中间是结构元素B。用B的中心点与X中的1点逐一比对,如果B上的所有点都在X的范围内,则该点保留,否则将其去掉。图3-34c是腐蚀后的结果,可以看出它仍在原来X的范围内,且比X包含的1点要少,就像X被腐蚀掉了一层。

如果腐蚀时所用的结构元素如图3-35a所示,即为水平腐蚀,其具体实现步骤如下:

图3-34 腐蚀运算示例

a)X b)B c)X 图示B

1)获得原二值图像(背景为白,物体为黑)的首地址及图像的宽和高。

2)开辟一块内存缓冲区,并初始化为255。

3)由于使用1×3的结构元素,为防越界不处理最左边和最右边的两列像素,而从第2行第2列开始,将像素灰度值赋为0,判断该像素的前一点和后一点中是否有背景点,有则

将检查的像素灰度值赋为255,否则保持不变。并将结果暂存在内存缓冲区中。

4)循环步骤3),直到处理完原图的全部像素。

5)输出结果。

如果腐蚀时所用的结构元素如图3-35b所示,即为垂直腐蚀,其具体实现步骤如下:(https://www.xing528.com)

1)获得原二值图像(背景为白,物体为黑)的首地址及图像的宽和高。

2)开辟一块内存缓冲区,并初始化为255。

3)由于使用3×1的结构元素,为防越界,不处理最上和最下的两行像素,而从第2行第2列开始,将像素灰度值赋为0,判断该像素的上一点和下一点中是否有背景点,有则将检查的像素灰度值赋为255,否则保持不变。并将结果暂存在内存缓冲区中。

4)循环步骤3),直到处理完原图的全部像素。

5)输出结果。

如果腐蚀时所用的结构元素如图3-35C所示,即为全方向腐蚀,其具体实现步骤如下:

图3-35 腐蚀时所用的结构元素

a)水平腐蚀所用的结构元素 b)垂直腐蚀所用的结构元素 c)全方向腐蚀所用的结构元素

1)获得原二值图像(背景为白,物体为黑)的首地址及图像的宽和高。

2)开辟一块内存缓冲区,并初始化为255。

3)定义一个一维数组图示,用来存储3×3的结构元素。

4)为防越界,不处理最左、最右、最上和最下四边的像素,而从第2行第2列开始,将像素灰度值赋为0,利用结构元素数组判断该像素的前一点、后一点、上一点、下一点这四点(即数组中除中心点外,四个为0的位置,也就是其4-邻域)中是否有背景点,有则将检查的像素灰度值赋为255,否则保持不变。并将结果暂存在内存缓冲区中。这里也可以定义不同形状的结构元素B来进行不同的腐蚀,但处理方法都是检查B中的0所对应的像素是否全部为物体(即为0),是则保留该点,否则置为255。

5)循环步骤4),直到处理完原图的全部像素。

6)输出结果。

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

我要反馈