图像掩膜即用选定的图像、图形或物体,对处理的图像(全部或局部)进行遮挡,来控制图像处理的区域或处理过程。掩膜是两幅图像之间进行的各种位运算操作。比如与、或、非运算与普通的位运算类似。 通过掩膜可以 提取感兴趣区, 屏蔽作用。
案例分析
原图
目标提取除去圆孔外的轮廓
掩膜区域
案例代码
read_image (ModelImage, 'E:/Halcon数据/测量程序/区域/掩膜/113.PNG.bmp')
dev_get_window (WindowHandle)
get_image_size (ModelImage, Width1, Height1)
gen_empty_obj (Region)
Area:=[]
for Index := 1 to 9 by 1
* draw_region (Region1, WindowHandle)
draw_circle (WindowHandle, Row, Column, Radius)
gen_circle (Circle, Row, Column, Radius)
concat_obj (Region, Circle, Region)
area_center (Circle, Area1, Row1, Column1)
Area:=[Area,Area1]
endfor
AreV:=max(Area)
stop ()
dev_clear_window ()
dev_display (ModelImage)
dev_display (Region)
gen_rectangle1 (Rectangle, 0, 0, Height1, Width1)
difference (Rectangle, Region, RegionComplement)
reduce_domain (ModelImage, RegionComplement, ImageReduced)
rgb1_to_gray (ImageReduced, GrayImage)
threshold (GrayImage, Region1, 0, 125)
fill_up_shape (Region1, RegionFillUp, 'area', 1, AreV+1)
region_to_bin (RegionFillUp, BinImage, 0, 255, Width1, Height1)
edges_sub_pix (BinImage, Edges, 'canny', 1, 20, 40)
count_obj (Edges, Number)
gen_empty_obj (XLD)
for Index1 := 1 to Number by 1
select_obj (Edges, ObjectSelected, Index1)
concat_obj ( XLD,ObjectSelected, XLD)
endfor
dev_display (ModelImage)
dev_display (XLD)
轮廓效果