一、形态学缺陷检测简介

1 图像分析及预处理
拍摄图像会产生随机的扰动,图像有一定的噪声,为消除掉图像中的无关信息,对图像进行预处理。

1.1 灰度化
为降低运算量,需要将拍摄的三通道的RGB图像转化为单通道的灰度图像。采用加权平均法的灰度化方法,其中心理学灰度公式根据人眼对RGB三色的敏感程度选择不同的权重:

式(1)中,R、G、B分别为RGB三通道灰度值,灰度化结果如图1 (a)所示。

1.2 平滑处理
为了尽可能避免将背景当作缺陷,需要对图像进行平滑处理,这样虽然会使缺陷的边界模糊,但是有利于减少背景的干扰。注意所采用的去噪处理为均值滤波,均值滤波公式为:

式(2)中,m、n分别为所选择的滤波核的长和宽,Sxy是以(x,y)为中心的滤波核对应像素的位置集合,平滑处理结果如图1 (b)所示。均值滤波的缺点是会使一些细节如边缘等信息丢失,因此在找到种子点后,对没有经过平滑处理的图像进行区域生长,找到缺陷边界。

2 算法原理
2.1 阈值分割

阈值分割是图像分割中最简单、基础的方法,性能比较稳定,计算量较小,运算速度快;它主要有全局阈值分割、局部阈值分割、自适应阈值分割等方法。阈值算法基于阈值T,将像素灰度值大于阈值T和小于阈值T的部分分别叫做前景和背景。变换函数表达式:

图1 均值滤波处理

式(3)中,T为阈值,g (x,y)为原图像像素点(x,y)的灰度值,f (x,y)为分割后图像像素点(x,y)的灰度值,阈值分割结果如图2所示。

图2 阈值分割结果

2.2 形态学开运算降噪
数学形态学简称形态学,其处理方式为领域运算,即把领域结构元素与图像对应位置像素进行逻辑运算,这种运算的影响因素主要有结构元素大小、形状和逻辑运算的规则。形态学操作主要有膨胀、腐蚀、梯度运算、礼帽运算、黑帽运算、开运算和闭运算等,但其基础为腐蚀和膨胀,利用膨胀和腐蚀就能完成不同形式的运算。

腐蚀运算能消除轮廓边界点,使边界向内缩小,主要用于细化二值图像目标轮廓、去除噪声等。

式(4)中,A为原图像,B为结构元素。首先给结构元素B定义一个原点,当结构元素B的原点移动到图像A的(x,y)上时,如果结构元素B上等于1的像素点对应图像A也等于1,则将图像A的(x,y)的灰度值置为1,否则置为0,腐蚀示意图如图3所示。

图3 腐蚀示意图
膨胀运算则与腐蚀运算相反,使边界向外扩张,主要用于填补图像分割后的空白,使相近的不相连的轮廓相连。其公式为:

式(5)中,A为原图像,B为结构元素。首先给结构元素B定义一个原点,当结构元素B的原点移动到图像A的(x,y)上时,如果结构元素B上等于1的像素点对应图像A中至少有一个等于1,则将图像A的(x,y)的灰度值置为1,否则置为0。

先进行腐蚀操作,然后在腐蚀的基础上进行膨胀操作,主要用于去噪和计数等。其公式为:

式(6)中,A为原图像,B、C为结构元素。开运算效果如图4所示,图5为开运算处理的结果。

图4 开运算效果
2.3 区域生长法
区域生长的思想就是把领域(四领域、八领域等)相同的化为一个区域。首先需要一个种子点作为生长的开始,然后将种子点领域内满足相似准则要求的像素点合并到种子的区域,将这个区域的像素做为种子点,继续进行生长,直到没有符合要求的点,生长结束,所有种子点像素作为生长的区域。分割的好坏由初始种子点和相似准则决定。

图5 形态学开运算结果
2.3.1 种子点选择与检测
经过阈值分割和形态学处理后,将二值图像各轮廓中心作为待定种子点。如果选择的种子点位于缺陷的绝对区域,那么种子点总有一个方向各像素的深度值呈现高-低-高的形态。设计检测模板如图6所示,计算出种子点在0°、45°、90°、135°方向上的深度变化,判断其变化是否呈高低高形态。

图6 检测模板
种子点左右两侧r个像素的灰度平均值分别为:

各方向的灰度变化为:

深度形Si态变化判定:

式(10)中,I (u)为检测模板中第u个像素的灰度值,w=1,2,3,4,分别代表0°,45°,90°,135°方向,mwm为w方向两侧的最小灰度值,T1为形态变化阈值。如果种子点不满足深度形态变化判定,则去除该待定种子点。

