APP下载

一种PCBA图像的快速定位方法

2018-11-28李文龙袁纵横

电子科技 2018年12期
关键词:坐标值频域像素

李文龙,袁纵横,孙 伟

(1.桂林电子科技大学 电子工程与自动化学院,广西 桂林 541004;2.安徽品至信息科技有限公司,安徽 合肥 230031)

随着印制电路板线路精细化、表面贴装器件(Surface Mounted Devices,SMD)元件微型化、快速组装技术等在表面组装技术(Surface Mount Technology,SMT)中的使用,装配印刷电路板(Printed Circuit Board +Assembly,PCBA)元器件密度增加,而微电子行业对PCBA板的要求越来越严格。为适应现代SMT生产线上的检测要求就必须对传统人工光学检测等方式革新。因此新型自动检测技术有了飞跃式的发展,其中通电测试、自动X射线、自动光学检测[1](Automatic Optical Inspection,AOI)等技术是最为常用的。其中AOI因其相对其他方法而言具有非接触、速度快、效率高、成本低等优点广泛使用。PCBA检测原理是将电路板(例如元器件、焊点等[2])捕捉成像,通过软件综合处理分析,判断元件是否出现装贴错位、引脚焊锡不足等问题。而载板元器件的自动检测的关键步骤之一就是PCBA图像的定位问题[3]。要有效地对PCBA图像进行总体和局部的检测,首先需要有精确的mark点坐标,才可以进行[4]。基于AOI的PCBA检测方法,基本都是采用双圆心mark点定位的方法[5-6],多数算法基于Hough变换原理计算mark点坐标。其改进方法也是基于Hough变换原理[7-9]的,利用圆的几何特征[10]、或者基于几何特征不变检测[11]等方法改进。

1 问题分析

综合已有成果分析此问题:PCBA板过大整张拍摄图像有些重要细节像素点过少无法识别,同时也会带来光照不均(中间亮边缘暗)[12]、边缘模糊等问题[13];若获取图片再拼接可用原PCBA板上的mark参考点,但会浪费大量时间,且拼接处会带来新的噪声。针对上述问题提出解决办法:对较大的PCBA板缩小相机视野分块获取图像提高器件识别精度。

原方法是从兴趣区域的第一个坐标点开始读取像素与模板进行匹配,直至遍历所有像素[14]。这种方法也存在一些缺点:计算量大、耗时多,面对生产线的大批量产品检测要求,迫切需要缩短每张图像的检测时间。因此在精度满足要求的前提下减少程序时间开销是很有意义的。

由于分块获取的图像无法利用PCB设计者给定的参考定位点,故需要自行寻找一个标定的坐标点作为参考点,元器件为要检测目标不能作为mark参考点,PCBA板上的圆形、矩形等其他几何形状的锡点不是所有待处理照片都有。结合PCBA板自身特点和mark点特征,表面印刷的字符可作为参考点,而且每一个PCBA表面都存在唯一的字符,部分字符存在多个拐点包含较多的纹理特征。经过实践本项目最终选取PCBA板上的字符作为标识符且字符唯一,使用模版与兴趣区域匹配过程中可信度最高的坐标点为mark参考点。

机械轴运动误差和PCBA板摆放位置不确定性误差,导致图像的位移误差可以在任意方向,由CCD相机获取PCBA图像每张图像的边缘不一致,如图1所示。同时程序中mark点坐标为一个固定值,不确定的误差导致兴趣区域包含的像素信息存在较大偏差。

图1 现场采集到的图片

由图1可知,CCD相机获得的图像不完全一致(从图中可以看到图像边缘相差较多),导致每张图像mark点坐标相同像素不同,这给定位带来了困难。为了在每一张待处理图像的兴趣区域内都能找到mark点,需要把兴趣区域划分得大一些,这就大幅增加了程序的计算时间开销,这是导致mark点定位耗时过多的主要原因。

2 建立数学模型

2.1 模板匹配原理

选用基于灰度值的模板匹配的方法,把模板看作矩阵A,将其转换为行向量,记作向量a,将模板像素映射到兴趣区域对应的矩阵为B,同理记作向量b,应用余弦夹角公式

(1)

当cosθ=1意味着两向量方向相同,相关运算产生最大响应。在图像中的匹配计算如式[15](2)所示。

(2)

其中,w(s,t)表示模板图像中坐标为(s,t)的像素值,f(x+s,y+t)表示兴趣区域坐标点为(x,y)与模板进行匹配过程中所遍历的像素值。实际上计算的是向量a,b之间夹角余弦值。显然,它只和图案模式本身的形状或纹理相关,与幅值(亮度)无关。

