半导体晶片切割

1.半导体晶片切割

1.1 应用示例目的与思路

  1. 确定图片的宽和高,以及单个芯片的宽高;
  2. 创建形状模板和模板匹配;
  3. 根据匹配的位置计算,并画出切割线。

1.2 应用示例相关算子介绍

(1) rft_generic(Image : ImageFFT : Direction, Norm, ResultType, Width : )

功能:计算输入图像image的快速傅立叶变换。

图形输入参数:Image:输入图像;

图像输出参数:ImageFFT:傅里叶变换图像;

控制输入参数1:Direction:计算正向或反向变换;

Direction = 'to_freq'(正向变换),ResultType必须设置为’complex’;

Direction='from_freq'(反向变换);

控制输入参数2:Norm:变换的归一化因子;Default value: 'sqrt'

控制输入参数3:ResultType:输出图像的图像类型;

控制输入参数4:Width:应该为其优化运行时间的图像的宽度;Default value: 512。

(2)correlation_fft(ImageFFT1, ImageFFT2 : ImageCorrelation : : )

功能:计算傅立叶变换后的输入图像ImageFFT1和ImageFFT2在频域中的相关性。

图形输入参数1:ImageFFT1:

图形输入参数2:ImageFFT2:

图形输出参数:ImageCorrelation:频域中输入图像的相关性。

(3)reduce_domain(Image, Region : ImageReduced : : )

功能:从输入图像中扣出指定区域大小的图像。

图形输入参数1:Image:输入图形;

图形输入参数2:Region:指定区域(新的定义域);

图形输出参数:ImageReduced

(4)local_max_sub_pix(Image : : Filter, Sigma, Threshold : Row, Column)

功能:以亚像素精度从图像image中提取局部最大值。

图形输入参数:Image:

控制输入参数1:Filter:偏导数的计算方法;Default value: 'facet';

控制输入参数2:Sigma:高斯Sigma。如果Filter是“facet”,Sigma可能为0.0以避免输入图像的平滑;

控制输入参数3:Threshold:Hessian矩阵特征值的最小绝对值;

控制输出参数:(Row, Column):检测到的最大值的坐标。

(5)gen_image_const( : Image : Type, Width, Height : )

功能:创建指定大小的图像。

图形输出参数:Image:

控制输入参数1:Type:像素类型;Default value: 'byte'(0~255);

控制输入参数2:(Width, Height):图像的宽度和高度。

(6)gen_image_proto(Image : ImageCleared : Grayval : )

功能:创建具有恒定灰度值的图像。

图形输入参数:Image:

图形输出参数:ImageCleared:

控制输入参数:Grayval:指定的灰度值。

(7)gen_rectangle2_contour_xld( :  : Row, Column, Phi, Length1, Length2 : )

功能:创建任意方向的矩形XLD轮廓(通过传递一个矩形参数元组,可以创建多个XLD轮廓。)

图像输出参数:Rectangle:

图形输入参数1:(Row, Column):矩形中心的行列坐标;

图形输入参数2:Phi:矩形主轴的方向(水平轴和半长度Length1的边之间的角度(逆时针方向),单位:弧度);

图形输入参数3:Length1:矩形宽度的一半;

图形输入参数4:Length2:矩形高度的一半。

(8)gen_rectangle2( : Rectangle : Row, Column, Phi, Length1, Length2 : )

功能:创建任意方向的矩形区域(通过传递一个角点元组可以创建多个区域。)

图像输出参数:Rectangle:

图形输入参数1:(Row, Column):矩形中心的行列坐标;

图形输入参数2:Phi:矩形主轴的方向(水平轴和半长度Length1的边之间的角度(逆时针方向),单位:弧度);

图形输入参数3:Length1:矩形宽度的一半;

图形输入参数4:Length2:矩形高度的一半。

(9)create_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metric, Contrast, MinContrast : ModelID)

功能:准备一个用于匹配的形状模型。

图形输入参数:Template:输入图像,其定义域将用于创建模型的ROI;

控制输入参数1:NumLevels:金字塔级别的最大值,如果NumLevels设置为“auto”(或0表示向后兼容性),create_shape_model将自动确定棱锥体级别的数量;

控制输入参数2:(AngleStart,AngleExtent):旋转角度范围,在该范围内,模型可以出现在图像中;

控制输入参数3:AngleStep:旋转角度的步长;

控制输入参数4:Optimization:用于生成模型的优化类型和可选方法,Default value: 'auto',可传参数['none','no_pregeneration'];

控制输入参数5:Metric:确定在图像中识别模型的条件,Default value: 'use_polarity',该参数会影响find_shape_model的运行时间;

控制输入参数6:Contrast:模板图像中对象的对比度的阈值或滞后阈值,以及可选的对象部分的最小尺寸,Default value: 'auto',可传参数[10,11,4];

控制输入参数7:MinContrast:搜索图像中对象的最小对比度;

控制输出参数:ModelID:模型的句柄,用于随后对find_shape_model的调用。

(10)find_shape_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels, Greediness : Row, Column, Angle, Score)

功能:在输入图像image中查找形状模型ModelID的最佳NumMatches实例(匹配项)。

图形输入参数:Image:输入图像;

控制输入参数1:ModelID:模型的句柄;

控制输入参数2:(AngleStart, AngleExtent):确定搜索模型的旋转范围,该范围最好等于创建模型期间给定的范围;

