基于OPENCV和图像减法的PCB缺陷检测

原文地址:PCB defect detection USING OPENCV with image subtraction method

Abstract

在PCB制造业中,生产的一个最重要方面是质量检查。PCB板经历了从面板切割到层压的大量生产过程,一块板上的一个缺陷将使整个板过时。随着电子电器需求的日益增长,对更高质量元器件的需求也在不断增长。由于商用AOI价格高昂,许多制造商无法进行自动检测。在这方面,计算机视觉可以为商业AOI提供一种替代方案,以帮助小型制造商进行自动检测。图像减法和斑点检测使用户能够轻松地发现PCB中的大量视觉缺陷,尤其是使用复杂的方法。通过解剖图片并指出输出图像上的差异,可以快速检查PCB,找出有缺陷的零件。因此,本论文将重点关注一个基本的图像减法足以帮助制造商进行质量检查的基础

关键词-AOI;OpenCV;计算机视觉,PCB;图像减法

I. INTRODUCTION

在这个信息时代,电子工具和电器的使用率每天都在上升,因此也意味着印刷电路板(PCB)的使用率更高,因为它是几乎每个消费电子电器的基础平台。随着我们今天看到的技术进步,PCB不仅被各行业所使用,而且也被大学生和业余爱好者所使用,这为小型PCB生产行业创造了市场,因为与过去相比,生产过程变得越来越容易。

为了满足消费者对优质电路板的需求,必须进行质量检查和控制,以确保没有影响PCB最终产品的缺陷,这就是为什么现在有必要进行机器视觉检查,以确保PCB的质量良好。[1]

要进行机器视觉检查过程,通常PCB生产商必须使用自动光学检查(AOI)系统[2],对于通常不使用先进机械来制造PCB的小型PCB生产商来说,这可能非常昂贵。

本文将重点研究通过OpenCV实现的计算机视觉技术,该技术使系统能够捕获、识别和分析图像,为用户找到信息,其中计算机视觉将用于利用OpenCV中包含的基于参考图像的图像减法检测裸印刷PCB的缺陷。

检测系统将基于图像减影技术,以检测减影结果上的残余特性,并将其宣布为结果上的缺陷。系统中使用的所有方法都基于OpenCV库,包括图像处理、图像减法和斑点检测方法。

该系统的目的是提供一个能够进行质量检查的小型系统,以找出PCB生产中裸印制板上的任何缺陷,该系统将自动找到缺陷零件,提供PCB的状态,并向系统用户指出缺陷零件在PCB板上的位置。

考虑到时间和技术限制,项目中存在一些限制。最明显的限制是,由于使用了图像减法,为了使系统达到所需的精度,参考图像和被检查图像必须具有相同的尺寸和图像对齐。

II. RESEARCH METHODOLOGY

PCB检查系统的基本概念是,它使系统用户能够通过输入PCB的参考图像来检查其PCB,该图像将是无缺陷PCB或与初始PCB设计对齐,然后将其与检查的PCB图像进行比较,从而生成一个新图像,其中PCB的缺陷部分将被指向并显示在显示窗口中,此外,包含已检查PCB信息的信息,如发现的缺陷数量、PCB状态和所用时间 去处理将显示以测量系统的性能。

该检测系统利用OpenCV库的方法和功能**,尤其是图像处理技术,包括高斯模糊、阈值、图像形态学、图像减法和斑点检测。**

第一个过程是图像捕获,其中参考图像和被检查的PCB图像被插入到系统中。在这个项目中,获取PCB图像的方法是通过程序从代码中手动完成的。图像被放入程序的文件夹中,然后由系统自动拾取。

下一个过程是图像预处理阶段,在该阶段中,将使用多个图像处理过程来准备每个图像,以将原始图像转换为二进制形式,用于发现PCB的缺陷部分。

系统中包含的最后一个过程是缺陷检测过程,该过程将输出PCB检查图像的结果。经过处理的参考和检查的PCB图像都将进入相同的步骤,即图像减法,以找出两个图像之间的差异,此过程将创建一个新图像,即参考图像和检查的PCB图像之间的绝对差异。之后,图像将经过斑点检测过程,系统将查找差分图像中残留的任何物体斑点。如果仍有斑点,系统将对其进行标记,然后绘制关键点,以便向用户报告PCB的缺陷部件所在的位置

图像必须经过的第二个过程是预处理设计。在此阶段,图像将应用多种图像处理方法,以提取所需的相关信息。以下是此过程中使用的OpenCV函数。

