一种基于行列直线聚类的多类型BGA芯片视觉识别方法
技术领域
本发明涉及多类型BGA芯片视觉识别方法,特别涉及一种基于行列直线聚类的多类型BGA芯片视觉识别方法。
背景技术
BGA(球形阵列)封装形式的芯片由于集成度高、I/O引线多以及优良的电性能正广泛的应用于集成电路中。但芯片高密度的I/O焊球引脚对电路板贴装过程的贴装工艺提出了更为严格的要求。表面贴装技术(SMT)是一种高效的全自动化印刷电路板芯片贴装技术,贴片机作为该技术中的主要生产设备,基于视觉技术来完成不同芯片的识别、缺陷检测、定位、贴装等过程。其中,芯片识别是贴装的基础,贴片机通过对标准BGA样片进行在线测量,建立该类型BGA芯片的标准数据库:焊球标准行间距、焊球标准列间距、焊球标准直径、焊球分布样式等,进而为后续贴装芯片的缺陷检测提供标准数据参考。但BGA芯片高密度的I/O焊球引脚数目以及多样的焊球排列方式都增加了芯片识别与检测的困难。
常用的BGA芯片根据焊球排布规律主要分为规则和不规则型,规则型中任意相邻两行的焊球成整齐的行列排布,而对不规则型,任意相邻两行焊球交错排列。此外,对于上述两种BGA芯片,焊球排布不同位置存在的不同大小的空缺,也会造成BGA芯片种类的多样性。总之,BGA芯片高密度的I/O焊球引脚以及多样的焊球排列方式都要求识别算法具有良好的实时性和通用性。
现有BGA芯片的识别过程主要包括如下两种方式:一种是采用人工测量录入标准数据,这种识别方法费时费力,且容易产生主观偏差和测量错误,不易于自动化管理。另一种是逐步被采用的计算机视觉识别方式,但目前的BGA芯片识别算法主要存在如下不足:1)算法的应用有较大局限性,现有公布的算法只能识别特定种类或者有限几种焊球排布的BGA芯片。2)算法对于焊球排布稀疏的BGA芯片鲁棒性较差,或者根本无法识别。3)算法在进行BGA焊球提取时,常采用图像二值分割的方式,因此易将背景也分割出来形成噪点,识别算法会误判为焊球,最终导致错误识别结果。4)某些算法对被识别的BGA芯片的初始摆放位置要求严格,通常都要求芯片水平或者垂直摆放。5)某些算法例如点匹配算法在识别过程中涉及到大量的遍历和比较操作,导致算法的时间复杂度高。
发明内容
本发明的目的是为了解决现有BGA芯片识别算法的如下几方面问题:1)只能识别特定种类或者有限几种焊球排布的BGA芯片,对于焊球排布稀疏的BGA芯片鲁棒性较差,或者根本无法识别。2)仅仅采用单阈值二值化图像来提取焊球,导致欠分割或过分割,造成焊球参数测量错误或者焊球误识别。3)算法的时间复杂度高。而提出的一种基于行列直线聚类的多类型BGA芯片视觉识别方法
上述的发明目的是通过以下技术方案实现的:
步骤一、对摄像头采集到的灰度BGA芯片图像,即为原始图像,进行动态阈值分割得到二值焊球图像,并对二值焊球图像进行形态学开运算和闭运算处理,处理后的二值焊球图像上的每个连通域记为一个二值化BGA焊球,然后对每个二值化BGA焊球进行连通域标记;
步骤二、对步骤一得到的经过连通域标记后的每个二值化BGA焊球在原始图像上对应邻域范围内进行灰度连通域提取,获得完整灰度BGA焊球,并建立完整灰度BGA焊球信息列表;
其中,建立完整灰度BGA焊球信息列表内容包括:每个完整灰度BGA焊球所包含的灰度像素,以及由灰度像素计算得到的每个完整灰度BGA焊球的中心点位置坐标、每个完整灰度BGA焊球对应的最小外包圆直径、每个完整灰度BGA焊球的周长和圆度;每个焊球包含的灰度像素包括像素坐标和灰度值;
步骤三、用步骤二得到的完整灰度BGA焊球信息列表,建立一个像素灰度值均为0且大小与原始图像相同的背景图像;并在背景图像中,将对应原始图像中每个完整灰度BGA焊球中心点位置处的灰度值,变为对应二值化BGA焊球的标识序号,此时的背景图像即为BGA焊球标识图像,BGA焊球标识图像上的每个非0灰度值的像素称为一个等效BGA焊球,所有等效BGA焊球构成的阵列称为等效BGA阵列;
其中,原始图像中有M*N个完整灰度BGA焊球,对应背景图像中就有M*N个等效BGA焊球,等效BGA焊球实质为一个像素,完整灰度BGA焊球与等效BGA焊球一一对应;在BGA焊球标识图像中,计算相邻2个等效BGA焊球的间距△γ,将此间距作为等效BGA焊球间距典型值;
步骤四、利用步骤三得到的等效BGA焊球间距典型值△γ,在BGA焊球标识图像上,对等效BGA阵列进行局部分析,确定等效BGA阵列粗略偏转角度△θ;
其中,局部分析分为针对规则型BGA芯片的局部分析和针对不规则BGA芯片的局部分析,规则型BGA芯片为相邻行BGA焊球成整齐排列的BGA芯片,不规则BGA芯片为相邻行BGA焊球成交错排列的BGA芯片;
步骤五、利用步骤三得到的等效BGA焊球间距典型值△γ以及步骤四得到的等效BGA阵列粗略偏转角度△θ,在BGA焊球标识图像上,对行和列的等效BGA焊球进行直线聚类得到每行等效BGA焊球蔟、每列等效BGA焊球蔟以及边界等效BGA焊球蔟;
步骤六、利用步骤五得到的边界等效BGA焊球蔟中的每个等效BGA焊球在标识图像上的灰度值,在完整灰度BGA焊球信息列表中查找对应的完整灰度BGA焊球中心点位置坐标,根据完整灰度BGA焊球中心点位置坐标,进行边界直线拟合,通过边界拟合直线求解原始图像中BGA芯片的偏转角度和中心位置;
步骤七、利用步骤五识别得到的每行等效BGA焊球蔟和每列等效BGA焊球蔟,以及步骤二得到的完整灰度BGA焊球信息列表进行每行等效BGA焊球蔟直线拟合和每列等效BGA焊球蔟直线拟合;将所有相邻两行等效BGA焊球蔟的拟合直线间距的平均值作为BGA芯片焊球标准行间距;将所有相邻两列等效BGA焊球蔟拟合直线间距的平均值作为BGA芯片焊球标准列间距;
步骤八、利用步骤七得到的每行等效BGA焊球蔟拟合直线和每列等效BGA焊球蔟拟合直线,在BGA焊球标识图像上对等效BGA焊球进行逐行或逐列搜索,进而得到BGA焊球分布矩阵;根据逐行或逐列搜索得到的所有等效BGA焊球以及步骤二得到的完整灰度BGA焊球信息列表求解得到BGA标准焊球直径尺寸、BGA标准焊球周长尺寸和BGA标准焊球圆度尺寸。
发明效果
本发明主要针对现有BGA视觉识别算法鲁棒性和实时性较差,提出了一种基于行列直线聚类的多类型BGA芯片视觉识别方法。针对现有BGA视觉识别算法鲁棒性差、时间复杂度较高的不足,本发明提出了一种基于行列直线聚类的多类型BGA芯片视觉识别方法,该算法的主要优点如下:1)算法在局部分析的基础上对行列焊球进行直线聚类与识别,这种方法适用于绝大多数不同类型的BGA芯片,如图2(a)和图2(b)所示芯片。2)该算法识别过程对BGA芯片摆放姿态无要求。3)该算法能够有效排除图像二值化过程因为过分割引入的如图3所示的噪声点对识别过程的干扰。4)该算法对于焊球排布较为稀疏的BGA芯片仍然能够正确识别,图4给出了一种焊球排布较为稀疏的BGA芯片。5)算法的时间复杂度低,能够满足在线实时识别的要求。实验结果表明,在C++编译环境下,检测算法在B960(主频:2.2GHz,双核)的PC机上运行,对于焊球数目小于500个的BGA芯片的识别时间小于200ms;
附图说明
图1为具体实施方式一提出的一种基于行列直线聚类的多类型BGA芯片视觉识别方法流程图;
图2(a)为为具体实施方式三提出的对BGA焊球中规则BGA芯片局部分析示例图;
图2(b)为具体实施方式四提出的对BGA焊球中不规则BGA芯片进行局部分析示例图;
图3为具体实施方式五提出的中对行列BGA焊球进行直线聚类的示例图,其中,表示第j个等效BGA焊球坐标对应的等效BGA焊球行直线方程的截距,表示第j个等效BGA焊球坐标对应的等效BGA焊球列直线方程的截距,表示第i个等效BGA焊球坐标对应的等效BGA焊球行直线方程的截距,表示第i个等效BGA焊球坐标对应的等效BGA焊球列直线方程的截距,表示第k个等效BGA焊球坐标对应的等效BGA焊球列直线方程的截距。
图4为具体实施方式一提出的一种焊球排布较为稀疏的BGA芯片示例图。
具体实施方式
具体实施方式一:本实施方式的一种基于行列直线聚类的多类型BGA芯片视觉识别方法,具体是按照以下步骤实施的:
步骤一、对摄像头采集到的灰度BGA芯片图像,即为原始图像,进行动态阈值分割得到二值焊球图像,并对二值焊球图像进行形态学开运算和闭运算处理,处理后的二值焊球图像上的每个连通域记为一个二值化BGA焊球,然后对每个二值化BGA焊球进行连通域标记;
步骤二、对步骤一得到的经过连通域标记后的每个二值化BGA焊球在原始图像上对应邻域范围内进行灰度连通域提取,获得完整灰度BGA焊球,并建立完整灰度BGA焊球信息列表;
其中,建立完整灰度BGA焊球信息列表内容包括:每个完整灰度BGA焊球所包含的灰度像素,以及由灰度像素计算得到的每个完整灰度BGA焊球的中心点位置坐标、每个完整灰度BGA焊球对应的最小外包圆直径、每个完整灰度BGA焊球的周长和圆度;每个焊球包含的灰度像素包括像素坐标和灰度值;
步骤三、用步骤二得到的完整灰度BGA焊球信息列表,建立一个像素灰度值均为0且大小与原始图像相同的背景图像;并在背景图像中,将对应原始图像中每个完整灰度BGA焊球中心点位置处的灰度值,变为对应二值化BGA焊球的标识序号,此时的背景图像即为BGA焊球标识图像,BGA焊球标识图像上的每个非0灰度值的像素称为一个等效BGA焊球,所有等效BGA焊球构成的阵列称为等效BGA阵列;
其中,原始图像中有M*N个完整灰度BGA焊球,对应背景图像中就有M*N个等效BGA焊球,等效BGA焊球实质为一个像素,完整灰度BGA焊球与等效BGA焊球一一对应;在BGA焊球标识图像中,计算相邻2个等效BGA焊球的间距△γ,将此间距作为等效BGA焊球间距典型值;
步骤四、利用步骤三得到的等效BGA焊球间距典型值△γ,在BGA焊球标识图像上,对等效BGA阵列进行局部分析,确定等效BGA阵列粗略偏转角度△θ;
其中,局部分析分为针对规则型BGA芯片的局部分析和针对不规则BGA芯片的局部分析,规则型BGA芯片为相邻行BGA焊球成整齐排列的BGA芯片,不规则BGA芯片为相邻行BGA焊球成交错排列的BGA芯片;
步骤五、利用步骤三得到的等效BGA焊球间距典型值△γ以及步骤四得到的等效BGA阵列粗略偏转角度△θ,在BGA焊球标识图像上,对行和列的等效BGA焊球进行直线聚类得到每行等效BGA焊球蔟、每列等效BGA焊球蔟以及边界等效BGA焊球蔟如图3;
步骤六、利用步骤五得到的边界等效BGA焊球蔟中的每个等效BGA焊球在标识图像上的灰度值,在完整灰度BGA焊球信息列表中查找对应的完整灰度BGA焊球中心点位置坐标,根据完整灰度BGA焊球中心点位置坐标,进行边界直线拟合,通过边界拟合直线求解原始图像中BGA芯片的偏转角度和中心位置;
步骤七、利用步骤五识别得到的每行等效BGA焊球蔟和每列等效BGA焊球蔟,以及步骤二得到的完整灰度BGA焊球信息列表进行每行等效BGA焊球蔟直线拟合和每列等效BGA焊球蔟直线拟合;将所有相邻两行等效BGA焊球蔟的拟合直线间距的平均值作为BGA芯片焊球标准行间距;将所有相邻两列等效BGA焊球蔟拟合直线间距的平均值作为BGA芯片焊球标准列间距;
步骤八、利用步骤七得到的每行等效BGA焊球蔟拟合直线和每列等效BGA焊球蔟拟合直线,在BGA焊球标识图像上对等效BGA焊球进行逐行或逐列搜索,进而得到BGA焊球分布矩阵结合图1;根据逐行或逐列搜索得到的所有等效BGA焊球以及步骤二得到的完整灰度BGA焊球信息列表求解得到BGA标准焊球直径尺寸、BGA标准焊球周长尺寸和BGA标准焊球圆度尺寸。
本实施方式效果:
本实施方式主要针对现有BGA视觉识别算法鲁棒性和实时性较差,提出了一种基于行列直线聚类的多类型BGA芯片视觉识别方法。针对现有BGA视觉识别算法鲁棒性差、时间复杂度较高的不足,本实施方式提出了一种基于行列直线聚类的多类型BGA芯片视觉识别方法,该算法的主要优点如下:1)算法在局部分析的基础上对行列焊球进行直线聚类与识别,这种方法适用于绝大多数不同类型的BGA芯片,如图2(a)和图2(b)所示芯片。2)该算法识别过程对BGA芯片摆放姿态无要求。3)该算法能够有效排除图像二值化过程因为过分割引入的如图3所示的噪声点对识别过程的干扰。4)该算法对于焊球排布较为稀疏的BGA芯片仍然能够正确识别,图4给出了一种焊球排布较为稀疏的BGA芯片。5)算法的时间复杂度低,能够满足在线实时识别的要求。实验结果表明,在C++编译环境下,检测算法在B960(主频:2.2GHz,双核)的PC机上运行,对于焊球数目小于500个的BGA芯片的识别时间小于200ms。
具体实施方式二:本实施方式与具体实施方式一不同的是:步骤二中对步骤一建立完整灰度BGA焊球信息列表中的数据具体为:
(1)每个二值化BGA焊球在原始图像上对应邻域范围内进行灰度连通域提取用如下公式表示:
式中,(xp,yp)为原始图像上待判断的像素的横纵坐标值,R为完整灰度BGA焊球像素集合,mean[R]表示完整灰度BGA焊球中所有像素的平均灰度值,(xadj,yadj)表示与(xp,yp)八邻接且已经属于R的像素的坐标值,和△为预设常量;f(xp,yp)为原始图像在点(xp,yp)处的灰度值;
经过灰度连通域提取,能够最大程度的提取到每个BGA焊球包含的所有像素,最终提取得到的灰度BGA焊球记为完整灰度BGA焊球;
(2)第i个完整灰度BGA焊球的中心点位置坐标计算公式如下:
式中:(xk,yk)为第i个完整灰度BGA焊球包含的第k个像素,Ni为第i个完整灰度BGA焊球包含的像素个数,i为正整数,k为正整数;
(3)第i个完整灰度BGA焊球的面积Si为完整灰度BGA焊球包含的像素个数Ni;第i个完整灰度BGA焊球的圆度Ci计算公式如下:
式中,Li为第i个完整灰度BGA焊球周长即完整灰度BGA焊球的外围像素数。其它步骤及参数与具体实施方式一相同。
具体实施方式三:本实施方式与具体实施方式一或二不同的是:步骤四中针对规则型BGA芯片的局部分析具体过程为图2(a):
步骤四一、在BGA焊球标识图像上,选择任一个等效BGA焊球;
步骤四二、以步骤四一中选择的等效BGA焊球为中心在3△γ半径范围内,分别搜索[-45°,45°)、[45°,135°)、[135°,225°)和(-45°,-135°]四个方向范围内,与步骤四一中选择的等效BGA焊球最近的等效BGA焊球,若四个方向的最近等效BGA焊球均不存在,重新执行步骤四一;
步骤四三、对每个方向找到的最近相邻等效BGA焊球,分别按照下式求取第j个方向对应的等效BGA阵列粗略偏转角度△θj,
式中,(xcenter,ycenter)为中心的等效BGA焊球的坐标,(xadj,yadj)为第j个方向对应的最近等效BGA焊球;同时,±90°和正负号根据四个方向情况进行选择或者舍去。j=1代表[-45°,45°)范围;j=2代表[45°,135°)范围:j=3代表[135°,225°)范围;j=4代表(-45°,-135°]范围;
将所有△θj取平均值作为最终的等效BGA阵列粗略偏转角度△θ,在图像坐标系下,△θ以顺时针方向为正。其它步骤及参数与具体实施方式一或二相同。
具体实施方式四:本实施方式与具体实施方式一至三之一不同的是:步骤四中针对不规则BGA芯片局部分析的具体过程为图2(b):
步骤四一、在BGA焊球标识图像上,选择任一个等效BGA焊球;
步骤四二、以步骤四一中选择的等效BGA焊球为中心在3△γ半径范围内,分别搜索[0°,90°)、[90°,180°)、[180°,270°)和[-90°,0°)的四个方向范围内,与中心的等效BGA焊球最近的等效BGA焊球,若四个方向的最近等效BGA焊球均不存在,重新执行步骤四一;
步骤四三、对每个方向找到的最近相邻等效BGA焊球,分别按照下式求取第j个方向对应的等效BGA阵列粗略偏转角度△θj,:
式中,(xcenter,ycenter)为中心的等效BGA焊球的坐标,(xadj,yadj)为第j个方向对应的最近等效BGA焊球,同时,上式中的±90°和正负号根据四个方向情况进行选择或者舍去;j=1代表[0°,90°)范围;j=2代表[90°,180°)范围:j=3代表[180°,270°)范围;j=4代表[-90°,0°)范围;
将所有△θj取平均值作为最终的等效BGA阵列粗略偏转角度△θ;在图像坐标系下,△θ以顺时针方向为正。其它步骤及参数与具体实施方式一至三之一相同。
具体实施方式五:本实施方式与具体实施方式一至四之一不同的是:步骤五中利用步骤三得到的等效BGA焊球间距典型值△γ以及步骤四得到的等效BGA阵列粗略偏转角度△θ,在BGA焊球标识图像上,对行和列的等效BGA焊球进行直线聚类得到每行等效BGA焊球蔟、每列等效BGA焊球蔟以及边界等效BGA焊球蔟的具体过程:
步骤五一、根据等效BGA阵列粗略偏转角度△θ,确定等效BGA焊球的行直线方程表达式ycenter=tan(△θ)xcenter+brow和等效BGA焊球的列直线方程表达式ycenter=tan(△θ+90°)(xcenter-bcol);
其中,(xcenter,ycenter)为完整灰度BGA焊球的中心点位置坐标,brow为行直线在图像坐标系y轴的截距,bcol为列直线在图像坐标系x轴的截距;
步骤五二、确定等效BGA焊球行和列分类阈值
步骤五三、对等效BGA焊球进行行聚类:利用第i个等效BGA焊球坐标反解出等效BGA焊球行直线方程的截距:
步骤五四、基于分类阈值intercept_thresh,对所有得到的行截距进行聚类即在阈值intercept_thresh范围内,相等的行截距聚为一类,将与一类行截距对应的等效BGA焊球聚为一个行等效BGA焊球簇,且行等效BGA焊球簇在同一行;
步骤五五、将步骤五四聚类后,蔟内元素个数为1的行等效BGA焊球簇视为干扰予以剔除;得到的行等效BGA焊球簇的个数即为BGA芯片焊球行数;
然后对所有行等效BGA焊球簇按照蔟内对应的平均行截距的升序进行排序,得到的排序后的等效BGA焊球蔟则是以等效BGA阵列的行序号由小到大进行排列的;
步骤五六、对等效BGA焊球进行列聚类:利用第i个等效BGA焊球坐标反解出对应的列直线方程的列截距
步骤五七、基于分类阈值intercept_thresh,对所有得到的列截距进列聚类即在阈值intercept_thresh范围内,相等的列截距聚为一类,将与一类列截距对应的等效BGA焊球聚为一个列等效BGA焊球簇,且此列等效BGA焊球簇在同一列;
步骤五八、将步骤五四聚类后,蔟内元素个数为1的列等效BGA焊球簇视为干扰予以剔除;得到的列等效BGA焊球簇的个数即为BGA芯片焊球列数;
然后对所有列等效BGA焊球簇按照蔟内对应的平均列截距的升序进行排序,得到的排序后的每列等效BGA焊球蔟则是以等效BGA阵列的列序号由小到大进行排列的;
步骤五九、提取经过排序后的行等效BGA焊球蔟的第一组、经过排序后的行等效BGA焊球蔟的最后一组、经过排序后的列等效BGA焊球蔟的第一组和经过排序后的列等效BGA焊球蔟的最后一组作为边界等效BGA焊球蔟。
步骤五四和步骤五七中,对所有得到的行截距和列截距进行聚类的具体实施方式如下(现仅以的聚类为例):
Step1:将初始化为第1类Ω1;
Step2:如果i=1,2,3....与第j(j=1,2,3...k)类Ωj的聚类中心满足则将归为j类,并重新计算否则,将初始化为k+1类;其中,类Ωj的聚类中心是Ωj内所有截距的平均值;
Step3:i=i+1,执行步骤Step2。其它步骤及参数与具体实施方式一至四之一相同。
具体实施方式六:本实施方式与具体实施方式一至五之一不同的是:步骤七中步骤二得到的完整灰度BGA焊球信息列表进行每行等效BGA焊球蔟直线拟合的过程如下:
利用每行等效BGA焊球蔟中的每个等效BGA焊球在标识图像上的灰度值,在完整灰度BGA焊球信息列表中查找对应的完整灰度BGA焊球中心点位置坐标,将每行完整灰度BGA焊球中心点位置坐标进行直线拟合。其它步骤及参数与具体实施方式一至五之一相同。
具体实施方式七:本实施方式与具体实施方式一至六之一不同的是:步骤二得到的完整灰度BGA焊球信息列表进行每列等效BGA焊球蔟直线拟合的过程如下:
利用每列等效BGA焊球蔟中的每个等效BGA焊球在标识图像上的灰度值,在完整灰度BGA焊球信息列表中查找对应的完整灰度BGA焊球中心点位置坐标,将每列完整灰度BGA焊球中心点位置坐标进行直线拟合。其它步骤及参数与具体实施方式一至六之一相同。
具体实施方式八:本实施方式与具体实施方式一至七之一不同的是:步骤八中利用步骤七得到的每行等效BGA焊球蔟拟合直线和每列等效BGA焊球蔟拟合直线,在BGA焊球标识图像上对等效BGA焊球进行逐行或逐列搜索,进而得到BGA焊球分布矩阵,根据逐行或逐列搜索得到的所有等效BGA焊球以及步骤二得到的完整灰度BGA焊球信息列表求解得到BGA标准焊球直径尺寸、BGA标准焊球周长尺寸和BGA标准焊球圆度尺寸具体过程为:
求解每行等效BGA焊球蔟拟合直线方程和每列等效BGA焊球蔟拟合直线方程的交点,并以该交点为中心在BGA标识图像上进行半径为△γ/2局部搜索;如果搜索到某一有效BGA焊球,则有效BGA焊球对应的BGA标识矩阵的所在行列位置的值置为1,否则有效BGA焊球对应的BGA标识矩阵的所在行列位置的值置为0(如果未搜索到某一有效BGA焊球,则将有效BGA焊球对应的BGA标识矩阵的所在行列位置的值置为0);
根据逐行或逐列搜索得到的所有等效BGA焊球以及步骤二得到的完整灰度BGA焊球信息列表求解得到BGA标准焊球直径尺寸、BGA标准焊球周长尺寸和BGA标准焊球圆度尺寸的具体过程如下:在完整灰度BGA焊球信息列表中与所有搜索到的等效BGA焊球对应的最小外包圆直径的平均值作为BGA标准焊球直径尺寸;将在完整灰度BGA焊球信息列表中与所有搜索到的等效BGA焊球对应的周长的平均值作为BGA标准焊球周长尺寸;将在完整灰度BGA焊球信息列表中与所有搜索到的等效BGA焊球对应的的圆度的平均值作为BGA标准焊球圆度尺寸。其它步骤及参数与具体实施方式一至七之一相同。