2.3.2 生长过程
区域生长的具体流程如下:
(1)将种子点坐标放入种子点集seeds。
(2)顶出种子点集中的一个种子点,对种子点八邻域的像素点进行相似准则判断;满足相似准则条件的点,视为种子点放入种子点集seeds。
(3)将顶出的种子点存入种子集S。
(4)如果种子点集内没有元素,则跳到步骤(4);如果种子点集中还有元素,则跳到步骤(2)。
(5)生成一张和输入图像长宽一致,像素值全为0的图像I。
(6)将图像I中对应种子集S坐标的像素值置为255,得到分割图像I’。
其中生长的相似准则为:

式(11)中,gray (seed)为当轮种子点的灰度值,gray (8_n)为其八邻域各点的像素值,Thresh为设置的阈值。区域生长结果如图7所示。

图7 区域生长结果
3 实验过程
图像分割就是按照预先设定的规则,将图像分割为有意义的前景和背景的过程。区域生长是一个分割效果比较好的算法,但前提是需要找到适合的种子点。单一的分割算法就容易遇到这种不足的情况,结合使用形态学和阈值分割的方法来找到合适的种子点,帮助区域生长算法完成分割任务,达到满足要求的分割效果,分割方法流程如图8所示。

图8 分割流程图
首先对输入的图片进行灰度化处理,变成单通道的灰度图片,然后滤波去除噪声,使图像更平滑,选择合适的阈值进行阈值分割,在利用开运算去除掉分割后较小的前景,以各前景区域的中心点为起始种子点,进行区域生长,得到最终所满足要求的前景。

二、部分源代码

function pcbjiance()
dcpcbrgb=imread('待检测pcb.jpg');%读入待检测pcb图像
figure(1)
imshow(dcpcbrgb);
title('待检测pcb');
t=rgb2gray(dcpcbrgb);%待检测pcb图像灰度化
lvbo=medfilt2(t);%中值滤波
uu=im2bw(lvbo);%二值化
u=bwmorph(uu,'spur',8);%去除物体小的分支
p=bwmorph(u,'fill');%填充孤立黑点
dc=bwmorph(p,'clean');%去除孤立亮点
figure()
imshow(dc);
title('预处理后待检测pcb图像');
goldenpcbrgb=imread('标准pcb图像.jpg');%读入标准pcb图像
biaozhungray=rgb2gray(goldenpcbrgb);%标准pcb图像灰度化
bj=im2bw(biaozhungray);%二值化
figure()
imshow(goldenpcbrgb);
title('标准pcb');
figure()
imshow(bj);
title('标准pcb二值化图像')
dc_rect=[80 370 150 130];%待检测pcb图像中选取参与互相关计算区域的矩阵
bj_rect=[40 320 200 190];% 标准pcb图像中选取参与互相关计算区域的矩阵
bj_sub=imcrop(bj,bj_rect);%剪裁标准pcb图像max_c=0;%初始化互相关最大值for rr=-2:1:2%待检测pcb图像依次旋转的角度(步进值可调)dc_rot=imrotate(dc,rr,'nearest');%待检测pcb图像旋转,使用邻近插值法dc_sub=imcrop(dc_rot,dc_rect);%裁剪带检测pcb图像c=normxcorr2(dc_sub,bj_sub);%计算互相系数
[max_c1,imax1]=max(abs(c(:)));%max_c1为系数最大值,imax1为系数最大值对应的位置下标if(max_c1>max_c)%每一次循环的最大值进行比较max_c=max_c1;%取最大的值angle=rr;%把取得最大值时对应的旋转角度赋给angleend
endend
hpqs
dxqs
aoxian
duan4lu
hpds
dxdy
tuqi
duan3lu
tongban

三、运行结果



四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.