**Gaussian Blurring **首先应用于图像,以平滑图像并减少可能影响系统精度的任何噪声。要执行此过程,调用OpenCV库中的函数GaussianBlur()

转换为灰度级,模糊图像将转换为灰度图像。在处理开始时,图像作为RGB模型图像插入,这对于系统转换为二值图像而言不是最佳选择。在此过程中,将使用cvtColor()函数。

阈值处理过程在图像转换为灰度后开始,系统将继续将其转换为二进制形式。它使用OpenCV库中包含的名为threshold()的函数。对于此过程,使用的阈值为127,最大值为255,并且为反向二进制阈值类型。完成此过程是为了使系统能够创建斑点以供后期检查。

在形态学步骤中,通过OpenCV库中包含的形态学函数完成结构元素操作。使用的形态学方法是闭合法,它可以去除可能影响系统精度的小孔和圆点。闭合形态学方法包括先进行膨胀,然后进行侵蚀,直到满足系统要求为止。调用的函数是morphologyEx()。

缺陷检测在图像预处理步骤完成后开始,处理后的参考图像和检查的PCB图像将进入同一步骤,即图像减法,以找出两个图像之间的差异,此过程将创建一个新图像,即参考图像和检查的PCB图像之间的绝对差异

然后,图像将经过斑点检测过程,系统将查找差分图像中残留的任何物体斑点。如果还有斑点,该系统将对其进行标记,然后绘制关键点,以便向用户报告PCB缺陷部件的位置。

以下是缺陷检测过程中使用的OpenCV功能。

**图像减法 **

在参考和检查的PCB图像都经过预处理后,两幅图像的格式都是二进制的,仅由0和1组成。使用OpenCV库中包含的absdiff()函数,执行异或操作,该操作将创建一个新的临时图像,其中包含参考图像和已检查PCB图像之间的差异。为了继续下一步,即斑点检测,再次应用阈值函数来反转颜色。

污点检测********

从图像减法中找出残差,这种方法也称为BLOB。PCB检查方法使用了几个参数,即Area, Circularity, Convexity, and Inertia。面积转化为剩余斑点的密度,圆度衡量斑点与圆形的接近程度,凸度指斑点的凸面形状,惯性指斑点的形状,无论是圆形还是接近直线。系统使用的最小面积为50,最小圆度为0.01,最小凸度为0.5,最小惯性比为0.009

**绘图关键点 **

标记blob后,将在blob上绘制关键点,以确保blob检测按预期工作。函数的作用是:在检测到的水滴周围绘制圆圈。对于系统的最后一部分,还将在已检查的PCB图像上绘制关键点,以向用户显示缺陷零件的位置。

**PCB质量检查 **

一般而言,质量检查是一项检查产品质量的活动,应用于制造过程和组织分析。[3]

PCB或印刷电路板是一种由层压材料(如玻璃纤维)制成的薄板,其上刻有导电通路,用于连接嵌入PCB上的不同组件,如晶体管、电阻器和集成电路。这些组件焊接到PCB上的导电轨道上,使它们能够一起工作。在PCB制造业中,质量检查在生产过程中至关重要,以避免每个电路板上存在任何缺陷零件,因为在PCB中发现的任何缺陷零件都可能导致设计偏差,从而导致PCB不工作。Moganti在1996年提出了三种PCB检测算法,分别是由图像比较技术组成的参考方法基于PCB元件通用设计规则的非参考方法参考与非参考相结合的混合方法。[4]

有几种方法或解决方案可用于使用参考方法进行PCB检查,其中一种方法是使用自动光学检查。自动光学检查(AOI)系统顾名思义,是一种对印刷电路板(PCB)或其他电子元件生产进行的自动视觉检查,其中摄像头用于自动扫描产品表面的质量缺陷,并将缺陷产品从其余生产中分拣出来。AOI系统一般在计算机视觉学科范围内工作,这是人工智能研究领域的一个分支。

PCB缺陷

对于PCB面板,有各种缺陷可能会影响印刷在PCB上的图案。有几种类型的缺陷可分为功能缺陷视觉缺陷

功能缺陷严重影响PCB的功能,因为它们会损坏PCB,导致设计和产品不一致而出现故障。另一方面,视觉缺陷,正如其名称所述,只是在短时间内不会损害PCB的小缺陷。然而,在很长一段时间内,视觉缺陷也会影响PCB的功能,因为设计和当前产品之间的不一致会导致潜在的缺陷。因此,检查以确保PCB没有任何类型的缺陷至关重要。