根据相关理论,如果模版中的非零元素数目大于132(约13×13),则在频域计算较划算。考虑到本文模板像素数目远大于132,选择在频域中实现相关能较好地提高计算效率,由傅里叶变换和卷积定理建立空间卷积和频域乘积的关系[16]

(3)

其中,“o”表示相关,“ * ”表示复共轭。将兴趣区域的空域图像转换到频域图像得到F(u,v),将模板扩展到与兴趣区域等像素数目进行频域变换后再取频谱的共轭得到H*(u,v)。相乘后变换回空域再取实部即可。

2.2 算法改进原理

模板匹配算法耗时由计算量大小决定,经分析计算耗时可表示为

(4)

N=(Rm-m)(Rn-n)

(5)

T=N×n1×ξ1

(6)

式(4)中,w1=(x1,x2,…,xn)表示模板像素灰度值;w2=(y1,y2,…,yn)表示由w1映射到兴趣区域的像素值,nt表示匹配一次的计算次数。式(5)中m、n和Rm、Rn分别是模板、兴趣区域长和宽的像素数目,N表示原方法匹配次数。式(6)中ξt表示时间系数,其只和计算机本身硬件有关,T表示一次完整的mark点计算用时。

观察兴趣区域图像及其二值图像发现,要使T减小,只能令式(4)和式(5)减小,式(4)减小会导致匹配精度下降,在对匹配要求精度低时可以考虑,所以只能优先考虑减小式(5)计算结果,即:减少在匹配过程中过多的匹配计算,且此方法可行。

N2=(Rm-m-a)(Rn-n-b)

(7)

其中,(a,b)为在原兴趣区域计算得出的新匹配计算起点,其坐标值为相对一次兴趣区域坐标值计算出的新坐标值,N2表示需要匹配的次数。

由式(7)可以得出,只要能确定a,b值是大于0的正整数即可使N2减小,从而大幅降低mark点计算用时。具体思想为:在进行模板匹配前先用遍历法在兴趣区域搜索到模板的字母大概位置,以此位置为起点再次确定较小的兴趣区域,能减少模板匹配次数提高程序的运行效率。分析二值图像发现:在遍历法缩小范围时遇到多个大于180(此项目中选取的像素为180)的像素点即可认为定位到与模板相似的位置点,考虑到光线、噪声干扰等原因引入距离误差补偿值δ(x,y)增加算法的鲁棒性。

坐标系中A(i,j)表示兴趣区域的第1行第1列的像素坐标,A(i1,j1)表示寻找到的最佳匹配度区域的第一行第一列的坐标。由于CCD相机存在随机噪声等干扰,把最佳匹配点k(ix,jy)丢失的概率较大,而把次最佳点误认为最佳点,引入误差补偿δ(x,y)对数据修正,最终确定二次选择的兴趣区域起始坐标为A(i2,j2),且二次确定的兴趣区域要小于初始兴趣区域,即:可以减少在计算mark点过程中冗余的匹配运算。

计算mark点坐标转变在矩阵中快速求解某一特征的坐标点。以CCD相机获取的任意一张PCBA图像的左上顶点坐标作为原点建立直角坐标系,并标记为原点O,如图2所示。

图2 改进算法原理图

在兴趣区域T中以A(i,j)为起始位置寻找模板匹配度最佳位置坐标为A(i1,j1),但是由于边缘模糊、噪声等带来的误差,可能使得寻找到的第一个像素大于180的坐标点是误差点的概率较大,如图中k(ix,jy)点。为了使程序更加准确运行引入误差量,这样就可以把最佳匹配点和误差像素点都包含在二次兴趣区域。误差数学表达为

A2(i2,j2)=A1(i1,j1)+δ(i,j)

(8)

其中,δ(x,y)表示先验误差,补偿后的坐标为A(i2,j2)由具体PCBA图像坐标分析得到。新得出的坐标之前的所有像素点不再进行匹配计算。

设改进方法找到的mark点坐标为A(x,y),由于两次在兴趣区域内计算起点坐标均为(1,1),新方法计算得到的mark点坐标表示为A(i,j)+δ(i,j)+A1(i1,u1)+A(x,y),化简为A(i,j)+A2(i2,j2)+A(x,y)。验证改进算法计算得到的mark点坐标正确与否,用得到的坐标值与原算法得到的坐标值对比,坐标一致说明改进算法正确,在得出mark点坐标的同时记录程序计算出坐标点用时。改进算法的流程图如图3所示。

图3 改进算法流程图

3 数据验证

