基于图像处理的电路板缺陷检测系统设计①

2024-03-20 08:22张立国雷璇瑞金梅吴文哲宋炳豪
高技术通讯 2024年2期
关键词:灰度级丝印电路板

张立国 雷璇瑞 金梅 吴文哲 宋炳豪

(燕山大学电气工程学院 秦皇岛 066000)

电路板作为电子设备中的重要组成部分,承载着元器件之间的电气连接,在电子设备中应用十分广泛[1]。随着集成电路产业的发展,电路板的集成程度更高、面积更小、层数更多,但经常出现印刷质量问题,比如缺焊、错焊、漏锡、空洞和短路等等。随着电路板需求的日益增长,其印刷质量成为重中之重。传统电路板缺陷检测依靠人工检测,随着需求量的增加人工检测效率低且成本越来越高,因此,本文设计基于图像处理的电路板缺陷检测系统以解决该问题,并将其在硬件上实现。

在检测算法研究中,文献[2]提出了一种利用小波变换来滤除噪声的算法,利用待检测电路板图像与模板电路板图像进行对比来完成电路板缺陷的检测,可以降低电路板图像中的噪声影响,但其方法在精度和速度方面远达不到生产检测的需求。文献[3]把现场可编程门阵列(field-programmable gate array,FPGA)技术引入到了印刷电路板(print circuit board,PCB)缺陷检测系统中,通过调用FPGA 的函数库完成检测系统的设计,可以快速地对PCB 缺陷进行检测。虽然其方法在速度上有一定的提升,但却忽略了检测精度。文献[4]设计了一款基于扩展特征金字塔网络模型的PCB 缺陷检测方法,在公共数据集上检测精度较高。文献[5]提出了一种基于机器视觉的PCB 缺陷在线检测方法,使用改进二分K-means 均值算法(K-means clustering algorithm,Kmeans)聚类结合交并比损失函数确定锚框,解决锚框不适用电路板小目标缺陷检测的问题,利用多种卷积核进行运算满足电路板缺陷多类别的检测要求。该方法检测精度高,检测时间相对较短,但该检测方法依然不能满足生产线的检测需求。文献[6]采用多尺度融合的金字塔模型有效地提高模型的特征识别能力,引入可变形卷积,通过卷积学习偏移量提高模型的特征提取能力来提高PCB 缺陷检测的精度和速度。上述研究都提出了较好的方法,但是在检测速度、精度以及成本上都有待提高。

在上述研究的基础上,本文设计并实现基于图像处理的电路板缺陷检测系统。该设计在传统图像增强、边缘检测和模板匹配算法的基础上将其进行改进,并在FPGA 上实现并行处理;为加快待检测板与标准板对比速度提出一种新的去除电路板上多余标识字样的算法即去除丝印算法,将原始图像的标识字样去除减少图像对比的数量,有效加快缺陷检测的速度。在多块包含缺陷的电路板上进行验证,实验结果表明,该设计能更高效、快速地定位出电路板的缺陷,检测速度更快、精度更高。

1 图像预处理算法

1.1 改进的灰度拉伸变换算法

受采集环境的影响,采集到的图像对比度较低。灰度拉伸是通过某种映射关系,将原图像中的灰度值映射为另一个灰度值,从而达到拉伸或压缩整个图像灰度分布的目的[7]。传统的灰度拉伸算法在实际应用中,其最小灰度级A和最大灰度级B的选取完全基于经验,且选取固定,对于图像信息时刻变化的图像来说,传统的灰度拉伸处理不具有适应性。

针对上述问题对传统灰度拉伸算法进行改进,放弃对最小灰度级A和最大灰度级B的选取方式,而是选取图像每一行像素的最小值和最大值;然后将每一行的最大值和最小值分别相加求取平均值,将最大值的平均值作为最大灰度级Max,将最小值的平均值作为最小灰度级Min,感兴趣区间变为[Min,Max]。由于原始像素值可能大于最大灰度级Max,将增益系数设置为255 可能会造成图像亮点较多,因此结合图像特点,将增益系数设置为最大灰度级Max,其改进拉伸变换公式如式(1)所示。

其中f(x,y) 为输入图像,Min为最小灰度级、Max为最大灰度级,g(x,y) 为变换后最终得到的图像。改进后的图像增强模块分为求最值模块和拉伸模块,拉伸模块具体流程图如图1 所示。