控制输入参数3:MinScore:设置待查找模型实例的最低分数;

控制输入参数4:NumMatches:要查找的模型实例数(或0表示所有匹配项);

控制输入参数5:MaxOverlap:该参数决定了两个实例最多可以重叠的分数(即0和1之间的数字),如果两个实例彼此重叠超过MaxOverlap,则只返回最佳实例。如果MaxOverlap=0,则找到的实例可能根本不重叠,而对于MaxOverlap=1,则返回所有实例;

控制输入参数6:SubPixel:如果不等于“none”,则为亚像素精度,Default value: 'least_squares'。确定是否应以亚像素精度提取实例(即位置和旋转角度);

控制输入参数7:NumLevels:匹配中使用的金字塔体级别数(如果|NumLevels|=2,则使用最低金字塔体级别),如果NumLevels设置为0,则使用create_shape_model中指定的金字塔级别数;

控制输入参数8:Greediness:搜索启发式的贪婪度(0:安全但缓慢;1:快速但可能错过匹配),Default value: 0.9,在几乎所有情况下,对于贪婪度=0.9时,总是可以找到形状模型;

控制输出参数1:(Row, Column)、Angle:在“行”、“列”和“角度”中返回找到的模型实例的位置和旋转;

控制输出参数2:Score:返回找到的每一个实例的分数(0~1小数),它是衡量模型在图像中可见程度的近似指标(例如,如果模型实例的一半被遮挡,则分数不能超过0.5)。

(11)gen_contour_polygon_xld( : Contour : Row, Col : )

功能:从元组Row和Col中给定的多边形(包括直线)生成xld轮廓。

图形输出参数:Contour:输出的轮廓

控制输入参数:(Row, Col):输入的行和列元组

1.3 应用示例示例代码

*读取图片
read_image (Wafer_Image, './wafer_dies.png')
*获取图片的宽和高
get_image_size (Wafer_Image, Width, Height)
*傅里叶正向变换
rft_generic (Wafer_Image, ImageFFT, 'to_freq', 'none', 'complex', Width)
*计算傅里叶变换后图像的自相关性
correlation_fft (ImageFFT, ImageFFT, ImageCorrretelation)
*傅里叶逆行变换
rft_generic (ImageCorrretelation, ImageFFT1, 'from_freq', 'n', 'real', Width)
*创建一个平行于坐标轴的矩形区域
gen_rectangle1 (Rectangle, 1, 1, Height/2, Width/2)
*从输入图像中抠出指定区域大小的图像
reduce_domain (ImageFFT1, Rectangle, ImageReduced)
*从图像中提取局部最大值
local_max_sub_pix (ImageReduced, 'gauss', 2, 50000, Row, Col)
*创建指定宽高的图像
gen_image_const (Image, 'byte', Width, Height)
*生成指定灰度值的图像
gen_image_proto (Image, Template, 128)
*芯片间隙线的宽度
LineWidth:=7
*芯片的高度
DieHeight:= 86
*芯片的宽度
DieWidth:= 161
RefRow:= round(0.5*Height)
RefCol:= round(0.5*Width)
LineWidthFraction:=0.6
*创建矩形轮廓
gen_rectangle2_contour_xld (Rectangle1, RefRow, RefCol, 0, 0.5*LineWidthFraction*LineWidth,DieHeight)
paint_xld (Rectangle1, Template, Template, 0)
gen_rectangle2_contour_xld (Rectangle2, RefRow, RefCol, 0, DieWidth,0.5*LineWidthFraction*LineWidth)
paint_xld (Rectangle2, Template, Template, 0)
*创建矩形区域
gen_rectangle2 (ROI, RefRow, RefCol, 0, DieWidth, DieHeight)
reduce_domain (Template, ROI, TemplateReduced)
*创建形状模型
create_shape_model (TemplateReduced, 'auto', 0, 0, 'auto', 'auto', 'ignore_local_polarity', 'auto', 5, ModelID)
*查看模板轮廓
get_shape_model_contours (ModelContours, ModelID, 1)
*模板匹配
find_shape_model (Wafer_Image, ModelID, 0, 0, 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row1, Column1, Angle, Score)
gen_cross_contour_xld (Cross, Row1, Column1, 6, Angle)
*最后根据匹配的位置计算出切割线
Num_Row:=ceil(real(Row1)/real(DieHeight))
Num_Col:=ceil(real(Column1)/real(DieWidth))
NumRowMax:=ceil(real(Height)/real(DieHeight))
NumColMax:=ceil(real(Width)/real(DieWidth))

dev_display (Wafer_Image)

for RowIndex:=-Num_Row to NumRowMax-Num_Row by 1
    RowCurrent:=Row1+RowIndex*DieHeight
    gen_contour_polygon_xld (CuttingLine, [RowCurrent,RowCurrent], [0,Width-1])
    dev_display (CuttingLine)
endfor

for ColIndex:=-Num_Col to NumColMax-Num_Col by 1
    ColCurrent:=Column1+ColIndex*DieWidth
    gen_contour_polygon_xld (CuttingLine, [0,Height-1], [ColCurrent,ColCurrent])
    dev_display (CuttingLine)
endfor

结果展示:

半导体晶片切割_第1张图片

你可能感兴趣的:(机器视觉)