1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| * 启用区域剪裁 get_system ('clip_region', Information) set_system ('clip_region', 'true')
* 读取图像并合并 read_image (Images, ['ic0', 'ic1', 'ic2', 'ic3']) channels_to_image (Images, Ic) select_obj (Images, Input1, 1) select_obj (Images, Input2, 2) select_obj (Images, Input3, 3) select_obj (Images, Input4, 4)
* 对图像进行处理,检测暗区域(潜在的焊料缺失位置) mean_n (Ic, ImageMean) threshold (Images, Darks, 0, 40) union1 (Darks, Dark) fill_up (Dark, DarkFilled) * 检测亮区域 threshold (Images, Lights, 100, 255) union1 (Lights, Light)
* 计算暗区域和亮区域的交集 intersection (DarkFilled, Light, Intersection)
* 计算暗区域的补集,生成背景区域 complement (DarkFilled, Back) * 扩展交集区域 expand_region (Intersection, Back, RegionExpanded, 10, 'image') * 填充扩展区域,生成良好的区域 fill_up (RegionExpanded, Good)
* 计算缺失焊料的区域 difference (DarkFilled, Good, Rest) * 根据图像IC的灰度信息扩展缺失焊料区域Rest为Bad * expand_gray(Region, Image, ForbiddenRegion, RegionExpanded, Iterations, Mode, Threshold) expand_gray (Rest, Ic, Good, Bad, 6, 'image', 5)
* 筛选区域,统计面积和中心坐标 connection (Bad, ConnectedBad) select_shape (ConnectedBad, BigBad, 'area', 'and', 150, 99999) area_center (BigBad, AreaBad, Row, Column) count_obj (BigBad, NumMissingSolder) AreaMissingSolder := sum(AreaBad)
* 恢复区域剪裁设置 set_system ('clip_region', Information)
|