功能:检测焊料缺失的位置和数量。
THIK:这个完整区域是由多张图像拼成的,实际应用中最好有真正完整的模板图像。

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)