一 自动寻找PCB上的Pads区域
*打开一张图像
read_image (Image, 'die_pads')
*关闭已经打开的窗口
dev_close_window ()
*获取图像大小
get_image_size (Image, Width, Height)
*打开新窗口
dev_open_window (0, 0, Width * 2, Height * 2, 'black', WindowHandle)
*在新窗口里显示图像
dev_display (Image)
*修改窗口里显示图像的大小
dev_set_part (0, 0, Height - 1, Width - 1)
*快速阈值
fast_threshold (Image, Region, 180, 255, 20)
*对区域进行连通处理,获取区域里连通的组件
connection (Region, ConnectedRegions)
*过滤面积大小在【200, 1200】范围里和区域的长轴和短轴的比值在【1, 2】的区域
select_shape (ConnectedRegions, SelectedRegions, ['area','anisometry'], 'and', [200,1], [1200,2])
*填充过滤后区域里的内部间隙
fill_up (SelectedRegions, RegionFillUp)
*将填充区域形状转化为凸形
shape_trans (RegionFillUp, RegionTrans, 'convex')
*获取凸形区域的边界
boundary (RegionTrans, RegionBorder, 'inner')
*对RegionBorder区域进行形态学的膨胀操作,结构元素为2.5
dilation_circle (RegionBorder, RegionDilation, 2.5)
*将膨胀后的区域合并为一个区域
union1 (RegionDilation, RegionUnion)
*剪切出来RegionUnion里的图像
reduce_domain (Image, RegionUnion, ImageReduced)
*对ImageReduced图像进行边缘提取
edges_sub_pix (ImageReduced, Edges, 'sobel_fast', 0.5, 20, 40)
*对Edges里的轮廓进行过滤,保留长度范围在【10, 200】的轮廓
select_shape_xld (Edges, SelectedContours, 'contlength', 'and', 10, 200)
*将相邻的轮廓合并为一个轮廓
union_adjacent_contours_xld (SelectedContours, UnionContours, 2, 1, 'attr_keep')
*将UnionContours轮廓拟合成为一个仿射矩形轮廓
fit_rectangle2_contour_xld (UnionContours, 'tukey', -1, 0, 0, 3, 2, Row, Column, Phi, Length1, Length2, PointOrder)
*生成仿射轮廓
gen_rectangle2_contour_xld (Rectangle, Row, Column, Phi, Length1, Length2)
*显示图像
dev_display (Image)
*设置输出显示的颜色数目
dev_set_colored (12)
*显示PADs区域
dev_display (Rectangle)