摘要:针对印刷电路板检测过程中导线线段的特点,提出了一种基于分层图像的印刷电路板三维导线提取算法。首先采用区域标识算法对导线区域进行筛选,达到对分割后的导线目标进行粗略定位和提取的目的;其次采用曲率链表的方法检测导线的拐点,获取导线所有线段的起止点坐标完成分层图像中导线的提取;最后对序列分层图像进行体绘制实现电路板中导线目标的三维可视化。
关键词:导线检测;自动提取;印刷电路板;三维重构
0 引言
在电路板质量检测领域,传统的人工视觉检测逐渐被自动光学检测(AOI)[1-2]、自动X射线检测(AXI)[3-4]等新兴检测技术所代替。同时随着电路板制造工艺的提高,对电路板内部缺陷的研究也从二维扩展到三维,获得电路板的三维形状、空间位置、空间尺寸等信息,从而准确地了解缺陷。尤其是锥束CT的出现,更加促进了三维缺陷检测技术的发展。
锥束CT(Cone Beam Computed Tomography)系统采用某种扫描方式获取目标物的投影图像,然后根据投影数据利用特定的算法得到高分辨率三维图像,且三个方向的分辨率一致[5]。与常规CT相比,锥束CT在检测微小缺陷和内部缺陷方面具有明显的优势。电路板一般是由导线、过孔、焊盘、基板等构成,由于目前元器件都采用贴片的形式,因此焊盘在电路板中可以通过二维图像很好地检测,导线在电路板均有分布,起到电路连接的作用,如果存在短路、断路等缺陷会导致PCB的功能失效,因此对电路板中导线进行提取是三维分析的前提条件。目前直线检测的常用方法主要是Hough变换[6],虽然Hough变换能检测到直线,但不能确定直线的起始位置和尺寸。
本文在通过锥束CT设备采集CT图像的基础上,对采集的图像进行层析获得电路板分层图像提取导线区域,最后利用等值面体绘制进行导线的三维可视化。
1 导线提取技术
1.1 导线区域分割筛选
导线区域的提取是建立在图像分割的基础之上,其主要目标是将图像划分为目标区和非目标区,其处理效果的好坏将直接影响图像分析、缺陷识别等后续步骤。当一幅图像背景和目标物对比度不够时,采用全局阈值并不能较好地分割前景目标。如果通过顶帽变换先去除背景,得到较均匀的前景目标后再进行阈值分割,这样会得到较为理想的分割结果。图像的白顶帽变换(White Top-Hat,WTH)定义为原始图像 f与其开运算图像r(f)的差,即:
WTH(f)=f-r(f).
(1)
数学形态学中的开运算一般能够去除图像中孤立的小点、毛刺和连通两块区域的部分。图像分割后采用形态学开运算对连接区域进行平滑,能够消除小点、毛刺等部分,图像分割的结果如图1所示。从图1中可以看出,经过对比度增强和顶帽变换后的图像背景更加均匀,对于受到黑色伪影影响的区域,可以明显看出伪影对导线的影响基本消除,分割后的形态学处理导线部分更加平滑。

图1 分层图像的分割结果
电路板分层图像中除了有导线外还有过孔、焊盘等要素,为了很好地对导线进行单独分析,需要对导线区域进行筛选。首先利用区域标识算法获取连通区域的区域信息[7],然后利用设定的面积阈值进行约束以便删除较小的非导线区域。当区域面积大于阈值时判断为导线区域;当区域面积小于阈值时判断为非导线区域并进行删除,从而筛选出导线区域。
1.2 目标提取
对导线进行提取之前首先需要对筛选出的导线区域进行细化以便提取导线的骨架。对于单像素骨架图像的提取可以通过形态学多次细化得到。目前常用的二值图像细化算法是根据图像中每个区域的结构特点来判断是否能够删除其中心像素,从而实现骨架提取。本文采用OPENCV中的cvRectangle()函数对每个像素的八邻域进行标记,遍历图像中的目标像素点,直到得到导线的单像素骨架图像。
导线是有起始端点的一条直线,知道其端点就能完成导线的有效提取。对于导线的单像素骨架图像来说,当某一像素的八邻域中只有一个邻接点时,判断该像素点可能是导线的端点。以该像素为中心,提取导线骨架图像每一像素点的八邻域,当其邻接点的个数大于2个时,该像素被认为是导线的最终端点然后将这些端点腐蚀,以断开相连的导线。最后设定导线长度阈值进行导线的判断,遍历整幅图像得到所有导线目标,如图2所示。
导线是由线段构成的,因此对每条导线的端点和拐点进行分析即可完成导线检测。本文采用基于曲线曲率的方法对拐点进行检测,该方法的关键是求取曲线的曲率,采用十一点法对曲线进行曲率的求解[8],然后通过取曲率链表的极大值判断该位置是否拐点,最后遍历曲率链表,如果当前曲率点的值在前后各三个点内取得极大值时则认为该点为一个拐点并记录,对每个导线区域进行以上的拐点分析过程,遍历整幅图像完成该层导线检测。如图3所示是经过上述步骤的某一层导线提取结果。

图2 细化后提取的导线

图3 导线检测结果
2 实验结果及分析
对电路板所有的分层图像用前文所述的方法进行导线目标提取,最后使用体绘制方法在MATLAB中对提取导线后的序列CT分层图像进行三维重建[9]。三维体绘制的步骤如下:
(1) 对提取的电路板24层CT图像数据进行三维数据集提取,得到一个三维的矩阵,该矩阵由图像数据的长和宽以及数据集的总数构成。本文中实验样品得到的三维数据集为512×299×24矩阵。
(2) 通过调用MATLAB函数库中的reducevolume函数来减少数据量,提高运算速度。
(3) 通过调用MATLAB函数库中的isosurface函数来计算数据集在显示平面的累计投影。
(4) 通过调用MATLAB函数库中的patch函数对碎片进行重建。
(5) 自定义显示效果。
通过上述步骤,运用MATLAB程序实现了电路板导线的三维重建,如图4所示。实验结果表明:该方法对印刷电路板中的导线能够实现有效的自动检测。

图4 三维导线检测结果
3 结论
本文针对印刷电路板中三维线状目标,提出了一种基于电路板分层图像的导线自动检测方法。首先通过分析图像中连通区域的面积对导线目标区域进行粗略定位和提取,然后通过形态学细化对导线单像素骨架进行了提取后分析导线的端点和拐点完成单层图像的导线提取,最后采用序列图像完成PCB板中导线的三维体绘制。实验结果表明:本文提出的锥束CT电路板序列分层图像的导线三维自动检测方法,检测效果较好,效率较高,能够满足实际工程中的应用要求。