图1 拉伸模块流程图

由文献[8]可知,本文改进的灰度拉伸算法同样适用于彩色图像,将式(1)分别应用到红(red,R)、绿(green,G)、蓝(blue,B)分量上,将3 个分量分别看作单独通道,进行灰度拉伸,最后将拉伸后的三通道合成新的彩色图像输出。

1.2 去除丝印算法

由于原始图像信息中包含电路板上为了方便识别电阻以及芯片型号而标识的字样,但是这些字样在模板匹配的过程中并没有起到任何作用反而会因为其字样而增加对比时间。为了加快模板匹配的检测速度,提高匹配的检测精度,本文提出一种去除丝印算法,即将干扰电路板匹配检测的标识字样去掉,替换成电路板的底色。去除丝印算法的步骤如下:

(1)设原图像灰度级数j:j=0,1,2,…,L-1;L是灰度级的个数,取值范围在0~255 之间;

(2)统计原图像灰度级像素个数Ni;

(4)计算累计直方图Pj=∑p(k),k=0,1,2,…,j;

(5) 找出累计直方图最多的像素点P=Max{Pj},即每帧图像出现最多的像素点也就是图像的底色;

(6)由于标识字样都为白色,则将在白色范围内的像素全部替换为最多像素点的像素。

1.3 改进的边缘检测算法

传统的Sobel 边缘检测算法计算方法简单,对噪声具有平滑作用,但是边缘精度不高[9]。其检测算子只对水平方向和竖直方向敏感,阈值的选取也完全依靠人为选定且选取固定,或保留较多或丢失较多图像信息[10],不能达到预期处理效果。针对上述阈值选取固定和算子模板不能更好体现图像细节的问题,本文在传统Sobel 边缘检测算法的基础上进行改进,其具体改进步骤如下。

(1)设定滚动窗口的大小,选定3 ×3 大小窗口与模板算子进行平面卷积。

(2)确定卷积算子。将卷积算子由原来的2 个扩展成8 个,卷积算子模板如图2 所示。

图2 Sobel 8 方向模板算子

(3)根据Sobel 算子计算8 个方向的梯度值。

(4)计算Sobel 边缘检测的阈值,采用自适应阈值,使用向量[G0°,G45°,G90°,G135°,G180°,G225°,G270°,G315°]T的范数表示,使用无穷范数化简后得到最佳阈值T为GMax,GMax如式(2)所示。

(5)得到的梯度G与阈值T进行比较,得到最终的图像边缘信息,如式(3)所示。

1.4 改进的模板匹配算法

图像匹配是指把不同传感器、不同时间、不同视角、不同成像等条件下得到的图像进行比较,得到两幅图像之间的最佳匹配位置[11],图像模板匹配流程如图3 所示。标准图即检测系统中的标准电路板图像,待测图即检测系统中待检测电路板图像,根据绝对误差和算法(sum of absolute differences,SAD)来确定两幅图像的相似性。

图3 图像模板匹配流程图

SAD 模板匹配算法的优点在于原理简单,更易于FPGA 硬件实现。但是对于背景复杂、光照变化大的情况,该算法会导致匹配率下降[12]。由于本文研究的电路板缺陷检测系统在摄像头采集图像时光照变化较大,采用传统的SAD 模板匹配算法可能会导致匹配率下降。针对上述问题,本文提出采用去均值法改进传统SAD 模板匹配算法。

改进的SAD 模板匹配算法原理如下:将待检测图S和标准图T分别去掉均值,即在绝对值差累加时减去平均值后再累加,改进后的SAD 算法如式(4)所示,此方式可以有效减小由于灰度变化明显时带来的影响,实现实时跟踪检测对比。

其中,待测图S的大小为M×N;标准图T的大小为P×Q;x=0,1,…,M-P+1;y=0,1,…,N-Q+1;为待测图的平均值;为标准图的平均值。

2 缺陷检测系统总体设计

电路板缺陷检测系统包括硬件部分和软件部分,其中硬件部分包括照明模块、电路板运动控制模块、图像采集模块和图像显示模块;软件部分包括图像预处理模块、图像缓存模块以及缺陷检测模块,并控制硬件系统实现协调运行。系统结构框图如图4所示。