【缺陷检测】基于matlab GUI形态学PCB电路板缺陷检测【含Matlab源码 821期】相关推荐

  1. 【限速标志识别】基于matlab GUI形态学限速标志识别【含Matlab源码 1142期】

    ⛄一.SVM路标检测识别简介 1 路标识别 完整的路标识别系统包括:图像的获取与预处理,图像分割(路标定位),特征提取,模式分类(路标识别)等部分.其中模式分类是系统的关键技术.较常用的模式分类方法是 ...

  2. 【芯片识别】基于matlab GUI形态学PCB板芯片识别【含Matlab源码 1820期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[芯片识别]基于matlab GUI形态学 PCB板芯片识别[含Matlab源码 1820期] 点击上面蓝色字体,直接付费下载,即可. 获 ...

  3. MATLAB实现工业PCB电路板缺陷识别和检测

    PCB(Printed Circuit Board印刷电路板)是电子产品中众多电子元器件的承载体,它为各电子元器件的秩序连接提供了可能,PCB已成为现代电子产品的核心部分.随着现代电子工业迅猛发展,电 ...

  4. 【图像处理】基于matlab GUI多功能图像处理系统【含Matlab源码 1876期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像处理]基于matlab GUI多功能图像处理系统[含Matlab源码 1876期] 点击上面蓝色字体,直接付费下载,即可. 获取代码 ...

  5. 【机械仿真】基于matlab GUI曲柄摇杆机构运动仿真【含Matlab源码 1608期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[机械仿真]基于matlab GUI曲柄摇杆机构运动仿真[含Matlab源码 1608期] 点击上面蓝色字体,直接付费下载,即可. 获取代码 ...

  6. 【光学】基于matlab GUI光栅条纹投影生成【含Matlab源码 2118期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[光学]基于matlab GUI光栅条纹投影生成[含Matlab源码 2118期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...

  7. 【机械仿真】基于matlab GUI直齿圆柱齿轮应力计算【含Matlab源码 2077期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[机械仿真]基于matlab GUI直齿圆柱齿轮应力计算[含Matlab源码 2077期] 点击上面蓝色字体,直接付费下载,即可. 获取代 ...

  8. 【天体学】基于matlab GUI太阳天顶角计算【含Matlab源码 2229期】

    一.⛄获取代码方式 获取代码方式1: 完整代码已上传我的资源:[天体学]基于matlab GUI太阳天顶角计算[含Matlab源码 2229期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...

  9. 【语音去噪】基于matlab GUI IIR滤波器语音去噪【含Matlab源码 1864期】

    一.语音处理简介 语言是人们获得各类有效信息的主要途径, 而语音是语言的表现形式.语音在一定程度上可影响人们的生活, 因此, 语音信号的研究对科学领域和人们日常生活具有一定的研究价值和意义.噪声广泛存 ...

  10. 【身份证识别】基于matlab GUI BP神经网络身份证识别【含Matlab源码 2239期】

    ⛄一.身份证号码识别简介 1 引言 当今是一个信息高度发达的时代,对于每个公民而言身份证那一连串的数字体现了个人信息的唯一性,出于保障公民合法权益和社会治安的考虑,越来越多的行业都开始建立自己的安全保 ...

最新文章

  1. 内核虚拟化技术——LXC初体验
  2. 软件架构自学笔记----分享“去哪儿 Hadoop 集群 Federation 数据拷贝优化”
  3. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Clien
  4. 直接输出代码_php代码:实时输出缩小的图像
  5. 框架的特性_Go 语言 Web 框架 Echo 系列:基础篇—通过一个例子串联各特性
  6. Mac系统下SVN命令
  7. WMI远程访问问题解决方法
  8. 为什么事业单位公务员的公积金比企业里要缴得多?
  9. 6本Android开发必备图书
  10. PIC温控器c语言程序,PIC单片机温感器DS18B20 C语言程序代码
  11. 智慧办公室空间管理系统方案优点
  12. 小米Civi的女性突围战
  13. 最新python与SEO实战课程第2期项目实战(完整)
  14. Python 实现黑白棋
  15. FLASH鼠绘入门教程,主要让大家熟悉一下简单图形的绘制!
  16. 下载和使用TPXO9_atlas
  17. oracle erp 地产公司,Oracle ERP房地产行业解决方案概述
  18. 碳中和专题:碳足迹核算、碳中和顶刊论文、碳排放交易2022
  19. 华为的鸿蒙系统是海思_华为继续亮剑,100倍变焦+海思麒麟1020+鸿蒙系统,这才是华为...
  20. IntelliJ IDEA的安装、配置与使用

热门文章

  1. [.NET开发] NPOI导出
  2. 聚类分析一:K-MEANS算法
  3. Entity Framework 5.0
  4. 2021-07-13 CNN池化理解学习
  5. 20190801每日一句
  6. python 字符串以及通过dos命令运行py脚本
  7. 281210每日一句
  8. Atitit 文档资料整理的规范流程与问题解决目录1. 减肥 11.1. 剥离非原创类文件 11.2. 去重 11.3. 转换格式 21.4. Topic主题剥离 22. 脱敏 2
  9. Atitit 项目质量管理 目录 1. 标准化 规范化 1 1.1. 而项目管理中的39个标准过程(PMI)或42个要素(ICB)全部是一次性过程或要素, 1 1.2. 休哈特(shewhart 统
  10. 程序实现对数据排序并按出现次数进行排序 目录 1. 题目程序实现对数据排序并按出现次数进行排序 1 2. 思路 2 3. 效果 2 4. 代码 /00listPrj/src/Sort.java 2