在有缺陷的PCB中,可以发现各种缺陷,如图5所示,其中缺陷分为以下类型:

  1. Breakout
  2. Pinhole
  3. Open
  4. Under etch
  5. Mouse bite
  6. Missing conductor
  7. Spur
  8. Short
  9. Wrong Size Hole
  10. Conductor too close
  11. Spurious Copper
  12. Excessive Short
  13. Missing Hole
  14. Overetch

图像处理

从本质上讲,图像处理是一个提取图像处理、检测、导航和识别所需视觉信息的过程。这是一个系统需要执行的过程,有时是按照精确的顺序,以获取可以从输入图像中获取的附加信息。[5]

高斯模糊或高斯平滑是图像处理中常用的一种技术或方法。对数字图像应用高斯模糊的主要目的是平滑粗糙边缘,降低图像分辨率,并减少噪声。[6]

在2D平面场景中,函数的方程将使用同心圆创建一个曲面作为图像的轮廓。然后,从中心点开始应用高斯分布,然后创建值,形成卷积矩阵。然后将矩阵应用于参考图像。这个新矩阵包含几个像素值,这些值是相邻像素的加权平均值。受高斯函数影响的原始像素将具有对最高高斯值贡献的最大权重,而较小权重将以与原始像素的距离的增量加载到其相邻像素。[7]

图像阈值分割是计算机视觉中最简单的图像分割方法之一。阈值化是一个过程,其中灰度图像将作为输入图像插入到该过程中,然后进行处理以创建二值图像。[8]

它的工作方式是,由于灰度图像仅包含一个范围为0到255的单个值,因此将使用一个称为T的常量作为基数,根据像素中包含的当前值与T值进行比较来修改图像。如果图像强度I(I,j)小于T值,则返回0值(黑色),反之,返回255值(白色)。

二值图像形态学是一种利用结构元素对二值图像进行处理的图像处理方法。结构元素本身是一个参考或基础二进制图像,用于处理输入图像以获得所需的结果图像。图像形态学用于将二值图像处理或变形为若干形状或斑点,以便从图像中提取新信息。虽然结构元素有多种形状,但在二值图像形态学中使用最多的形状是长方体和环形。[5]

图像相减是一种算法或过程,其中系统将两幅图像作为输入,然后生成结果图像的输出,其像素值仅从第一幅图像的像素值减去第二幅图像的像素值得到。[9]

有几种方法可以进行图像减法,即严格减去两幅图像中的像素值,即简单地减去图像中包含的像素值,或计算两幅图像的绝对差值

IV. RESULTS

使用两种图像测试系统的性能,一种是720p以下的低分辨率图像,另一种是720p以上的高分辨率图像。这些图像是从在线存储库中获取的,其中人为缺陷应用于图像上,用于测试目的。

Result Analysis

从两张测试图像中,以下是缺陷检测系统的结果。

从以上数据来看,目前使用图像减法检测PCB上的缺陷零件的方法被证明速度非常快,从低分辨率图像的0.856秒到高分辨率图像的2.68s不等,这比人工检查速度更快。

图像的大小表示每次检查的时间,因为图像越大,处理的像素越多,完成检查过程所需的时间就越长。系统的精度也由图像的大小或分辨率来表示,随着图像的精度或分辨率越高,程序的精度也会提高

该系统能够检测所有测试板上的缺陷零件,这是该项目的主要目标。

V. CONCLUSION

PCB检测系统能够使用图像减法以非常快的速度检测出有缺陷的PCB,根据处理的数字图像源的大小从0.856秒到2.68秒不等。尽管能够在每一块被测电路板上发现缺陷,但在蚀刻电路板上使用图像减法进行PCB检查的准确性并不令人满意,如果有许多电路板有铜痕迹或电路缺陷,这将是至关重要的。然而,从测试结果可以得出结论,图像的分辨率直接影响精度,图像大小越大,检测精度也越高。

测试结果表明,该系统有待改进,以提高缺陷检测的准确性。以下是一些可以改进系统和克服限制的建议:

1、改进斑点检测和形态学算法,进一步提高系统精度。

2、对图像应用Hough变换过程和图像分割,以提高精度,减少参考图像和检查图像大小和对齐方式相同的必要性。

3、实现图像分割方法,以便系统能够处理分辨率比系统硬件规格更高的图像。

4、研究另一种提高系统性能的方法

