我国是全球第一大PCB生产基地,作为电子产品承载体的电路板,其集成度和产量不断在提高。为了保证电子产品的性能,电路板缺陷检测技术已经成为电子行业中非常关键的技术。建立在图像处理算法基础上的机器视觉检测技术与传统的人工检测技术相比,提高了缺陷检测的效率和准确度。因此,设计一种高效精准的机器视觉检测电路板缺陷的系统,具有非常重的现实意义。评估印刷电路板质量的一个重因素就是表观检测,PCB的表观质量对产品性能及成品使用安全有着极大的重性。而伴随着近年来在工业生产领域崛起的计算机视觉,当前表观缺陷检测和分类识别的研究方向已经转向了利用计算机视觉技术来实现。计算机图像处理识别技术这种基于计算机视觉的检测技术成功取代了传统的PCB缺陷检测方法,在自动光学检测系统众多应用中占据了相对重的地位,一跃成为PCB生产业表观缺陷的主检测方法。 
  图1 系统框图 
  因此本文通过设计AOI自动光学检测系统,搭建较为简单的PCB缺陷自动检测系统的实验平台,对PCB中四类较为关键、常见的缺陷进行检测、分析、识别、判定,为研究推广PCB缺陷自动检测系统开拓应用前景,如能实现工业上的产业化检测,将有高额的经济收益。本文侧重对PCB中的四类较为关键、常见的缺陷进行检测、分析、识别、判定,并且仅搭建了较为简单的PCB缺陷自动检测系统的实验平台,即通过复杂算法对采集到的图像进行处理、配准、对比,从而得出PCB缺陷类型及对其进行标识。如图1所示。 
  1 硬件设计方案 
  PCB缺陷检测的总体系统设计方案主是基于自动光学检测技术来搭建PCB缺陷检测系统,硬件设计是使用CNC-T程控光源高精度影像测试系统操作台,对待测电路板进行图像采集,再通过VS2010软件所编写程序处理,得出待测电路板的缺陷种类。整个系统主分为运动控制、光源、图像采集、图像处理四个模块,分模块简阐述了实验过程、所需设备以及软件算法,搭建了一个相对完整的系统工作平台。 
  图2 CNC-T程控光源影像操作台 
  该设备具有测量元素种类齐全、手动测量、自动对焦等多种功能,使用该设备采集图像进行二维检测,测量软体为YR-CNC,将图像储存至电脑后便由VS软件进行图像处理。实验组成如图3所示 
  图3 实验系统框图 
  1.1 运动控制模块 
  本系统运动流程为被检测的PCB在检测台上,通过步进电机XY轴运动到摄像机拍摄区域,CCD摄像机固定在工作台上方(Z轴),通过Z轴的运动实现聚焦。如图4所示 
  图4 平台运动示意图 
  设备工作台台面尺寸为746mm×506mm,承载玻璃面尺寸为452mm×354mm,有效测量行程为400×300×200。本装置既可通过软件驱动自动采集图像,也可以通过手动控制,移动并聚焦采集待测PCB的图像。 
  1.2 光源模块 
  辅助光照——采用的是正向和背向光源这两种辅助光照。其中正光源和摄像头同侧,均位于Z轴上,正光源主用于检测待测物体的表面特征。背光源位于检测台面下方,与正光源处于同轴反向关系,背光源能突出待测物体的轮廓特征,常用于检测物体轮廓尺寸。 
  图像采集分别利用正光源突出PCB表面如走线、过孔和焊盘等主特征,而下光源主使PCB的轮廓尺寸和过孔产生强烈的轮廓对比。 
  光源使用的是高度集中照明光源中心的LDR系列,由于该光源的伞状结构紧密排列着LED且采用了CCS独创的柔性板,使之成为LED照明系统的标准模式。照明系统如图5所示 
  图5 照明系统 
  1.3 图像采集模块 
  图像采集模块是由图像采集卡、相机和镜头组成的,该模块是图像配准阶段的硬件基础。计算机采集图像的媒介就是相机,而相机按照不同原理又分为多种,常见的有CCD(Charge Coupled Device)和CMOS(Complementary Metal Oxide Semiconductor)两类。本系统采用的是CCD 1/2英寸43万像素彩色摄像头和高清晰度0.7~4.5X变焦倍率镜头,显示分辨率为0.001mm。 
  1.4 图像处理模块 
  通常获得的图像将受到工业现场环境、光照等条件的干扰,计算机所获得的图像质量多数参差不齐,图像的清晰度不一致,大大增加了PCB缺陷检测的难度,所以在利用复杂算法检测、识别PCB缺陷前先对图像进行预处理。 
  本图像处理模块主通过VS软件在OpenCV计算机视觉库的基础上,通过一系列算法对图像进行处理对比。 
  2 系统软件设计 
  2.1 OpenCV 
  OpenCV(Open Source Computer Vision Library)是一个跨平台的可以运行在Linux、Windows和Mac OS操作系统上的基于(开源)发行的计算机视觉库。它重量轻而高效,开放了多种接口如MATLAB、Ruby和Python等,并且在计算机视觉和图像处理中大多数通用的算法都是被允许的。OpenCV可用于开发实时图像处理、计算机视觉和模式识别方案,它提供了多种函数,实现了大量的计算机视觉算法,算法涵盖了从最基础的滤波至以高级的物体检测。OpenCV实际上是一堆C和C++语言源代码文件,许多常见的计算机视觉算法由这些源代码文件实现。如C接口函数cvCanny()实现Canny边缘检测算法。它可直接加入到我们自己的软件项目编程中,而无需去编写自己的Canny算子代码,就是没有必重复“造轮子”。
  根据OpenCV中源代码文件巨多的特点,以算法的功能为基准,将这些源文件分到多个模块中,如core、imgproc、highgui等。将每个模块中的源文件编译成一个库文件(如opencv_core.lib、opencv_imgproc.lib、opencv_highgui.lib等),用户在使用时,仅需在自己的项目中添加用的库文件,与自己的源文件一起连接成可执行程序即可。 
  OpenCV计算机视觉库的出现,是为了使人们利用方便快捷的计算机视觉框架,在计算机视觉领域可以更加轻松地设计出更为复杂的应用程序。OpenCV涵盖了多种计算机视觉应用区域,如用户界面、信息安全、医学影像学、工厂产品检验、立体视觉、机器人和摄像机标定等,约有500多个函数。因为计算机视觉与机器学习是相辅相成的,所以OpenCV也开放了MLL(Machine Learning Library)机器学习库。MLL除了在视觉任务相关中使用,也可以很容易地应用到其他机器学习中。 
  2.2 Microsoft Visual Studio2010 
  Visual Studio是微软公司推出的开发环境,是同行业中目前最流行的Windows平台应用程序开发环境。Visual Studio 2010发布于2010年4月12日,其集成开发环境(IDE)已被重新设计和组织,变得更简单了。 
  Visual Studio 2010同时带来了NET Framework 4.0、Microsoft Visual Studio 2010 CTP(Community Technology Preview——CTP),并且支持开发面向Windows 7的应用程序。除了Microsoft SQL Server外,它还支持IBM DB2和Oracle数据库。目前有专业版、高级版、旗舰版、学习版和测试版五个版本。Visual Studio的用处十分广泛,不仅可被用来基于Windows平台创建Windows应用程序和Web应用程序,还可被用来创建智能设备、Office插件和Web服务等应用程序。微软的Visual Studio 2010将成为一个版本的经典,这是相当于6.0版本。该版本可以自定义开始页,新功能还包括(1)C# 4.0中的动态类型和动态编程;(2)多显示器支持;(3)使用Visual Studio 2010的特性支持TDD;(4)支持Office;(5)Quick Search特性;(6)C++ 0x新特性;(7)IDE增强;(8)使用Visual C++ 2010创建Ribbon界面;(9)新增基于.NET平台的语言F#。本课题将基于OpenCV计算机视觉库使用Microsoft Visual Studio2010开发环境,通过编辑算法实现PCB缺陷检测。 
  3 图像预处理 
  使用计算机对图像进行处理,所得到的连续图像就必须被转换为离散的数据集,这是因为计算机只能处理离散度数据,这一过程我们称之为图像采集。图像采集由图像采集系统实现,如图6所示。图像采集系统的三个主模块是成像系统、采样系统和量化器。 
  图6 
  将整理出的字符图像交予识别模块来识别,被称为图像的预处理。PCB的图像预处理包括灰度化、增强、滤波、二值化、配准等,处理后的PCB输出的图像质量将得到改善,在很大程度上使得该图像特征更直观,方便计算机分析和处理。PCB的图像预处理为整个PCB缺陷检测系统的核心部件,很大程度上决定了检测的准确性。图像预处理流程如图7所示 
  图7 图像预处理流程图 
  4 PCB缺陷检测 
  本文针对四种常见缺陷断路、短路、毛刺(凸起)、缺损(凹陷)进行检测研究。在这四种缺陷中,最为严重的缺陷类型是断路和短路,它们将会使整块板子失去本来的功能;而凸起、凹陷也可能影响到PCB在使用过程中的稳定性能。如图8所示为几种常见的缺陷 
  图8 常见电路板缺陷 
  4.1 PCB缺陷的检测方法 
  常用的PCB缺陷检测方法有参考法和非参考法两种。是从概念理解和电路难易程度看,参考法明显更加具有概念直观、电路简单的优势;是从检测所需的条件来看,非参考法则在不需待测PCB与标准PCB进行准确对准这一点上优于参考法。 
  本课题采用参考法进行PCB缺陷检测。 
  使用参考法对PCB缺陷进行检测的流程为(1)确定标准的PCB图像并放入参考库;(2)通过成像设备采集待测PCB图像,进行图像预处理之后,再二值化PCB待测图像,并对其进行连通域提取;(3)然后将处理结果与标准图像进行对比,利用图像相减来判断PCB可能存在的缺陷;(4)进行分类,确定缺陷类型。 
  4.2 图像连通域 
  像素是图像中最小的单位,每个像素周围有8个邻接像素,常见的邻接关系有两种4邻接与8邻接。4邻接一共4个点,即上下左右。包括对角线位置的点,8邻接的点一共有8个,如图9所示 
  图9 领域示图 
  如果像素点A与B邻接,我们称A与B连通,即有如下的结论 
  如果A与B连通、B与C连通,则A与C连通。在视觉上看来,点与点相互连通,形成一个区域,而不是连通的点形成不同的区域。这种相互立体的所有的点,我们称为连通区域。连通区域标记常用的方法有Two-Pass(两遍扫描法)和Seed Filling(种子填充法)两种方法,本课题主介绍第二种。 
  Seed Filling来源于计算机图形学,通常应用在填充图形上。思路以一个前景像素当作种子,而后在处于同一像素值且位置相邻的连通区域,把和种子相邻的前景像素融合到同一组像素中,结果将是获得一个像素集,即连通区域。接下来介绍使用种子填充法实现的连通区域分析法 
  第一,重复扫描图像,当得到当前像素点B(x,y)=1时停止(1)赋予B(x,y)一个label,并将像素位置作为种子,接着将所有位于该种子周围的前景像素都压入栈中;(2)将栈顶像素赋以相同的label值并弹出,接着将全部位于栈顶像素周边的前景像素都压入栈中;(3)重复(2)步骤,直到栈为空。此时,图像B中的一个像素值被标记为label的连通区域便被找到了。
  第二,在扫描结束前,重复第一个步骤,由此可以获得图像B中所有的连通区域在扫描结束后。 
  扫描所得的连通域如图10所示 
  图10 图像连通域提取 
  4.3 缺陷识别 
  缺陷识别具体特征如表1所示 
  表1 缺陷特征 
  缺陷种类 二值图像面积 连通区域数 
  断路 减少 增加 
  短路 增加 减少 
  凸起 增加 不变 
  凹陷 减少 不变 
  第一,短路和断路。在出现短路缺陷时,待测图像与标准图像相比,其所包含的连通区域数将会减少。同理可得,在出现断路缺陷时,待测图像与标准图像相比,其所包含的连通区域数将会增多。因此,断路和短路缺陷便可利用比较连通区域数来判定和识别。 
  第二,凸起和凹陷。凸起缺陷将导致导线和导线、导线和其他导体间的间隙变小,而凹陷缺陷将导致导线和导线、导线和其他导体间的间隙变大,二者均会导致PCB使用过程中出现不稳定状态。而观察可知,这两种缺陷的连通区域相同,差别在于各自二值化面积的大小,所以可以通过计算该待测图像的连通区域面积来识别凸起、凹陷缺陷。 
  识别过程将经过图像预处理的待测PCB图像与标准图像进行对比后,通过算法找出缺陷。比较二者的连通区域数,若前者大于后者,则标定该缺陷点为断路,反之则为短路;若二者连通区域数相同,则比较二值化图像面积,若前者大于后者,则标定该缺陷点为凸起,反之则为凹陷。检测流程如图11所示 
  图11 PCB缺陷检测流程图 
  5 系统实验 
  本文使用CNC-T程控光源高精度影像测试系统操作台,结合VS2010软件基于OpenCV计算机视觉库的算法编程来实现PCB的缺陷检测。整体实验过程为手动控制操作台捕捉、聚焦、采集待测PCB的图像,采集到的图像与标准图像进行对比、识别,得出缺陷种类并显示结果。 
  本课题一共就所研究缺陷类型,做了40组实验,通过实验结果计算正确率。如表2所示 
  表2 实验结果统计 
  缺陷类型 实验次数 正确率 
  断路 10 100% 
  短路 10 100% 
  凸起 10 100% 
  凹陷 10 100% 
  针对不同电路板图中出现的同种断路类型进行检测,效果如图12a、图12b、图12c所示,可准确检测出缺陷存在。 
  图12 
  针对不同电路板图中出现的同种短路类型进行检测,效果如图13a、图13b、图13c所示,可准确检测出缺陷存在。 
  图13 
  针对不同电路板图中出现的同种凸起类型进行检测,效果如图14a、图14b、图14c所示,可准确检测出缺陷存在。 
  图14 
  针对不同电路板图中出现的同种凹陷类型进行检测,效果如图15a、图15b、图15c所示,可准确检测出缺陷存在。 
  图15 
  6 结语 
  PCB板面向体积越来越小、密度越来越高的方向发展。在检测产品价格方面,国外AOI检测产品价格普遍偏高,而由于经济原因,在国内PCB板生产制造商多数仍采用人工目测等传统检测方法检测。随着经济的发展,数字图像处理研究的深入,自动光学检测系统也开始频繁活跃在人们视线中,但在PCB缺陷检测方面的应用却还有待完善。因此,本论文建立在深入掌握工控系统结构并从PCB板的质量标准、图像特点、缺陷特征及检测求的分析基础上,对以图像处理为基础的PCB缺陷检测技术进行了深入研究。由于PCB缺陷自动检测系统的研究涉及多个领域的知识,其研究过程十分耗时、繁琐,由此,本论文仅仅对PCB缺陷检测中较为常见的问题进行了较深入研究,并且仅搭建了较为简单的PCB缺陷自动检测系统的实验平台,对PCB中的四类较为关键、常见的缺陷进行检测、分析、识别、判定。虽然还未实现真正实现工业上产业化检测,但是在未来几十年中,研究推广的PCB缺陷自动检测系统将有十分良好的应用前景,也将有高额的经济收益。 
  参考文献 
  1 陈胜勇,刘盛,等.基于OpenCV的计算机视觉技术实现M.北京科学出版社,2008. 
  2 Gary Bradski,Adrian Kaebler,于仕琪,等.学习OpenCVM.北京清华大学出版社,2009. 
  3 周长发.精通Visual C++图像处理编程(第3版) 
  M.北京电子工业出版社,2006. 
  4 党振.中国大陆PCB产业的现状与未来J.印制电路信息,2006,32(1). 
  5 胡跃明,谭颖.自动光学检测在中国的应用现状和发展J.微计算机信息,2006,(4). 
  6 李汉,何星,等.印刷电路板的自动光学检测系统 
  J.无损检测,2004,26(6). 
  7 张利,高永英,等.PCB板检测中的定位研究J.中国图像图形学,1999,4(8). 
  8 姚立新,张武学,等.AOI系统在PCB中的应用J.电子工业专用备,2004,(5). 
  9 范小涛,夏雨人.一种基于图像处理的PCB检测算法研究J.计算机工程与应用,2004,(13). 
  10 傅莉.印制电路板的发展及前景J.电脑与电信,2010,(5). 
  11 张明轩.基于视频序列的人脸检测与跟踪算法研究D.中北大学,2011. 
  12 张驰.基于机器视觉的智能控制与图像识别问题研究D.兰州理工大学,2009. 
  13 谢飞.基于计算机视觉的自动光学检测关键技术与应用研究D.南京大学,2013. 
  14 张静.PCB表观缺陷的自动光学检测理论与技术 
  D.电子科技大学,2013. 
  15 俞玮.AOI技术在PCB缺陷检测中的应用研究D.电子科技大学,2007. 
  16 赵兆.Visual C++在数字图像处理中的应用J.现代计算机(专业版),2011,(11). 
  作者简介孟繁丽(1977-),女,吉林白山人,天津职业技术师范大学控制理论与控制工程专业学生,高级讲师,工程硕士在读,研究方向工业电气控制技术。 
  (责任编辑黄银芳)