图片资源
链接:https://pan.baidu.com/s/1V0dnHdkCAz8C2_zRS5-FVA
提取码:0c5c
处理流程
1、筛选出环形区域
2、计算外边缘区域(高斯导数梯度)
3、减法补集 获取边缘缺口区域
4、显示结果
完整代码
dev_update_off ()
dev_clear_window ()
for Index := 1 to 2 by 1
**** 1、读取图片 *********************
read_image (Image, './img/'+ (Index) $'02')
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width/2 , Height/2, 'black', WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_display (Image)
**** 2、二值化筛选出环形区域 *********************
threshold (Image, Region, 100, 255)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, CircularRegions, \
['area', 'circularity'], 'and', \
[20000, 0.6], [9999999, 1.0])
**** 3、计算外边缘区域*********************
* 聚焦环形区域
reduce_domain (Image, CircularRegions, ImageReduced)
* 高斯滤导数处理 1.5:sigma 'gradient' : 梯度边缘
derivate_gauss (ImageReduced, DerivGauss, 1.5, 'gradient')
* 二值化
threshold (DerivGauss, GaussRegion, 9, 50)
* 连通域筛选
connection (GaussRegion, ConnectedGaussRegions)
select_shape_std (ConnectedGaussRegions, EdgeSelectedStd, 'max_area', 70)
**** 4、填充边缘区域 计算缺陷区域*********************
* 填充边缘区域
fill_up (EdgeSelectedStd, RegionFillUp)
* 填充区域 - 边缘区域 = 分割缺陷区域(包含)
difference (RegionFillUp, EdgeSelectedStd, RegionDifference)
* 连通域筛选 缺陷区域
connection (RegionDifference, DiffRegions)
select_shape (DiffRegions, DefectRegions, 'area', 'and', 50, 2000)
**** 5、显示缺陷*********************
dev_display (Image)
* dev_set_draw ('margin')
dev_display (DefectRegions)
if (Index < 2)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
endif
endfor