高磊,郎加云
(安徽文达信息工程学院,安徽合肥 231201)
如今,由于集成电路工艺突飞猛进的发展,电子元件变得更加微小化、片式化、轻量化,主流的电路板焊接方式也变为了贴片式。随着PCB 制作技术的逐渐发展,印制电路板上的元器件越来越多,结构越来越复杂。在电路板制造工业中,应用机器视觉替代传统的人工检测已成趋势[1]。机器视觉与图像处理技术的融合,在检测强度与速度、标准规范程度上都具有很大的优势。
实际中,工业生产制造电路板时有可能产生复杂多样的缺陷,国际电联协会将电路缺陷分为了不同的种类,例如:短路、断路、凸起、凹陷等[2]。在用图像处理方法检测PCB 缺陷时,本文发现,进行轮廓对比时会出现伪缺陷,本文主要工作为剔除PCB缺陷检测时的伪缺陷。
针对传统PCB 检测方法高成本、低效率问题,本文提出一种以机器视觉为基础的PCB缺陷检测方法,使用数字图像处理相关算法,通过对比待测图像和标准图像,针对PCB 板缺陷检测中真伪缺陷的识别问题,本文提出使用引进领域特征的BLOB算法,来检测这个问题。经实验结果分析,该方法能有效辨别真伪缺陷。实现了参考图像与待测图像的快速精准配准。
对PCB缺陷检测的流程图如图1。
图1 电路板缺陷检测流程
人工或机器摄取PCB电路板图像后,有很多因素都会导致图像拥有五花八门的噪声,比如拍摄过程设备的抖动,光照不匀,灰尘或其他杂物的遮掩,对图像采用预处理方法,可以有效去除周围环境带来的噪声,提升图像保真率,为进一步处理图片打下基础,以便进行缺陷检测时准确率更高[3]。对图像进行预处理的方法主要分为图像分割,提取前景目标,测试图像与模板图像校正。
相机采集到的测试图经过图像校正,与模板图在大小与方向上实现了图像对齐。为了定位测试图中的缺陷信息,需要将测试图与模板图作差[4]。作差的原理是模板图与测试图在对应位置处的灰度值相减,表达式如下:
其中d(x,y)为差值图,fTemplate(x,y)为模板图,fTest(x,y)为测试图。
对PCB图像作差之后,通过分析差值图中的亮区域,可以判断测试图中有无缺陷。亮区域分为两类:一类是PCB 板生产过程引入的缺陷,属于真缺陷;另一类是由于PCB板采集过程抖动引起图像畸变、图像校正没有与模板对齐而引入的灰度差异,称为伪缺陷,常对缺陷分析结果造成干扰[5]。缺陷分析的目的标记真缺陷,剔除缺陷。
本文使用一种多模板检测算法来剔除伪缺陷。该算法求取多个模板,并且统计每个模板在配准后对应的像素点处的最大、最小灰度值,生成亮模板与暗模板,计算公式如下:
其中,w表示学习样本数,An表示第n幅图中点(x,y)处灰度值。
多模板比较算法相当于在匹配时,进行BLOB 算法作缺陷检测时引入了比较邻域点的灰度值,可以有效去除轮廓伪缺陷。此外,还可以通过灰度形态学原理计算模板的最大、最小灰度值。
Blob算法是描述一幅图像中连通域像素的方法,通常用于分析闭合的目标形状[6]。Blob 的解释是一滴、一团的意思,图像处理中的Blob是指一个像素块,处于该像素块中的像素点在位置上相互连通,并且具有相似的纹理、颜色特征。Blob缺陷分析的目的是描述目标像素的四邻域或八邻域连通区块的特征,例如像素区域的周长、面积、质心、形状等,如图2所示[7]。
图2 Blob特征示意图
Blob分析主要分为两部分,连通域标记与区域描述,编写算法时通常把这两部分结合起来,在连通区域的同时,记录区域信息[8]。
本文中采用像素标记法,图像经过一次扫描完成标记。差值图经过灰度化处理后,亮色区域灰度值255,背景灰度值为0,为防止重复标记,将已经标记过的像素其灰度值赋值为254。一次扫描标记算法的主要流程如下:
1)创建动态指针记录需要标记的像素块信息,创建一个空栈队列用于临时存放标记像素,设置八邻域检测数组顺序。
2)从下向上、从左向右扫描图像,如果当前扫描像素灰度值为0,跳过当前像素,继续扫描;当前扫描像素的灰度值为255,区域信息个数计数加1,记录当前像素的坐标值。
3)根据八邻域数组检测当前像素的邻域像素是否为前景点,如果为前景点,标记该邻域像素,同时将该像素坐标压入栈,区域面积值加1,更新当前连通域边缘坐标值;否则,继续扫描邻域像素。
4)当前像素的八邻域扫描完以后,检查压入栈中的像素点的八邻域像素,从栈中弹出像素坐标值,按照步骤3)检查像素,直至栈为空。
5)扫描完毕当前区域后,按照步骤2)继续扫描图像,直至整幅图像扫描完成。
本文中Blob算法标记的连通域特征主要有:缺陷块个数Nnmber;每个缺陷块分别记录面积Size,左下角像素点坐标x0,y0,右上角像素点坐标x1,y1这五个元素。根据记录信息,可以计算出缺陷块的其他信息如缺陷中心坐标,缺陷块的宽度Δx,高度Δy,从而分析出缺陷的形状。上述特征在连通域标记过程中的计算方法如下:
Ri——第i个连通区域。
其中,xi,yi表示标记像素的坐标。
根据式(3)可得出缺陷块的特征点,式(4)可计算出缺陷区域边角坐标,因此可以计算出缺陷区域面积,式(5)可表示区域面积大小:
其中Δx表示缺陷区域横坐标变化范围,Δy表示曲线区域纵坐标变化范围。
然而实际检测中此方法仍然存在伪缺陷,这类伪缺陷多为合格区域,但是由于图像变形等原因难以滤除。只从缺陷块自身的角度来考虑分辨真伪缺陷,可能会造成漏检,因此在判断的过程中需要引入缺陷块的邻域像素块信息来辨别。
分析测试图与模板图的差值图,可以得出关于真缺陷与伪缺陷的特征(表1),根据这些特征来选择判别方法。
表2 缺陷检测结果
首先确定邻域的选择,根据表1的分析可以看出,伪缺陷的出现大多是因为测试图与模板图出现偏移造成的,伪缺陷邻域范围内,在模板图中会出现与伪缺陷图案相同或者相似的部分。邻域的选择以伪缺陷块为中心块,水平方向以缺陷块的宽度Δx为单位宽度,垂直方向以缺陷块高度Δy为单位高度,从中心块向四周各扩展一个单位长度,邻域图如图3所示。
图3 缺陷邻域示意图
图4 标准电路板卡图像
图5 待测电路板卡图像
真伪缺陷的判别条件引用了谷歌相似图片搜索的技术原理:感知哈希算法。感知哈希算法主要用于图片相似性的描述,给每幅图像生成一个“指纹”,之后与其他图像生成的“指纹”比较,比较结果越接近,图片越相似[9]。下面介绍一种常用的低频图像哈希算法:
1)将图片缩小成为8 × 8的尺寸,共64个像素,目的是去除图片高频细节。
2)将图像转化为灰度图像,简化色彩。
3)计算小图像的平均灰度值。
4) 8 × 8 图像的像素灰度值与平均灰度值比较,大于或等于均灰度,记为1;小于均灰度,记为0。
5)记录哈希值:将第四步比较的结果记录下来,组成一个64位的整数,即为图像的“指纹”。
本文将感知哈希算法图片相似理论运用到缺陷判别过程中,在缺陷块邻域找相似图像块,如果在模板图缺陷块邻域中找到与测试图缺陷块相似的图案,说明缺陷是由于对齐误差造成的伪缺陷,可以排除。如果在模板图八邻域中没有与缺陷块相似的图案,则该缺陷为真缺陷,是测试图中独有的图案[10]。
因为缺陷块像素面积通常不会超过10 × 10,所以不需要经过图片压缩的过程;本文中需要比较的模板图像为灰度图,去掉彩色图像灰度化步骤;改进计算哈希值的相关算法,将灰度化序列改为灰度化后“1”的个数,便于比较。邻域缺陷判别的算法流程如下:
1)遍历缺陷块信息,对于每一个缺陷块信息,计算其邻域范围。
2)在模板图中,从邻域起始点,以缺陷块大小为单位,计算每一个邻域块的均灰度值MeanGrayi,以及缺陷块均灰度化后1的个数Num1i。
3) 模板图计算的MeanGrayi与Num1i,与测试图缺陷块的MeanGray,Num1参数比较,当满足条件1)~3)时,说明出现缺陷块的相似图案,判别缺陷为伪缺陷。
其中Size表示缺陷块面积。
4)遍历完毕,未出现相似图案,判别为真缺陷。
在获取到待测图像后,需要和标准图像进行对比,从而获得缺陷点的图像。首先,需要规定一个图像的最大面积值,从而消除在误差允许的范围内的较小的缺陷。然后,以该缺陷为图像中心,圈定一个范围,进行详细的缺陷检测。
缺陷检测和分析需要通过以下几个方面进行考虑:
1)多/少线及缺失焊盘的情况
当出现这种缺陷时就代表此电路板缺陷重大,其特征是从对比图中能够明显发现较大面积的不同,即缺陷面积很大,并且是远远超过其他类型缺陷。可以根据缺陷面积的大小同其他缺陷分隔开来。
2)电路板发生短路和断路的情况
在对比图中通过判别连通区域数的方法进行识别短路和断路。当短路时,其特征是与标准图像相比,图像中连通区域数较少。相反的,当断路时,其特征是与标准图像相比,图像中连通区域数较多。
3)电路板发生凸起和凹陷的情况
图像对比时面积是否出现增多和减少的情况,这类情况是反映在不同导线间间距的变化,当凸起时,导线间间距变窄,即面积增加;当凹陷时,导线间间距变宽,即面积减少。
4)电路板发生漏洞和锡点堵塞的情况
当连通区域数不变,连接线区域距离间隔不变,区域数的数量也没有发生改变,就需要考虑漏洞和锡点堵塞的可能。计算欧拉数是应对这种缺陷的最好办法,待测PCB 图像欧拉数小于标准图则为漏洞,反之大于则为锡点堵塞。
对采集PCB图像经过灰度化处理后,使用边缘检测算法,双线性插值法对已经采集到的PCB电路板卡图像进行去噪分割和校正,得到PCB电路板卡待对比灰度化图像。
对待测电路板卡图像和标准电路板卡图像做差后,使用引进领域特征的BLOB 算法进行和未引入领域特征的BLOB真伪缺陷辨别,得到结果图如下:
经过邻域缺陷判别,实现了滤除伪缺陷的目的。图6 为引入邻域灰度特征判别后的缺陷图。其中缺陷点满足4.3 中领域缺陷判别条件1)~3),即为本文所得真缺陷。
图6 引入邻域特征
图7 未引入邻域特征
对待测图进行标号以便后续识别,如图8。
图8 标号图
对PCB缺陷类型进行识别:在差值结果图中按顺序定位缺陷点位置。计算缺陷位置面积大小,设定面积阈值,小于阈值,则该缺陷点是允许误差情况内的缺陷,可以忽略。如果远大于此阈值,则是多/少线及缺失焊盘的严重缺陷。待测PCB 图面积大于标准PCB面积,则判断为凸起,否则为凹陷。如果相等,则计算包含缺陷点的一定区域内的连通区域数,对于连通区域数,待测PCB图大于标准PCB图,判断为断路,否则为短路。如果相等则进行下一步,计算待测PCB和标准PCB 的欧拉数,对于欧拉数,待测PCB 图大于标准PCB图,则判断为锡点堵塞,否则为电路空洞,若相等,则进行灰度化图像面积判断。若待测图像灰度化图像面积大于标准图像,则该缺陷点为凸起缺陷,若小于,则为凹陷缺陷。
从实验结果可以看出,本文方法可以剔除伪缺陷的影响,并且不会干扰真缺陷的检测。而且该方法在综合考虑到了小的瑕疵和允许的误差情况下,还能够有效检测出如断路、短路、空洞、各类常规缺陷。
本文设计了基于改进的Blob 缺陷分析方法对PCB 进行缺陷检测。引入领域特征解决了真伪缺陷难以辨别的问题,并通过设计的算法流程有效检测出待测PCB 板的常规缺陷,由此说明,该方法能较准确地检测出待检测电路板上存在的缺陷,提高了检测效率,达到了自动无接触实时检测的目的。综上所述,本文提出的检测方法能够高标准自动化检测有效剔除伪缺陷,并保留真缺陷,节省了人力资源,提高了检测的效率。