图4 电路板缺陷检测系统结构框图

2.1 系统硬件设计

2.1.1 图像采集模块

摄像头的选取对于采集到的图像质量至关重要。本文选用互补金属氧化物半导体(complementary metal oxide semiconductor,CMOS)图像传感器中的OV5640 图像传感器,其感光阵列达到2 592 ×1 944(即500 万像素),内部集成了图像处理的功能,同时支持发光二极管(light emitting diode,LED)补光、移动产业处理器接口(mobile industry processor interface,MIPI)输出和数字视频接口(digital video port,DVP)输出选择等功能,DVP 接口采用并口传输[13]。

OV5640 图像传感器的具体参数如表1 所示,通过串行摄像机控制总线协议[14]对摄像头内部寄存器进行配置,进而实现对图像的输出。

表1 OV5640 图像传感器的相关参数

2.1.2 图像显示模块

经过检测后的电路板若存在缺陷,则要对存在缺陷的部分进行红框标记。为了方便质检人员能快速区分电路板是否存在缺陷且明确缺陷的位置,需要将红框标记的带有缺陷的电路板图像显示在显示器上。本文采用高清多媒体(high definition multimedia interface,HDMI)接口输出图像[15],利用Verilog 语言调用FPGA 芯片中的IP 核来完成相关设计,从HDMI 接口输出电路板检测后的图像信息。

2.2 系统软件设计

系统的软件设计包括图像预处理模块、图像缓存模块和缺陷检测模块,图像预处理模块又包括彩色图像增强、去除丝印、灰度变换、中值滤波、边缘检测和腐蚀。系统的FPGA 实现逻辑框图如图5 所示。

图5 系统软件部分FPGA 实现逻辑框图

2.2.1 图像缓存模块

本文选用2 个芯片型号为IS61WV51232BLL 的静态随机存取存储器(static random-access memory,SRAM)。采用2 个SRAM 实现数据读取的乒乓结构,根据帧数标记(flag)切换2 个Bank 分别存储待检测电路板的相邻两帧图像信息,循环存储。该方式节省数据读取的时间,加快检测速度,将标准电路板图像信息存储在FPGA 内部的随机存取存储器(random access memory,RAM)中。存储器的乒乓操作示意图如图6 所示。

图6 存储器乒乓操作示意图

2.2.2 缺陷检测模块

本文设计的缺陷检测系统以SAD 模板匹配算法为核心,待检测电路板图像经过预处理后进入模板匹配模块,与标准电路板图像进行对比。待检测电路板图像信息从外部SRAM 中读取,与存储在FPGA 内部RAM 的标准电路板图像信息进行匹配。若能与标准电路板图像信息完全匹配则表示待检测电路板无缺陷,若不能则输出标准图坐标,用红框标记对应待测图像的方块,表明待检测电路板此处有缺陷。

3 FPGA 硬件实现与结果分析

3.1 FPGA 硬件实现

3.1.1 彩色图像拉伸算法的实现

本文将灰度拉伸算法应用在彩色图片上:将RGB 图像分解成R、G、B 3 个分量,然后对3 个分量分别进行灰度拉伸变换,最后将3 个分量的数据同时输出合成RGB 彩色图像。图7 为FPGA 上实现彩色图像增强的实验结果。显然,经过改进算法的图像对比度更高,色彩更加清晰鲜明。

图7 图像增强算法在FPGA 上的实现结果

3.1.2 去除丝印算法的实现

本文所设计的去除丝印算法的主要目的是将干扰电路板匹配检测的标识字样去掉,加快图像匹配的速度。由于去除丝印算法处理的图像为彩色图像,因此将图像分为R、G、B 3个通道分别进行处理,去除丝印算法的实现过程如下。

(1)计算原始图像的直方图,采集1 920 ×1 080大小的原始图像,灰度级共有256 个,并将结果存储在256 ×21 位的存储器中,然后统计出最多的像素值。

(2)由于字体表示通常为白色,因此将图像中大于一定值的像素替换为最多的像素值。统计完成后灰度级L为244,图8 所示为FPGA 上实现去除丝印算法的实验结果。

图8 去除丝印算法在FPGA 上的实现结果

3.1.3 边缘检测算法的实现

