11

缺陷检测 | PCB AOI质量检测之自动定位核选取算法

 3 years ago
source link: https://mp.weixin.qq.com/s/_aYyN6X6_acFM0fDZyGCWg
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

缺陷检测 | PCB AOI质量检测之自动定位核选取算法

Original 白杨杨 3D视觉工坊 7/9
收录于话题
#缺陷检测

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

Image

PCB产品AOI检测,需要将模版与实际图像对齐,因此需要定位功能。定位功能就需要选取定位核,定位核的提取方法分为手动和自动。基于人眼视觉特征对区域敏感度判断的手动提取法存在很大的局限性,且当需要较多定位核时建模复杂,因此目前广泛应用的是自动提取法。PCB由于高精度成像和高标准检测需求,决定了一个料号可能需要几百甚至上千个定位核,所以需要实现自动选取定位核的功能;检测时料号是未知的,且切换比较频繁,所以无法离线选取定位核,因此算法要求满足实时性。

1 功能说明

自动定位核选取模块主要功能如下:1)支持多个相互独立的全功能型定位核选取
Image
图1 全功能型定位核演示2)支持组合定位核的选取
640?wx_fmt=png
图2 组合型定位核演示3)支持单向(任意方向)定位核的选取
640?wx_fmt=png
图 3 单向定位核演示4)增加局部唯一性验证,支持两种不同的定位模式,NCC和Shape

2 算法设计

根据常见的定位算法的原理可知,选取定位核应选择:1)梯度信息丰富的地方,并且该梯度信息在水平和垂直方向都有分量;2)在一定范围内满足唯一性。640?wx_fmt=png 640?wx_fmt=png图 4 彩色图及对应的梯度图PCB产品的模板图像一般由Gerber或ODB++文件解码生成,因此自动选定位核的输入图像一般为二值图,图案由直线和弧形组成,其所对应梯度信息如下图所示:     
640?wx_fmt=png
       
640?wx_fmt=png
图5 PCB二值图及对应的梯度图可见,适合选取定位核的位置如下图所示:640?wx_fmt=png图6 可选为定位核的位置

2.1设计概要

在定位核的选取过程中,遵循的原则如下:
  • 优先选择满足条件的全功能型定位核;
  • 若无全功能型定位核,则筛选出满足条件的组合定位核;
  • 若无组合定位核,则筛选出单向定位核。

2.2 算法流程                                   

640?wx_fmt=png

2.2.1 图像降采样

图像降采样,即采样点数减少。对于一幅N*M的图像来说,如果降采样系数为k,则即是在原图中每行每列每隔k个点取一个点组成一幅图像。采取降采样的目的是为了降低处理时间。

2.2.2 提取亚像素轮廓XLD

640?wx_fmt=png降采样后的图像 640?wx_fmt=png亚像素轮廓图XLD代表亚像素精度的边缘轮廓和多边形,并不是沿着像素与像素交界的地方,而是经过插值之后的位置。

2.2.3 获得备选定位核

640?wx_fmt=png全功能型定位核 640?wx_fmt=png单方向定位核 实现流程:
  • 将亚像素轮廓XLD转为多边形轮廓XLD(Ramer算法);
640?wx_fmt=png 亚像素轮廓XLD 640?wx_fmt=png多边形轮廓XLD
  • 遍历多边形轮廓XLD,依次获取多边形轮廓对应的N个离散点、N-1个角度,并计算当前离散点即拐点对应的夹角Angle。这些离散点就是各个疑似定位核的中心点;
640?wx_fmt=png
离散点即拐点图示
  • 通过拐点夹角Angle计算各自的正交值Orthogonality,超过设定的分值加入待选的全功能型定位核中,否则加入到单向定位核中,其中:
Orthogonality = abs(Angle-ORTHANGLE)/ ORTHANGLE。其中:ORTHANGLE = PI/2;

2.2.4 全功能型定位核选取

实现流程:
  • 按照正交分值从大到小排序;
  • 依次验证唯一性(在一定范围内进行模板匹配,判断找到的数目是否为1),找到要求的数目即返回;

2.2.5 组合型定位核选取

若没有找到符合条件的全功能型定位核,或找到的数目不够,则选取满足条件的组合型定位核。实现流程:
  • 对剩余的定位核进行排序(全功能型定位核按照正交值从大到小排序,单向定位核按照水平、垂直、任意方向的类别依次排序);
  • 找到所有符合组合型定位核条件的定位核组(两个),满足以下条件之一即可:
1 定位核组中至少有一个全功能型定位核;2 若均是单向定位核,则根据两者的方向角度差计算正交分值,大于等于设定的正交值。
  • 依次验证唯一性(在一定范围内进行模板匹配,判断找到的数目是否为1),找到要求的数目即返回;
单向定位核判断是否满足组合条件的流程如下:Step1:单向定位核按照水平、垂直、任意方向的类别依次排序,类别相同则按照归一化后的角度从小到大排序;Step2:去除相邻角度相同的定位核(仅保留一个),得到不同方向的定位核组;Step3:遍历定位核组,两两计算对应的夹角,筛选出满足正交分值的定位核组对(两个);Step4:按照每组对的正交分值进行排序;Step5:遍历所有的组对,每组找到对应的所有的单向定位核,依次计算定位核的距离是否满足最小值,若满足直接返回,否则找到为止。

2.2.6 单向定位核选取

实现流程:单向定位核按照水平、垂直、任意方向的类别依次排序,返回第一个。

3 模块输出

可将模块封装成独立的dll,接口函数如下:类型函数名功能说明参数设置SetSampleStep设置抽样步长SetOffset设置搜索范围SetLocationRotate设置旋转相关参数(验证定位核局部唯一性)SetKernelNum设置找到定位核的最大数目SetLocationSize设置定位核的尺寸SetMinScore设置找到定位核的最小分数运行Execute执行定位核的搜索结果GetMainKer获得找到的定位核相关信息
参数界面如下所示:
640?wx_fmt=png
本文仅做学术分享,如有侵权,请联系删文。推荐阅读:

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

640?wx_fmt=jpeg▲长按加微信群或投稿

640?wx_fmt=jpeg

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近1000+星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款640?wx_fmt=jpeg 圈里有高质量教程资料、可答疑解惑、助你高效解决问题


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK