杨 利,陈柳松,谢永超
(1.湖南铁道职业技术学院,湖南 株洲 412000;2.中车株洲所电气技术与材料工程研究院,湖南 株洲 412000)
集成电路芯片在封装完成后,需要经过检测环节来确保芯片的品质[1]。检测环节包括电性能检测和芯片外观缺陷检测。芯片外观缺陷是指对根据芯片外观判断芯片是否存在缺陷,外观无缺陷的芯片才能进入电性能测试。因此,芯片外观缺陷检测在集成电路芯片制造业中是非常重要的环节[2]。传统的缺陷检测方法是指人工检验芯片外壳是否完整,引脚是否有缺失、引脚间距是否一致等问题[3-5]。由于芯片种类繁杂、引脚较多、间距小等工艺特性,人工检测存在效率低、误判率高、不易量化等问题,已经无法适应日趋发展的工业领域。
机器视觉是通过机器来代替人眼进行一系列的判断,可以克服人工检测存在的效率和准确率低的缺点。基于机器视觉的芯片缺陷检测技术是指通过工业相机实时获取芯片外形图像,利用图像处理算法对图像进行处理,根据预设判据判断芯片是否存在缺陷。双球贴片红外接收头是一种新型的红外传感器芯片,常用于电子遥控器等产品中,生产过程中需要对芯片进行缺陷检测。其中芯片反面为4个引脚,需要检测引脚是否均匀、长短是否一致、是否弯曲等。但芯片尺寸非常小(约7*3*3 mm),使得人工检测难度大,因此用机器视觉检测技术对该芯片进行引脚缺陷检测具有很大的实际意义。
机器视觉检测系统一般由硬件及软件两部分组成[6]。硬件部分由光源、工业相机、镜头、计算机等组成,完成图像的采集功能;软件部分由图像处理软件组成,软件中的机器视觉算法完成对目标工件的降噪、预处理、特征提取、定位识别以及尺寸检测等功能[7-8]。工业相机分普通工业相机和智能工业相机,普通工业相机只负责图像采集,图像处理软件运行在计算机中;智能工业相机负责图像采集和图像处理,采用智能工业相机的系统不需要额外配置计算机。本系统采用智能工业相机完成图像采集和图像处理。
如图1所示为系统总体框图。系统运行时,输送链将待检测芯片传输至相机正下方的光照条件下,芯片反射光源发出的光后透过镜头在工业相机中成像[9-10];工业相机采集图像后自动触发图像检测算法,实现对芯片的缺陷检测;识别完成后通过socket通讯协议发送给工业机器人;工业机器人准确地吸取芯片,把瑕疵品和合格品分类放置到不同区域。
图1 系统框图
工业相机采用海康威视公司的X86智能相机,分辨率为4 096*2 160,像素为890万,FPS(帧率)为80 fps,满足本设计的要求。由于芯片体积仅7*3*3 mm,需采用高倍镜头才能放大得到清晰的图像。另外光源采用圆顶光源,因为圆顶光源将LED环形光源安装在碗状表面内且向圆顶内照射,使得芯片的各个角度得到均匀的照明,不会出现反光不均匀的地方,从而获得芯片的无影图像。
工业机器人采用ABBIRB 360蜘蛛手工业机器人,拾料范围达1 130 mm,具备出众的跟踪性能,便于与集成视觉软件实现同步控制,满足本设计的要求。
芯片的4个引脚位于芯片反面,合格品引脚个数完整、间距均匀、长短一致。在图像采集完成后,先进行图像滤波、二值化等预处理得到对比度强的清晰图像;然后对图像进行边缘检测得到ROI(感兴趣)区域,并对图像特征进行提取;最后根据引脚个数判断引脚是否缺失,根据引脚间距判断引脚是否偏移。视觉检测流程如图2所示。
图2 视觉检测流程图
2.1.1 滤波
根据滤除信号频率的不同,滤波器主要分为高频滤波器、低频率滤波器。其中高频滤波器的主要作用是突出图像的边界,低频滤波器的主要作用是滤除图像上的噪声。中值滤波器是一种典型的低频滤波器,其原理是取图像中某点的一个邻域,把该点的值用邻域中各点值的中值代替,这使得该点值更加接近真实的值,可以消除孤立的椒盐噪声点。和均值滤波器相比,在滤除图像噪声的同时不会造成图像细节模糊,符合本设计的要求。
标准中值滤波器公式为:
g(i,j)=med[f(i)-k,j-1]
(1)
式中,f(i,j)为原始图像、g(i,j)为滤波后的图像,(k,l)为邻域大小,也称为滤波器的核。核越大滤波效果越好,但图像的模糊化也会更严重。
本文中利用VisionPro软件中的IPOneImage工具对图像进行中值滤波处理,在工具中先添加一个N*M的中值滤波器,再将滤波核的大小设为7*7。
2.1.2 灰度化处理
由于本系统相机为彩色相机,当拍摄环境有颜色时会输出彩色图像,这会干扰引脚缺陷检测效果,因此需先将图像进行灰度化处理,即将彩色图像转换为灰度图像。
本文中利用VisionPro软件中的ImageConvert工具进行彩色图像到灰色图像的处理。ImageConvert工具的“运行模式”参数:表示图像颜色空间的转换算法。本文选择亮度算法,亮度算法表示从RGB(红绿蓝色彩分量)分量变为灰度图像时,算法公式是:
Brightnes=0.3*R+0.6*G+0.1*B
(2)
式中,R为彩色图像的红色分量,G为绿色分量,B为蓝色分量。Brightnes为灰度值。
引脚个数检测的基本原理为:找到合格品芯片中的合格引脚,并以此为训练模板,当待测引脚图像和训练模板图像特征匹配度高时,判断引脚合格。
VisionPro软件中的PMAlign工具能根据训练模板的特性对目标图像进行识别和定位。使用该工具时,先在一个选定的搜索区域内训练一个模板,然后在连续的输入图像中搜索该模板。PMAlign工具中选择PatMax图像定位集成算法。PatMax基于图像特征而非像素特征,因此可以识别不同角度、不同尺寸的目标。
通过对合格引脚图片的训练,可快速搜索到图像中的引脚,从而分辨出引脚个数。关键参数设置如图3所示。其中,由于图像方向的不确定性,“角度”参数设置为最大:-180~180°;由于拍摄视角的不同,图像大小会有所差异,“缩放”参数设置为:0.8~1.2。由于引脚个数最大为4,“查找概数”参数设置为:4。
图3 PMAlign工具参数设置
利用PMAlign工具进行训练后,能够准确地找出引脚缺失的瑕疵品,但是实际生产过程中存在引脚完整但引脚弯曲或偏移的瑕疵品,因此需要进一步进行缺陷检测判断。
针对引脚个数为4的芯片需要进一步计算引脚间距,以判断引脚是否弯曲。假设4个引脚的中心点分别为p0、p1、p2、p3。引脚弯曲时其中心点可能偏移很小,且PMAlign识别时不是按照图像中引脚的顺序进行搜索,因此不能把引脚中心点的距离作为判据。
如图4所示,取垂直方向为基准线,设p0和p1两点连接与基准线之间的角度为a1,p0和p2两点连接与基准线之间的角度为a2,p0和p3两点连接与基准线之间的角度为a3。当角度为负值时,先要将角度加上180°转为正值。
图4 引脚弯曲判断原理
(3)
当(3)式成立时,引脚分布均匀且不弯曲,产品为合格品,否则为瑕疵品。
本文利用VisionPro软件的AnglePonitPonit工具计算两点形成线与基准线之间的角度,将两引脚间中心点的角度差作为判据。
综上所示,VisionPro的程序如图5所示:导入图像;利用ImageConvert工具将图像转为灰度图像;利用IPOneImage工具对图像进行中值滤波滤除孤立噪声;利用PMAlign工具实现对引脚的定位和搜索,计算出引脚个数;如果引脚个数小于4,则判断芯片为引脚缺失的瑕疵品;如果引脚个数为4,进一步利用AnglePointPonit工具对引脚中心点的角度进行计算,如果角度偏差大于1°,判断芯片引脚弯曲或偏移。
图5 VisionPro程序
相机成功识别芯片后,通过socket协议发送数据给机器人。机器人与相机通讯步骤为:socket通讯建立及数据收发、数据解析、坐标系转换。
建立机器人与相机的socket通讯,并接收相机数据。建立socket通讯时,先要调用socket关闭函数,确保之前的socket通讯关闭,防止数据冲突出错。具体代码如下所示:
SocketClose socket1;//关闭之前的socket通讯
SocketCreate socket1;//新建一个socket通讯
SocketConnect socket1,"192.168.100.101",1400;//IP寻址
SocketSend socket1Str:="M";
SocketReceive socket1Str:=string1;//接收相机数据
WaitTime 0.5;
SocketClose socket1;
数据解析目的是提取芯片的位置信息及识别结果。通讯数据格式为“x,y,theta,resultOD”,其中x为x坐标;y为y坐标;theta为旋转角度,result为识别结果(1:合格品;0:瑕疵品)。如“1.23,4.56,7.89,1 D”,表示x=1.23,y=4.56,theta=7.89,芯片为合格品。机器人核心代码如下所示:
StartBit1:=1;
EndBit1:=StrFind(string1,StartBit1,”,”);//根据“,”分割数据
LenBit1:=EndBit1-StartBit1;//x数据长度
StartBit12:=EndBit1+1;
EndBit2:=StrFind(string1,StartBit2,”,”);
LenBit2:=EndBit2-StartBit2;//y数据长度
StartBit13:=EndBit2+1;
EndBit3:=StrFind(string1,StartBit3,”,”);
LenBit3:=EndBit3-StartBit3;//theta数据长度
StartBit14:=EndBit3+1;
EndBit4:=StrFind(string1,StartBit4,””);
LenBit4:=EndBit4-StartBit4;//result数据长度
S1:=strpart(string1,StartBit1,LenBit1);//找到x坐标
S2:=strpart(string1,StartBit2,LenBit2);//找到y坐标
S3:=strpart(string1,StartBit3,LenBit3);//找到theta坐标
S4:=strpart(string1,StartBit4,LenBit4);//找到resut
flag1:=StrToVal(S1,x);//结果转换为num数据类型
flag2:=StrToVal(S2,y);
flag3:=StrToVal(S3,theta);
flag4:=StrToVal(S4,result);
机器人要准确抓取到目标工件,需得到目标工件的工件坐标系数据。但是相机的坐标数据格式为:x、y、theta;机器人用四元数表示角度,坐标数据组成是trans:xyz以及rot:q1~q4。因此必须先将相机坐标系转换为机器人坐标系。ABB机器人系统中工件坐标系由oframe(工件坐标框架)和uframe(用户坐标框架)组成。可以利用相机获取的芯片坐标数据去实时更新机器人的工作坐标系数据。
具体方法:工件坐标系的uframe和相机坐标系的原点对齐,取成像区域的最左上角点;通过相机拍照获得芯片的位置,并据此更新机器人工件坐标系的oframe。
转换步骤:
1)利用EulerZYX函数将初始工件坐标系的四元数转换为x/y/z;
2)利用3.2节中解析得到的坐标数据更新x/y/z;
3)利用OrientZYX函数还原得到新的四元数。
机器人关键代码如下所示:
euler_x:=EulerZYX(x,Workobject_1.oframe.rot);//提取原x坐标
euler_y:=EulerZYX(y,Workobject_1.oframe.rot);//提取原y坐标
euler_z:=EulerZYX(z,Workobject_1.oframe.rot);//提取原z坐标
euler_x:=x;//更新x
euler_u:=y;//更新y
euler_z:=euler_z+theta;//更新z
Workobject_1.oframe.rot:=OrientZYX(euler_z,euler_y,euler_x);//更新工件坐标系Workobject_1的数据
系统调试完成后,软件算法下载至X86智能工业相机。将合格品和瑕疵品芯片混合放置在输送链上传送至光源下方,相机以80 fps帧率自动拍照并根据算法进行图像处理和缺陷检测。以合格品、引脚缺失瑕疵品、引脚分布不均瑕疵品、引脚弯曲瑕疵品为例,得到如图6所示的运行结果。
其中图(a1)为合格品原图,图(a2)为引脚个数识别图,识别结果为4,进入下一步引脚间距计算后发现如图(a3)所示引脚间中心点的角度偏差几乎为0,据此判断为合格品;图(b1)所示芯片引脚弯曲严重,导致引脚个数只识别出3个,判断为引脚缺失瑕疵品,无需进入引脚间距计算,列为瑕疵品,如图(b2)所示;图(c1)所示芯片引脚分布不均,虽然识别出4个引脚,如图(c2)所示,但进一步引脚间距计算时,发现引脚中心点的角度差大于1°,如图(c3)所示,据此判断为芯片为瑕疵品;图(d1)所示芯片引脚弯曲严重,虽然图(d2)识别出4个引脚,但图(d3)所示的芯片引脚中心点的角度差比较大,据此判断为瑕疵品。图6结果表明本系统能够正确识别出合格品和瑕疵品。
图6 典型芯片运行结果对比
实验过程中,合格品和瑕疵品实验样本个数都选取1 000个。统计得到表1所示的测试数据。实验结果表明,该系统针对合格品的误判率为0.4%,针对瑕疵品的误判率为0%,满足工业系统误判率低于0.4%的要求,符合工业生产的标准。
表1 测试数据
基于机器视觉的红外接收头芯片引脚缺陷检测系统,以海康威视X86智能工业相机和ABB IRB 360工业机器人为核心。工业相机拍摄到芯片引脚图像后,先进行图像滤波、二值化等预处理。然后利用VisionPro软件中的PMAlign工具进行图像特征匹配,搜索出引脚的个数,如果引脚个数小于4,判断芯片为缺陷品,反之则利用AnglePonitPonit工具进行引脚间距计算。如果各引脚间中间点的角度偏差大于1°,判断芯片为瑕疵品,反之为合格品。识别完成后,工业相机通过socket通讯协议将芯片的x坐标、y坐标及角度、识别结果发送给工业机器人。工业机器人收到数据后,更新工件坐标系数据实现准备地抓取芯片功能,并将合格品和瑕疵品分别放置至不同区域,完成芯片的分类管理。实验结果表明,该系统的对合格品的误判率为0.4%,对瑕疵品的误判率为0%,满足工业生产需求。