PCB产品AOI检测,需要将模版与实际图像对齐,因此需要定位功能。定位功能就需要选取定位核,定位核的提取方法分为手动和自动。基于人眼视觉特征对区域敏感度判断的手动提取法存在很大的局限性,且当需要较多定位核时建模复杂,因此目前广泛应用的是自动提取法。
PCB由于高精度成像和高标准检测需求,决定了一个料号可能需要几百甚至上千个定位核,所以需要实现自动选取定位核的功能;检测时料号是未知的,且切换比较频繁,所以无法离线选取定位核,因此算法要求满足实时性。
自动定位核选取模块主要功能如下:
1)支持多个相互独立的全功能型定位核选取
图1 全功能型定位核演示
2)支持组合定位核的选取
图2 组合型定位核演示
3)支持单向(任意方向)定位核的选取
图 3 单向定位核演示
4)增加局部唯一性验证,支持两种不同的定位模式,NCC和Shape
根据常见的定位算法的原理可知,选取定位核应选择:
1)梯度信息丰富的地方,并且该梯度信息在水平和垂直方向都有分量;
2)在一定范围内满足唯一性。
图 4 彩色图及对应的梯度图
PCB产品的模板图像一般由Gerber或ODB++文件解码生成,因此自动选定位核的输入图像一般为二值图,图案由直线和弧形组成,其所对应梯度信息如下图所示:
图5 PCB二值图及对应的梯度图
可见,适合选取定位核的位置如下图所示:
图6 可选为定位核的位置
在定位核的选取过程中,遵循的原则如下:
图像降采样,即采样点数减少。对于一幅N*M的图像来说,如果降采样系数为k,则即是在原图中每行每列每隔k个点取一个点组成一幅图像。
采取降采样的目的是为了降低处理时间。
XLD代表亚像素精度的边缘轮廓和多边形,并不是沿着像素与像素交界的地方,而是经过插值之后的位置。
实现流程:
亚像素轮廓XLD
多边形轮廓XLD
离散点即拐点图示
Orthogonality = abs(Angle-ORTHANGLE)/ ORTHANGLE。其中:ORTHANGLE = PI/2;
实现流程:
若没有找到符合条件的全功能型定位核,或找到的数目不够,则选取满足条件的组合型定位核。
实现流程:
1 定位核组中至少有一个全功能型定位核;
2 若均是单向定位核,则根据两者的方向角度差计算正交分值,大于等于设定的正交值。
单向定位核判断是否满足组合条件的流程如下:
Step1:单向定位核按照水平、垂直、任意方向的类别依次排序,类别相同则按照归一化后的角度从小到大排序;
Step2:去除相邻角度相同的定位核(仅保留一个),得到不同方向的定位核组;
Step3:遍历定位核组,两两计算对应的夹角,筛选出满足正交分值的定位核组对(两个);
Step4:按照每组对的正交分值进行排序;
Step5:遍历所有的组对,每组找到对应的所有的单向定位核,依次计算定位核的距离是否满足最小值,若满足直接返回,否则找到为止。
实现流程:
单向定位核按照水平、垂直、任意方向的类别依次排序,返回第一个。
可将模块封装成独立的dll,接口函数如下:
类型 | 函数名 | 功能说明 |
参数设置 | SetSampleStep | 设置抽样步长 |
SetOffset | 设置搜索范围 | |
SetLocationRotate | 设置旋转相关参数(验证定位核局部唯一性) | |
SetKernelNum | 设置找到定位核的最大数目 | |
SetLocationSize | 设置定位核的尺寸 | |
SetMinScore | 设置找到定位核的最小分数 |
运行 | Execute | 执行定位核的搜索 |
结果 | GetMainKer | 获得找到的定位核相关信息 |
参数界面如下所示:
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删