1、检测表面划痕
read_image (Image, 'D:/Halcon/检测表面划痕.png')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width/2, Height/2, 'black', WindowHandle)
dev_display (Image)
dev_set_draw ('margin')
dev_set_line_width (4)
* 均值滤波
mean_image (Image, ImageMean, 7, 7)
* 局部阈值分割
dyn_threshold (Image, ImageMean, RegionDynThresh, 5, 'dark')
* 连通性
connection (RegionDynThresh, ConnectedRegions)
* 处理区域
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 10, 99999)
* 合并
union1 (SelectedRegions, RegionUnion)
* 膨胀
dilation_circle (RegionUnion, RegionDilation, 3.5)
* 求膨胀区域的骨架(指图像中目标的中轴线或主要特征线,它可以帮助提取目标的形状、结构以及其他信息)
skeleton (RegionDilation, Skeleton)
connection (Skeleton, ConnectedRegions1)
* 筛选
select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and', 40, 500)
select_shape (ConnectedRegions1, SelectedRegions2, 'area', 'and', 10, 40)
dev_display (Image)
dev_set_color ('red')
dev_display (SelectedRegions1)
dev_set_color ('blue')
dev_display (SelectedRegions2)

2、毛刺边缘检测
read_image (Image, 'fin'+[1:3])
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width[0], Height[0], 'black', WindowHandle)
for Index:=1 to 3 by 1
* 选择图像中数组指定索引的图像
select_obj (Image, Fin, Index)
dev_display (Fin)
* 全自动阈值分割
binary_threshold (Fin, Region, 'max_separability', 'light', UsedThreshold)
dev_set_color ('green')
dev_set_draw ('margin')
dev_set_line_width (4)
* 腐蚀
closing_circle (Region, RegionClosing, 260)
* 闭运算(计算两个区的差值)
difference (RegionClosing, Region, RegionDifference)
* 开运算(消除物体边缘的毛边)
opening_circle (RegionDifference, RegionOpening, 3.5)
dev_display (Fin)
dev_display (RegionOpening)
area_center (RegionOpening, Area, Row, Column)
if(Index<3)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
endif
endfor