本文基于改进的8 算子Sobel 边缘检测算法其基本思想是基于流水线和并行处理,这种方式既可以快速完成图像处理又能节省硬件资源占用率。基于改进的Sobel 边缘检测算法首先将8 个算子分别与窗口数据进行卷积,得到8 个卷积结果后进行对比,找到最大值与阈值进行对比,得到最终的图像边缘。由图9 实验结果可知,应用传统的边缘检测算法进行检测时图像边缘存在细节缺失且边缘不连续的问题,而采用本文算法进行边缘检测的图像边缘细节更多,且未出现边缘不连续现象。

图9 Sobel 边缘检测算法检测结果

3.1.4 模板匹配模块算法的实现

基于改进的模板匹配算法在图像经过边缘检测处理后,输入模板匹配模块,对待检测电路板图像进行匹配。首先将去均值的标准板图像存储在FPGA的内部RAM 中,待检测图像存储在外部SRAM 中;将待检测图像求取均值与延迟一拍的图像求取差值,得到待检测图像的去均值图像,然后与去均值标准板图像进行求差累加,判断结果的最小值;最后输出坐标,标记待检测电路板缺陷处,模板大小选用25 ×25(像素)。具体实现流程如图10 所示。

图10 模板匹配算法FPGA 实现框图

SAD 模板匹配算法缺陷标记实验结果如图11所示。由图可知,缺焊、错焊、漏锡类型的缺陷均被准确标记,实验效果良好。

图11 SAD 模板匹配算法FPGA 实现结果

3.2 实验结果与分析

本文所设计的电路板缺陷检测系统选用FPGA芯片为XC7A35TFGG484-2I,通过Vivado 2019.2 综合器综合后,得到系统资源使用综合报告如图12 所示。由图可知板上资源占用较少,扩展空间较大。

图12 缺陷检测系统资源占用比例综合报告图

根据本文设计对系统硬件和软件分析研究,对系统检测的正确率和耗时进行线上测试,在良好的实验环境下对1 000块电路板样品进行缺陷检测。电路板缺陷主要以缺焊、错焊、漏锡、短路和空洞为主,而缺焊、漏锡和错焊占电路板缺陷的96%[16]。因此本文实验主要针对以上3 种缺陷进行检测,表2所示为样本检测结果。其中,漏检率为电路板本身不合格但系统未检测出缺陷从而被判定为合格电路板情况的概率;平均检测精度为系统检测正确电路板在所有样本中的占比;检测速度为单张150 mm×120 mm 电路板检测完成所需要的时间。由表2 可知系统的漏检率为0.30%,误检率为1.17%,因此平均检测精度为98.53%,检测单张电路板的时间为8.204 s。2020 年,文献[17]设计了一款电路板表面缺陷检测系统,其漏检率为1.79%,误检率为3.23%,单张电路板检测时间为8.500 s。2022年,文献[18]设计了一款印刷电路板缺陷检测系统,其漏检率为0.95%,误检率为3.33%,平均精度为95.72%,单张电路板检测时间为8.455 s。相较而言,本文系统设计在精度和速度上都有所提高。

4 结论

本文研究设计了一款以图像处理为基础、利用FPGA 实现对电路板缺陷准确、高速检测的系统。其设计在传统图像增强、模板匹配、Sobel 边缘检测算法的基础上进行改进,并提出了一种新的去除丝印算法。采用FPGA 作为硬件平台,在Vivado 开发环境下实现Verilog HDL 硬件逻辑语言,下载到FPGA 中实现。实验结果表明,本文提出的方法比采用传统图像处理方法进行检测在准确度和检测速度上均有提升。此外,本文设计系统选用芯片价格较低,整体设计灵活,造价在3 万元以内,相比目前市面上的缺陷检测系统更具市场优势。

猜你喜欢
灰度级丝印电路板
为什么有电路板,机器才能运行?
阀控式铅酸电池用全自动丝网印刷装备
人眼可感知最多相邻像素灰度差的全局图像优化方法*
基于灰度直方图的单一图像噪声类型识别研究
城市轨道车辆内部标识制作的应用比较
消费类电子产品美工知识介绍
废弃电路板拆解技术研究现状及展望
单片机实验电路板的安装与调试
微波辅助浸取废弃电路板中铅锡锑
基于混沌加密的DCT域灰度级盲水印算法