erosion circle(Region : RegionErosion : Radius :)
其中各参数的含义如下。
(1)参数1:Region 为输入图像中的区域,该区域往往是由上一环节的某种分割操作得到的输
出结果,如闽值处理提取的区域等。
(2)参数2:RegionErosion 为输出的腐蚀后的区域。
(3)参数3:Radius 为圆形结构元素的半径。其具体值取与想要被去除的杂点的大小有关。因为小于这个圆形结构元素的点都会被移除,而该圆形的直径一般是一个奇数,如3、5、7、9等,所以该半径取值一般会取 1.5、2.5、3.5、4.5……默认值是3.5。
注意,圆形的直径取奇数是因为圆形是对称图形,这样做是为了使圆形的中心点坐标为整数。
下面以一个简单的例子来说明腐蚀操作。图(a)即原始图像,为一幅背景较为复杂的图像。目标是提取较大的面积芯片区域。因此,可以先将图像转化为单通道灰度图像,并使用阈值进行简单的灰度分割。阈值分割图像如图(b)所示。在满足条件的区域使用erosion_circle算子移除杂点,erosion_circle 算子的输入区域为图(b)的红色部分,腐蚀的结果如图(c)所示。
图中腐蚀操作的代码如下:
read_image (Image,' data/board')
rgbl_to_gray (Image, GrayImage)
threshold (GrayImage, Region, 100, 255)
erosion _circle (Region, RegionErosion, 7.5)
erosion_circle (RegionErosion, RegionErosion2,6.5)
dev_clear_window ()
dev_display (RegionErosion2)
因为经阈值处理后,图像中会包含背景中的许多杂点和非关键区域,所以这里通过腐蚀操作移除杂点,并且在腐蚀的结果上进行重复腐蚀,以达到理想的结果。腐蚀操作很容易让图像中出现“空洞”,因此可以使用膨胀或者闭运算进行后续处理。
上文提到的erosion_circle算子是使用圆形结构元素进行腐蚀操作,还可以选择其他形状的结构元素,如erosion_rectangle1算子是使用矩形结构元素进行腐蚀,用法与erosion_circle算子类似、也可以使用自定义的结构元素或者其他方式。Halcon中与腐蚀有关的其他算子如下。
(1)erosion1:用一个自定义的结构元素对输入区域进行腐蚀操作。这个自定义的结构元素需要预先创建,可能是圆形、矩形、多边形,甚至是点,等等。
(2)erosion2:使用一个参考点对输入区域进行腐蚀操作。这个算子中的结构元素有一个参考点,这个点与erosion1中的点不同,它可以是指定的任意一点。
(3)erosion_golay:使用的结构元素来自格雷字母表,通过定义结构元素对输入区域进行腐蚀操作。
(4)erosion_seq:与erosiongolay 类似,使用格雷字母表中的元素对输入区域进行连续的腐蚀操作。