* ball.hdev: Inspection of Ball Bonding
*
1、dev_update_window ('off')
- 更新窗口,关闭
- 如果只有被选中的对象需要显示在图形窗口中,这个选项应该设置为“关闭”。在这种情况下,对象应该由dev_display显示。
2、dev_close_window ()
- 关闭活动的浮动图形窗口
3、dev_open_window (0, 0, 728, 512, 'black', WindowID)
- 打开一个728,512的窗口
4、read_image (Bond, 'die/die_03')
- 读取某文件夹下的图片
- 注意读取的图片格式应该与它的后缀名相同。
- 例如:该图像原本是.png格式,经过修改后缀名改为.jpg格式,是不能正常读取的。
5、dev_display (Bond)
- 显示图像
6、set_display_font (WindowID, 14, 'mono', 'true', 'false')
- 参数:窗口句柄,字体大小,字体类型,是否加粗,是否为斜体
disp_continue_message (WindowID, 'black', 'true')
- 在屏幕右下角显示“Click 'Run' to continue”。
- 参数:定义文本颜色,如果设置为''或'auto',则使用当前设置的颜色;如果设置为“true”,文本将写入一个白色框中。
- 与stop()配合使用
- 当碰到stop时,程序停止,按F5继续执行到下一个stop()处
7、threshold (Bond, Bright, 100, 255)
- 利用全局阈值分割图像
- 阈值范围为100~255,在这个范围内的图像区域会被分割出来
8、shape_trans (Bright, Die, 'rectangle2')
- 变换区域的形状
- 参数:输入区域、输出区域、变换形状
9、dev_set_color ('green')
- 定义了用于在图形窗口中显示区域、xld和其他几何对象的颜色
10、dev_set_line_width (3)
- 定义区域轮廓输出的线宽
11、dev_set_draw ('margin')
- 定义区域填充模式
12、dev_display (Die)
- 显示图像
13、disp_continue_message (WindowID, 'black', 'true')
- 继续黑色
stop ()
14、reduce_domain (Bond, Die, DieGrey)
- 减小图像的域
- 参数:输入原图像、经过处理后需要分割出来的区域,输出分割区域
15、threshold (DieGrey, Wires, 0, 50)
16、fill_up_shape (Wires, WiresFilled, 'area', 1, 100)
- 根据一定的条件进行填充
dev_display (Bond)
dev_set_draw ('fill')
dev_set_color ('red')
dev_display (WiresFilled)
disp_continue_message (WindowID, 'black', 'true')
stop ()
opening_circle (WiresFilled, Balls, 15.5)
- 开运算,用一个半径15.5的圆放进填充区域,能放下的保留,不能放下的去除
- 作用:消除小区域(比圆形结构单元小),平滑区域的边界
dev_set_color ('green')
dev_display (Balls)
disp_continue_message (WindowID, 'black', 'true')
stop ()
connection (Balls, SingleBalls)
- 将不连通的区域打散
select_shape (SingleBalls, IntermediateBalls, 'circularity', 'and', 0.85, 1.0)
- 参数:输入图像,输出图像,选择的形状特征,个体特征的联动关系,范围大小
sort_region (IntermediateBalls, FinalBalls, 'first_point', 'true', 'column')
- 对区域进行排序
- 参数:原区域,排序后的区域,排序模式,排序顺序(递增或递减),按照行排列或列排列
dev_display (Bond)
dev_set_colored (12)
- 设置多个输出颜色
dev_display (FinalBalls)
disp_continue_message (WindowID, 'black', 'true')
stop ()
smallest_circle (FinalBalls, Row, Column, Radius)
- 区域的最小外接圆
- 参数:输入已打散的区域,输出各个区域的圆心坐标、半径
NumBalls := |Radius|
Diameter := 2 * Radius
meanDiameter := sum(Diameter) / NumBalls
mimDiameter := min(Diameter)
dev_display (Bond)
disp_circle (WindowID, Row, Column, Radius)
- 在图像中显示上述圆圈
dev_set_color ('white')
for i := 1 to NumBalls by 1
if (fmod(i,2) == 1)
disp_message (WindowID, 'D: ' + Diameter[i - 1], 'image', Row[i - 1] - 2.7 * Radius[i - 1], max([Column[i - 1] - 60,0]), 'white', 'false')
else
disp_message (WindowID, 'D: ' + Diameter[i - 1], 'image', Row[i - 1] + 1.2 * Radius[i - 1], max([Column[i - 1] - 60,0]), 'white', 'false')
endif
endfor
- 在指定位置编写一条或多条文本消息
- 参数:窗口句柄,输出字符串,如下,文本位置(行列坐标),字体颜色,是否有边框
- 第三个参数:如果设置为'window',文本位置将根据窗口坐标系给出。如果设置为'image',则使用图像坐标(这在缩放后的图像中可能有用)。
* dump_window (WindowID, 'tiff_rgb', './ball')
dev_set_color ('green')
dev_update_window ('on')
disp_continue_message (WindowID, 'black', 'true')
stop ()
dev_close_window ()