基于OPENCV和图像减法的PCB缺陷检测相关推荐

  1. 论文研究 | 基于机器视觉的 PCB 缺陷检测算法研究现状及展望

    前面分享了机器视觉在汽车行业与交通行业的应用,其实机器视觉在工业上的应用是最广泛也是最具挑战性的,其中PCB板缺陷检测一直是机器视觉待攻克的难题.印刷电路板(PCB)是电子零件的基板,需求量极大,承载 ...

  2. 基于yolov5的PCB缺陷检测

    1.简述 基于图像识别技术实现自动印刷电路板(PCB)缺陷检测,具有高效.准确.可靠.自动化程度高和可扩展性强等优点,大大提高了检测效率,节省了人力成本.传统的检测方法通常需要大量的人力和时间,并且容 ...

  3. 基于OpenCV平滑图像

    基于OpenCV平滑图像也就是图像模糊,本博文介绍使用OpenCV的不同函数通过线性滤波进行图像平滑. cv::blur cv::GaussianBlur (高斯模糊) cv::medianBlur ...

  4. 数字识别java开源_Java基于opencv实现图像数字识别(三)—灰度化和二值化

    Java基于opencv实现图像数字识别(三)-灰度化和二值化 一.灰度化 灰度化:在RGB模型中,如果R=G=B时,则彩色表示灰度颜色,其中R=G=B的值叫灰度值:因此,灰度图像每个像素点只需一个字 ...

  5. Java基于opencv实现图像数字识别(一),java开发面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

  6. 4.3【图像镜像】-------------基于Opencv实现-----图像的镜像变换

     [1]理论知识:         镜像变换又分为水平镜像和垂直镜像,水平镜像即将图像左半部分和右半部分以图像竖直中轴线为中心轴进行兑换,而竖直镜像则是将图像上半部分和下半部分以图像水平中轴线为中 ...

  7. 基于OpenCV实现------图像的转置

    [1]理论基础 图像转置是将图像的x坐标和y坐标互换,图像的大小会随之改变----------即高度和宽度将互换. [2]图像转置的变换公式 因为转置矩阵的逆矩阵仍然是其本身,故转置变换的逆变换具有相 ...

  8. 基于OpenCV实现图像平移

    [1]理论知识 图像平移就是将图像中所有的点按照指定的平移量水平或者垂直移动 [2]完整代码 /*--------------------------------------------------- ...

  9. 基于OpenCV实现图像线性变化

    基础知识: 线性灰度变换函数f(x)是一个一维线性函数 y=f(x)=ax+b 式中:a为线性函数的斜率,b为线性函数在y轴的截距,x表示输入图像的灰度值,y表示输出图像的灰度值. (1) 当a> ...

最新文章

  1. linux fio释放内存,linux使用FIO测试磁盘的iops
  2. 华为诺亚加法网络再升级:精度提升,可以逼近任意函数
  3. 【转】你所不知道的HTML head/ 头标签
  4. 批处理显示语句学习(echo、 @ 、 pause)
  5. java.util.concurrent.Exchanger应用范例与原理浅析--转载
  6. 从操作系统的PV操作理解JAVA的synchronized同步方法,同步代码块实现,及比较
  7. python异常处理的作用_python之路——异常处理
  8. android应用窗口模式,[技巧]如何启用Android N开发者预览版中的“自由窗口”模式...
  9. lisp xy轴不等比缩放_解决高缩放等级下的抖动问题
  10. Java多线程学习四十三:
  11. python类的成员没有访问控制限制_Python 访问限制 private public的详细介绍
  12. linux make项目管理器,Linux中makefile项目管理
  13. Vant - 高效的 Vue 组件库,再造一个有赞移动商城也不在话下
  14. OpenCV Sobel和Scharr (索贝尔和夏尔滤波器检测边缘)
  15. linux怎么添加windows引导文件,Linux与Windows 10用grub引导教程
  16. 基于几何学习图像的三维重建发展_基于深度学习的三维重建——MVSNet系列论文解读...
  17. ESP8266闪存文件系统基本操作-删除文件
  18. BIDI单纤双向光模块
  19. Java8 LocalDateTime 获取当前日周月年的起止时间
  20. Using System.Messaging引用报错解决办法

热门文章

  1. 图像预处理之数据增广
  2. 傅里叶变换对称性质MATLAB,利用共轭对称和反对称性质做离散傅里叶变换求相关性问题...
  3. 【Matlab】简易动画,与任意曲线相切的圆的运动轨迹
  4. 自学web前端的小笔记(入门JS基础部分)
  5. 移动安全框架:MDM 移动设备管理
  6. css动画(图片触碰变大)
  7. Matlab学习第二部分:矩阵
  8. MP4中同时有逐行、隔行编码视频内容
  9. 预约活动(秒杀)项目中如何高效的保证下单交易成功?保证redis,mysql的最终一致性?
  10. 写给未来的你——余光中