本文处理图像的软件为MATLAB R2010b和Visual C++(2010),处理器为Intel(R) Core(TM)i3 CPU M380@2.53 GHz,RAM 4.0 GB,需要对数据进行对比分析时采用控制单一变量法。

工业现场环境中,光源强弱变换、随机噪声等干扰问题,需要对CCD相机实时拍摄到的图像预处理,流程大致是:将采集的2 592×1 944像素BMP格式图像转换为灰度图像,由精度要求适当降维,使用3×3模板对图像进行中值滤波。本文随机选用PCBA板如图4,记作A板。选用的匹配模板为图5左上模板图像(A)。

图4 A板图像

图5 A板模板和其兴趣区域

如图5所示,兴趣区域(a)、(b)、(c)为同一程序对多张待处理图像获得的兴趣区域,图5下半部分为相应灰度图像的二值图像。

在保证其他条件相同条件下,用原算法在频域计算mark点坐标,同时记录整个过程耗时;再用改进算法在频域计算mark点坐标,同样记录整个过程耗时。分析50张A型号PCBA板图像以两种不同算法计算mark点的时间,并求出匹配平均用时,其中改进算法用时为两部分匹配用时之和,一部分为粗定位用时,另一部分为精确定位用时,如表1所示。

表1 A板匹配平均用时

原算法计算坐标值用时平均值为90 ms,改进算法计算坐标值用时平均值为52 ms。改进算法匹配用时比原算法匹配用时减少约42%,改进算法显著提高了mark点计算速度且计算得出的mark点数值与原方法计算出的坐标值相同。

应用上述原理和步骤选取另外一块待检测PCBA板,记作B板,验证上述方法在计算效率、程序耗时和普遍适用性等方面优点。B板由CCD相机拍摄图像如图6所示。

图6 B板图像

B板由程序直接计算获得的兴趣区域如图7所示。

图7 B板兴趣区域和其二值图像

B板在使用改进算法计算mark点定位时,应考虑选取兴趣区域过程中的非目标像素干扰,如二值图像中类似中括号的高亮点像素,应在程序中滤除干扰。应用同样的方法和步骤分析50张图像得出平均匹配用时,结果如表2所示。

表2 B板匹配平均用时

原方法频域计算坐标值平均用时为75 ms,改进算法计算的坐标值平均用时为47 ms。应用改进算法计算mark点坐标平均速度提高约37%。相比原算法用时大幅减少。

原方法是对兴趣区域全部匹配后计算出最相似位置来确定mark点,计算量取决于兴趣区域的像素数量;改进方法是先进行粗略定位、误差补偿后重新获得较小兴趣区域,在二次兴趣区域计算得到mark点,但整体耗时仍然比原方法降低了许多。

通过原算法、改进算法对2种PCBA图像各50张获取的坐标值在二维坐标中分布图,如图8所示。两种方法得到的坐标值一致,每种PCBA板的mark点不在同一点而是分布在一个小范围区域,由于待检测的PCBA板相对CCD相机有位移误差导致,这是兴趣区域选取较大的原因。证明应用改进算法能较好解决此问题,具有较好的准确性,能够快速计算出mark点。但是摆放位置、机械轴运动等误差过大,会出现匹配失败情况,这要求摆放位置不能偏差过大,兴趣区域划分大小要合理,才能在最合理时间内获取正确的mark点坐标。

图8 坐标值分布图

4 结束语

本文研究表明:改进算法与原算法找到的参考点的坐标是一致的,两种方法得到的mark点坐标值能进行互相验证,进而验证了改进后算法的正确性和方法具有一般性,且定位时间能节约40%左右。此方法需要在CCD相机获取图像时PCBA位置尽量摆放在标准位置,错误的位置可能引起补偿值计算时出现负数,得出错误的结果。因为位移误差较大导致兴趣区域内不包含模板匹配需要的有效信息,或者含有大量干扰信息。在使用此方法时应该确保所选择的兴趣区域含有较少干扰项,PCBA位移小于最大位移误差,且兴趣区域大小要合理才能确保mark点坐标有效且耗时较少。

猜你喜欢

坐标值频域像素
大型起重船在规则波中的频域响应分析
像素前线之“幻影”2000
“像素”仙人掌
频域稀疏毫米波人体安检成像处理和快速成像稀疏阵列设计
基于二分法迭代的凸模数控铣削加工编程*
ÉVOLUTIONDIGAE Style de vie tactile
高像素不是全部
基于宏程序的数控车削加工应用
基于改进Radon-Wigner变换的目标和拖曳式诱饵频域分离
基于频域伸缩的改进DFT算法