1. 引言
随着电子技术的飞速发展,基于集成电路的电子设备都需要使用印刷电路板(PCB)。然而,随着集成电路的规模逐渐变大、生产工艺逐渐复杂,PCB质量检测成为集成电路产业不可或缺的一环。PCB是整个电子设备的核心部分,其质量直接影响电子设备的性能。视觉检测是PCB质量检测最常用的方法,而工业相机标定则是视觉检测环节中不可或缺的一部分,并且在业内得到了广泛的应用。
经典的相机镜头标定方法有直接线性变换法,Tsai的两步法 [1]。直接线性标定法建立了像素坐标和世界坐标系之间的关系,采用最小二乘方法求解,但是由于未考虑畸变的影响,导致精度较低 [2];Tsai的两步法在直接线性变换法的基础上引入了畸变参数,然而初始值是人为设定的,因此容易产生局部最优问题。张正友利用求单应性矩阵的方式估算出与结果最接近的初始值 [3],解决了局部最优问题。然而,张正友的方法所使用的标靶是陶瓷制成的棋盘格,在角点提取过程中棋盘角点误差分布较大,且世界坐标的设置通常采用人为计算的手段,具有较大的局限性。近年来,有许多学者基于张正友的方法提出了适应不同场景的方法,Park等人根据给定场景中三个或更多的抑制点计算初始值 [4],可以用于不同焦距下相机的统一标定;Zhu等人通过配备偏振器的CCD相机 [5],在不同空间位置获得最佳偏振角的棋盘标定图像,最后提取每张棋盘格图像中角点的二维像素坐标进行相机标定;汪首坤等人的方法采用了圆形标靶 [6],利用圆形对噪声的抑制较强的特性,提升了标定精度。虽然改进的方法在精度上得到了一定的提升,但是标靶是独立于视觉检测系统的,导致标定的过程与视觉检测的过程是分开的,一定程度上降低了视觉检测系统的自动化程度。
针对特定的PCB视觉检测系统,利用待检测PCB本身作为相机标定的标靶,本文在Gerber文件的基础上设计了一套将标定过程融入视觉检测流程的工业相机标定系统。为了保证精度,本文使用需要检测的PCB的Gerber文件生成PCB数字图像与实际相机拍摄的PCB标准样板进行对照,利用圆形成像时较高的抗噪声能力,提取PCB背板层数字图像和实际照片的圆形孔位的圆心进行标定。由于相机位姿的影响,被拍摄的圆形光孔在成像时通常为椭圆形,本文改进了传统的霍夫变换椭圆判别法 [7],降低了参数维度,从而提升了椭圆提取的效率。经过对于标靶和椭圆判别算法的改进,本系统在提升椭圆提取效率的同时保证了标定的精度。
2. 相机标定总体设计
本文设计的基于Gerber文件的工业相机标定系统框架如图1所示,系统由2个模块组成:PCB数字图像绘制模块和相机标定模块。PCB数字图像绘制模块接收待检PCB的Gerber文件,经过Gerber文件解析和绘制得到高精度PCB数字图像。在相机标定模块中,为了排除图像边缘误差,本文对得到的PCB数字图像进行矩形提取以裁剪出PCB主体部分,从而去除背景以及确定像素坐标原点,对于实物图像也需要进行矩形提取以达到相同目的。被提取的两种矩形在经过椭圆提取后进行椭圆圆心匹配,将匹配好的圆心坐标对输入标定算法可得到标定矩阵。
Figure 1. Frame diagram of industrial camera calibration system based on Gerber file
图1. 基于Gerber文件的工业相机标定系统框架图
3. 基于Gerber文件的PCB数字图像绘制
Gerber文件是线路板行业软件描述线路板(线路层、阻焊层、字符层等)图像及钻、铣数据的文档格式集合 [8],是线路板行业图像转换的标准格式,也是图像绘制的数据来源。其数据语法结构主要由数据块和命令块组成,数据块主要包含各种被定义的图元,命令块主要包含坐标数据和功能码以及功能码对应的参数。决定背板层光孔绘制的主要功能码为D码、G码。D码是绘图工具的控制码,包含原地闪光、移动、选择图元类型等操作;G码是绘图工具的动作控制码,决定绘图过程中的移动方向、是否进行填充以及圆形所占比例等信息。本文使用QT自带的QPainter绘图工具,输入Gerber文件即可画出相应的PCB数字图像,具体绘图过程如图2所示。
图2中的语法解析模块采用正则表达式匹配的方法解析 Gerber语言 [9]。正则表达式匹配能够通过输入的匹配表找出字符串中符合特定功能码的部分,从而获取该功能码的相关参数。语法解析模块将解析出的功能码以及其参数打包成命令对象,绘图状态器利用D码代表的图元类型结合G码代表的绘图工具的状态绘制出相应的图元对象。最后绘图工具遍历所有图元对象,将其渲染在画布上输出对应的PCB数字图像。
4. 相机标定
本文设计的相机标定流程包括矩形提取、椭圆提取以及相机标定模型和方法设计。由椭圆提取得到世界坐标以及像素坐标角点,通过相机标定模型矫正工业相机。
Figure 2. PCB digital image drawing process
图2. PCB数字图像绘制过程
4.1. 椭圆提取
在拍摄过程中,由于相机位姿的影响,实际成圆形的孔在成像时可能变为椭圆。因此,本文采用椭圆提取的方式来替换传统的霍夫圆提取方式。在实际图像中,噪声是不可避免的,因此要对拍摄到的图像进行预处理才能进行后续提取 [10]。
在椭圆提取之前,首先要进行两步预处理:图像去噪声处理和矩形提取处理。由于背景影响需要先提取图片内的矩形,利用Canny算子提取所有边缘信息 [11],由于生产过程中拍摄的PCB图像占据了图像的最大区域,因此遍历边缘信息时,只需要通过计算边缘的大小,寻找最大的区域。待寻得最大区域后,根据图像凸包寻找图像的四个角点,利用排序算法将四个角点按照顺时针顺序排列后输入透视变换函数getPerspectiveTransform()后提取该矩形区域。由于实物图像提取的矩形不是规则的矩形,因此需要进行特定的填充。工业相机所拍摄的PCB实物图像质量相对较好,仅存在因信号干扰产生的椒盐噪声,即图像中存在的黑白点状噪声。本文采用中值滤波对实物图像进行去噪声处理,中值滤波首先对一个区域内的像素值进行大小排序,取其中值替换这一区域的所有像素值,易于削弱高低频分量对于图像的影响,适用于消除椒盐噪声。
矩形提取与去噪声处理的结果是需要提取椭圆的无噪声矩形 [12]。椭圆的判别通常根据椭圆公式来设计算法。如椭圆公式(1)所示,确定一个椭圆需要5个参数,a,b为椭圆的长轴和短轴长度,
为椭圆的中心坐标,
为椭圆的旋转角度。利用传统的霍夫变换方法,参数空间为5维。
(1)
本文采用的椭圆判别方式降低了参数的维度,主要利用了椭圆的几何特征,即设平面上有一个椭圆,点C为椭圆的中心,任取平面上的一点P (不同于C点),点P距离椭圆上点的最大距离一定大于点C距离椭圆上点的最大距离。由该特征将椭圆判别算法分为预处理和检验两步。由于减少了整体的判别参数,使用该几何特征的算法对于 PCB板来说效率较高。算法流程如算法1所示,算法根据椭圆特征进行了参数的降维。
算法1. 椭圆判定算法
其中,算法的输入为边缘数组 edge以及均方误差阈值s,对于每个边缘计算中心点与所有边缘点的最大距离,将求取的最大距离与中心点代入椭圆公式求解剩余参数,并在参数空间统计均方误差,若均方误差小于设定阈值,则判定为椭圆。本算法的理论时间复杂度为O(n2),实际运行中在保证图像质量的前提下具有良好的性能。
4.2. 相机标定的模型与方法
相机标定即获得相机内外参数的过程,本文采用的标定方法改进了传统的平面标靶,采取 PCB作为标定标靶,通过提取 PCB数字图像的角点坐标计算出世界坐标。
本文采用的成像模型涉及到四个坐标系,分别为图像像素坐标系、图像成像坐标系、摄像机坐标系和世界坐标系,世界坐标
投影到图像像素坐标
可以通过四个坐标之间的转化矩阵来实现,该矩阵就是内外参矩阵,其中四个坐标系之间的转化关系为 [6]:
(2)
其中,s为比例系数,A成为相机的内部参数矩阵,H为单应矩阵,
为图像的像素原点,α、β为相机坐标与图像坐标的转化参数,即每单位长度有多少像素,
为PCB板的旋转和平移矩阵,
为R的两个列向量,
表示由于制造误差产生的两个坐标轴偏斜参数。
相机标定的过程即是求解该内外参数矩阵的过程,同时引入畸变参数,确保标定的精度。标定算法流程如算法2所示,算法基于张正友标定算法对世界坐标的获取做出了相应的改动。
算法2. 相机标定算法
其中,输入的参数有:realImage数组为PCB实物图片数组,digitalImage为数字图片数组,s为预设控制参数。算法首先进行角点提取与匹配,利用SVD分解求解所有图片对的初始单应矩阵,再将得到的单应矩阵数组经L-M算法求解非线性最小二乘问题得到准确的单应矩阵H。对所有实物图片的所有角点求解畸变参数时,则根据求得的单应矩阵H结合世界坐标求得像素坐标估计值,然后根据畸变公式求解出畸变参数的估计值,最后将得到的畸变向量数组经L-M算法求解非线性最小二乘问题得到准确的畸变向量K、P。算法的理论时间复杂度为O(n2),实际的运行时间由角点的数量决定,因此,算法的效率较高。
5. 实验及结果
实验采用的相机分辨率为1600 × 1200像素。使用QtCreator测试环境结合Opencv3.0进行程序的编写和测试。试验首先对比本文椭圆判别算法与霍夫变换椭圆判别算法的效率与准确率,其次对比本文PCB标靶与圆形、棋盘格形标靶的精度指标。
5.1. 椭圆判别算法对比实验与分析
实验选取分别两块不同的PCB实物背板各拍摄10张不同位姿的图像,一块PCB中的圆形空位排列比较稀疏,拥有56个圆形孔位,图片编号为1~10,另一块 PCB的圆形孔位排列比较密集,拥有61个圆形孔位,图片编号为11~20。将经过统一预处理和边缘提取后的四十张图片分别输入两种算法,运行时间与准确率对比图如图3所示。
从图3可以得出结论,本文椭圆判别算法的平均运行时间较传统椭圆判别算法提升了将近10倍,平均准确率为99.45%。且可以看出,传统的霍夫变换判别算法在处理噪声较大图片时,有较高的准确率,但是耗费的时间相较噪声小的图片会长很多,例如图片编号为3,7,15,19的图片程序运行时间显著变长,但是识别准确率没有明显下降;本文算法在相同噪声情况下,虽然准确率略微下降,但是运行时间没有明显变长。另外,由于本文算法减少了椭圆参数的数量,降低了算法复杂度,所以在图片中椭圆数量上升时,本文算法也保持了较短的运行时间。由此可以得出在保证图像质量的前提下该算法可以提升椭圆提取的效率。
(a) 运行时间对比图(b) 准确率对比图
Figure 3. Algorithm performance comparison chart
图3. 算法性能对比图
5.2. PCB标靶对比实验与分析
实验对不同姿态和方向的PCB板进行拍照,共获取20幅背板层图像以及用Gerber文件生成PCB的背板层。将Gerber文件数字图像和拍摄的20幅背板层图像读入程序中,得到的标定结果如下。
内参矩阵:
镜头畸变参数为:
,
(a) PCB标靶 (b) 棋盘格标靶 (c) 圆形标靶
Figure 4. Comparative test target diagram
图4. 对比试验标靶图
对比试验采用棋盘格标靶与圆形标靶进行标定,按照文献 [13] 描述的方法计算标定结果的标定误差,表1~3分别为PCB标靶、棋盘格标靶、圆形标靶的平均重投影误差,标靶实物如图4所示。
Table 1. Average re-projection error of PCB target
表1. PCB标靶的平均重投影误差
Table 2. Average re-projection error of checkboard target
表2. 棋盘格标靶的平均重投影误差
Table 3. Average re-projection error of circle target
表3. 圆形标靶的平均重投影误差
三种标靶20张图片的平均重投影误差分别为0.008529、0.015442、0.010318。从平均重投影误差的结果来看,PCB标靶的精度优于其他两种标靶,棋盘格标靶的平均重投影误差明显高于其他两种标靶。虽然圆形标靶在某些条件下的平均重投影误差要低于PCB标靶,但是由于圆心世界坐标提取时只采用估算的手段,导致在图像配准时,圆心坐标与真实世界坐标误差较大,因此会产生更大的误差。PCB标靶的世界坐标获取采用从数字图像采集的方式,保证了世界坐标的准确性,产生误差的原因主要是图像噪声和机器误差,在保证光源稳定、图像清晰的前提下,其平均重投影误差就会大大降低。利用方差作为衡量指标,PCB标靶平均重投影误差的方差为0.106368,而圆形标靶的平均重投影误差的方差为0.120529,由此证明了PCB标靶不仅有更高的精度,同时具有更高的鲁棒性。
6. 结论
基于传统平面标靶的相机标定在确定世界坐标时具有较大的局限性,分离的标定过程导致标定需要人为干预。本文通过Gerber文件画出PCB数字图像,以PCB本身当作特定标靶,保证了世界坐标的精确度。同时在配备本文标定算法的PCB视觉检测系统中,由于标靶和检测目标为同一对象,标定过程是自动进行而非传统人为干预的。实验结果表明,本文提出的方法不仅有较高的精度,更具有较高的自动化水平,有利于提升PCB视觉检测系统的效率与准确性。本文未来的工作将围绕保证自动化水平的前提下提升系统的精度和鲁棒性展开。