dilation _circle(Region : RegionDilation : Radius:)
其中各参数的含义如下。
(1)参数1:Region 为输入的区域。
(2)参数2:RegionDilation 为输出的膨胀后的区域。
(3)参数3:Radius 为圆形结构元素的半径,该半径的大小决定了膨胀的程度。其具体取值与
待填补的空洞大小有关。该半径默认值依然是3.5。
下面以一个简单的例子来说明膨胀操作。图(a)中的红色部分即输入区域,也就是上文中的膨胀操作提取出的区域。图(a)为一幅背景较为复杂的图像,目标是提取芯片区域,因此可以先将图像转化为单通道灰度图像,并使用阈值进行简单的灰度分割。闽值分割图像如图(a)所示,可见该区域有许多因为过度腐蚀而产生的“空洞”。接下来在该区域使用dilation_circle算子填补满足尺寸条件的小洞,得到的膨胀效果如图 (b)所示。
图中针对腐蚀后的区域进行膨胀操作的代码如下:
read_image (Image, 'data/board')
rgbl_to_gray (Image, GrayImage)
threshold (GrayImage, Region, 100, 255)
gen_image_proto (GrayImage, ImageCleared, 0)
erosion_circle (Region, RegionErosion, 7.5)
erosion_circle (RegionErosion, RegionErosion2, 6.5)
erosion_circle (RegionErosion2, RegionErosion3, 5.5)
*膨胀操作
dilation_circle (RegionErosion3, RegionDilation, 23.5)
dev_clear_window ()
dev_display (RegionDilation)
在最后一行使用膨胀算子,其中膨胀算子中的圆形结构元素半径可根据空洞的大小和需要的填补效果进行调节。
经过阈值处理或腐蚀操作后,图像中包含了许多小空隙,为了使提取出的区域尽量完整,这里通过膨胀操作来填补空隙。根据膨胀的实际效果,可能还需要进行平滑边缘等处理,可以选择使用闭运算进行后续处理。
除了上文提到的dilation_circle 和 dilation_rectangle1算子外,在Halcon中还可以使用其他方式进行膨胀操作。与膨胀有关的其他算子如下。
(1)dilation1:用一个自定义的结构元素对输入区域进行膨胀操作。结构元素需要预先创建好,这个自定义的结构元素可能是圆形、矩形、多边形,甚至是点,等等。
(2)dilation2:使用一个参考点对输入区域进行膨胀操作。这个算子中的结构元素有一个参考点,这个点与dilation1中的点不同,这个参考点可以是指定的任意一点。
(3)dilation_golay:使用的结构元素来自格雷字母表,通过定义结构元素对输入区域进行膨胀操作。
(4)dilationseq:与dilation golay 类似,使用格雷字母表中的元素对输入区域进行连续的膨胀操作。