l sYs sEcuRITY 系统安全
98
PCB缺陷检测系统的研究与实现
蔡茂蓉
(西南科技大学计算机学院四川绵阳621010)
摘要:本文介绍利用图像处理和模式识别技术,实现自动检测PcB缺损缺陷的方法。文中详
细介绍了数字图像处理技术在PCB板缺陷检测中的检测算法和PCB各种常见缺陷的识别方法。给
出了系统的工作流程和实现方法,实验证明本方法可行。
关键字:图像处理;PCB;图像分割;定位
中图分类号:TP317.4
文献标识码:A
1引言
2 PCB板缺陷的模式识别
印刷电路板(Printed Circuit Boards)是提供电
从GJB和lPC(美国电子电路互连和封装协会)
子零件安装的主要支撑物体,它将电子零组件连接
标准中,可以综合出PCB上存在的主要缺陷有短路、
在一起,使其发挥整体功能,是所有电子产品不可
短路、凸起、凹陷、空洞和划痕等,本文采用的识别
缺少的基本构成部分。由于印刷板生产技术涉及多
种工艺技术,任何一个工序出问题,都会对产品的
方式分别简述如下。
2.1短路和断路的识别
质量造成影响。随着通信、计算机等产业的飞速发
发生短路时,与标准图像相比,其图像中包含
展,对印刷电路板的质量提出了更高的要求。原来
的区域数会减少。同样,对于断路模式,其区域数会
的检测手段逐渐不适应当今PCB技术的发展趋势,
增加。所以,可以用计算图像区域面积的方法来判断
因此,有必要研究新型的PCB检测手段。本文研究
待测缺陷是短路还是断路。计算面积的具体方法,本
的方法是利用数字图像技术自动检测PCB裸板缺陷
文采用的是火烧法。首先需要将二值图像规格化,使
的软件部分。
对象的像素值为1,背景区的像素值为0。然后逐行
近年来出现了很多PCB图像检测算法,这些算法
扫描,当发现灰度值为1的点时,就在当前点点燃火
大致可分为三大类:有参考算法、无参考算法以及混
种,使火种在当前点的8连通域内蔓延,直到燃尽对
合型算法。有参考算法分为两大类,图像对比法和模
象所有点,同时计数器加1。当扫描完整幅图后,可
型对比法;无参考算法是一种不需要标准图像的检测
求得对象区域的面积(像素的个数)。
算法,它是基于一定的设计规则来进行检测的;混合
2.2划痕的识别
型方法是将有参考算法与无参考算法混合使用,从而
划痕类缺陷的最大特点是它的颜色与板上的正常
发挥它们各自的优点。比如,模板匹配法与数学形态
模式的颜色不同,而其它类缺陷则无此特点。本文采
学方法结合使用,或者连接表方法与数学形态学方法
用BMP格式图像文件和RGB色彩模式。所谓色彩模式
结合使用等。本文采用的是混合方法中的模板匹配法
就是数字图像中像素点采用的颜色描述方法。划痕的
与数学形态学方法结合的方法。
识别需要提取红或绿通道,这是因为在混合通道中,
˝
•
‰
˚
sYs sEcuR.TY系统安全l
99
划痕部分的灰度级与标准板和导体的灰度级区别不
大。
通过灰度级差别,可以检测出划痕,但还需要进
一步判断。这是因为划痕属于较为轻微的缺陷,有时
并不会影响印刷板的使用性能。必须根据PCB标准上
的规定做出判断:是缺陷还是可忽略缺陷。具体采用
的是“与”运算,将标准图像和缺陷图像相“与”,
即对缺陷图像中的像素,若灰度级与标准图像中的对
应像素的灰度级相同,在新图中灰度级为O,若相异
则新图中对应点灰度级取1,可得缺陷图像。
2.3凸起的识别
凸起和凹陷、空洞的最大区别是会引起区域的面
积增加,因此仍然通过计算对象区域面积的方法来识
别凸起。当然,此时要排除短路的情况。
2.4凹陷和空洞的识别
凹陷和空洞的区分比较复杂,二者都会引起面
积的减小,因而不能用面积特征来判断。凹陷位于导
线的边缘,而空洞位于导线的内部,因而可以通过分
析缺陷部分的周围区域进行识别。若缺陷部分的周围
区域全为白域,则为空调;若既有白区又有黑区则为
凹陷。具体方法是,首先将规格化的二值图像的缺陷
区域的灰度值设为与背景和导体不同,如设为2。其
输入待测PCB
l
垃路层j 险测 焊盘层检测 妇路 层检测 1机械胃;检测
I可忽略l|瑕疵ll…
外形矫正
I可忽略I 凸起ll凹陷ll短路|l断路I
l凹陷¨空洞¨划痕f
图1 PCB图像检测流程图
路层分割和机械层分割。图像诊断检测分为线路层检
测、焊盘层检测、碳路层检测和机械层检测。通过缺
陷图像与标准板图像进行匹配,计算机面积差值的方
法,将匹配不上的地方分为可以忽略和有缺陷两种情
况。对可以忽略的地方,用背景色填充。对缺陷继续
划分,分为凸起、凹陷、短路和断路以及可以忽略。
对可以忽略的地方仍然采用背景色填充。如果是凹
陷,要进一步检测是凹陷、空洞还是划痕。下面这个
函数完成找出PCB缺陷位置。
void FindFlawPosition(HDIB hDIB,HDIB hTempDIB)
次对缺陷部分进行边缘跟踪,记录下缺陷部分的边缘
……
{
曲线。利用缺陷部分的边缘曲线,求缺陷部分的外包
线,若外包线全为1(即为白区),则缺陷为空洞;
若有连续的一部分为1,一部分为0(黑区),则说明
缺陷为凹陷。
3软件实现
本文采用Visual C++编写实现PCB裸板的缺陷自
动检测系统。系统功能模块划分如图所示,工作流程
如图1所示。
数学形态学的基本运算只能针对二值图像和灰度
图像。因此,该系统在进行图像预处理时,先通过大
律法计算出分割阈值,再对图像进行二值化处理,然
后通过中值滤波去除噪声。预处理后的图像经过数学
形态学膨胀和腐蚀后,用于图像分析。在图像分割模
,,找到DIB图像像素起始位置
IDDlBBits=cIsDIB.FindDIBBits(IpDIB);IpTempDIBBits=cl
sDIB.FindDIBBits(IpTempDIB);
∥DIB的宽度和高度
LONG IWidth=cIsDIB.DIBWidth(IPDIB):LONG
IHeight=cIsD旧.DIBHeight(IpDIB):
脓取每行宇节数
LONG ILineBytes=WIDTHBYTES(IWidth。clsDIB.
DIBBitCount(1pDIB)):
LPBYTE pSrc,pTemp;
if(clsDIB.DlB8jtCount(IpDIB)==24)
I
for(i=O:i
..。。I sYs sEcuR.TY系统安全
if((+pS FC一。pTemP)==0&&(’(pS rc+1)一
。(pTemp+1))==O&&(。(pSrc+2)一’(pTemp+2))==0)
’(pSrc+1)=255;。(pSrc+2)=255;}
{。pSrc=255;
j-j+2:)})
if(clsDIB.DIBBitCount(IpDlB)==8)
{
for(i=0:i