gray_opening(Image, SE : ImageOpening : : )
gray_open使用结构元素SE将一个灰度值开运算应用于输入图像Image。
结构元素SE的图像类型必须匹配输入图像Image的图像类型。
定义具有结构元素s的图像i的灰度值开度为
即。,用s对图像进行侵蚀,然后用置换的结构元素进行膨胀(参见 gray_erosion 和gray_dilation)。有关生成结构化元素,请参见read_gray_se。
对于平面结构元素,灰度值的开运算速度特别快,
即,在其域内构造具有恒定灰度级的元素。
1.gray_closing(Image, SE : ImageClosing : : )
gray_closing使用结构元素SE将一个灰度值闭运算应用于输入图像Image。。
结构元素SE的图像类型必须匹配输入图像Image的图像类型。
将具有结构元素s的图像i的灰度值闭合定义为
即。,用s对图像进行膨胀,然后用置换的结构元素对图像进行侵蚀(参见 gray_dilation 和 gray_erosion)。
有关生成结构化元素,请参见read_gray_se。
对于平面结构元素,灰值闭运算特别快,即,在其域内构造具有恒定灰度级的元素。
例程:
* 例程演示一般灰度形态学的使用,一般是指结构元素形状可任意。
*程序实现PCB板钻孔的提取
read_image (Image, 'pcb_layout')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window_fit_size (0, 0, Width, Height, 800, 700, WindowHandle)
dev_set_draw ('fill')
dev_set_colored (6)
dev_display (Image)
* 定义一结构元素大小和我们要寻找的钻孔相似
gen_image_const (ConstImage, 'byte', 11, 11)
get_image_size (ConstImage, MaskWidth, MaskHeight)
gen_circle (Circle, (MaskHeight - 1) / 2.0, (MaskWidth - 1) / 2.0, 3)
reduce_domain (ConstImage, Circle, ImageReduced)
gray_closing (Image, ImageReduced, ImageClosingFast)
gray_opening (Image, ImageReduced, ImageOpeningFast)
sub_image (ImageClosingFast, ImageOpeningFast, ImageSubFast, 1, 0)
dev_display (ImageSubFast)
threshold (ImageSubFast, Region, 100, 255)
connection (Region, ConnectedRegions)
*预选钻孔
select_shape (ConnectedRegions, SelectedRegions, ['circularity','area'], 'and', [0.85,7], [1.0,30])
*比较区域内及其邻域内的灰度值(选择对比度最小的对象)
dilation_circle (SelectedRegions, RegionDilation, 5)
difference (RegionDilation, SelectedRegions, RegionDifference)
intensity (SelectedRegions, Image, Mean, Deviation)
intensity (RegionDifference, Image, Mean1, Deviation1)
select_mask_obj (SelectedRegions, HolesFast, Mean - Mean1 [>] 80)
dilation_circle (HolesFast, RegionDilation, 3.5)
dev_display (Image)
dev_display (RegionDilation)
例程执行结果为:
gray_opening
|