以手机接口电路板组件产线检测系统为例,详解精密尺寸测量型机器视觉的工程要点:远心镜头与三光源照明配置、边缘检测与1/4像素亚像素细分、基准定位与标准量块标定、物距差与景深两类误差的修正方法,附技术指标表、误差源对比表与亚像素插值C代码
用机器视觉做尺寸测量,精度上限不取决于相机像素数,而取决于三件事:照明能不能把被测特征从复杂背景中凸显出来、边缘检测能不能稳定细分到亚像素、标定与误差修正能不能吃掉系统性偏差。暨南大学王思华、吕军开发的手机接口电路板组件检测系统给出了一个完整的工程样本:仅用753×582分辨率的黑白摄像机,就在28×10mm的接口组件上实现了5µm测量分辨率、25µm以内误差,一个周期自动连续检测60个组件共24项参数,替代多台价格不菲的测量投影仪。这套系统已应用于某世界著名品牌手机接口部件的生产线。本文基于该案例整理,聚焦机器视觉精密测量这条细分路线的落地细节。
先看情境:手机设计越来越精巧,接口电路板组件生产对装配精度的标准不断提高。被检组件尺寸仅约28×10mm,以30个(10行×3列)为一组组装在一块PCB上,检测后再分割。人工方式需要多台测量投影仪,检测速度无法满足较大规模生产的要求。
检测任务本身相当复杂:测量3个连接器特定位置的几何尺寸共24个参数——连接器与PCB底板的相对位置、连接器之间的间距、连接器内部零件的尺寸与间距,并判断触点簧片是否被碰歪。系统采用XY电控平移台分视野逐一拍摄,单次检测面积12×10mm,每个接口组件分左右两次拍摄,拍摄时平移台暂停以保证图像清晰。整套系统的量化指标如下:
| 指标项 | 数值 | 工程含义 |
|---|---|---|
| 检测范围 | 200×200mm | 平移台行程,覆盖整块载具PCB |
| 单次检测面积 | 12×10mm | 单视野只覆盖组件的一部分,需分视野拼接 |
| 系统测量分辨率 | 5µm | 约1/3像素级细分能力,由亚像素算法保证 |
| 系统测量误差 | 小于25µm | 经与高精度测量投影仪统计对比修正后达到 |
| 单幅图像处理时间 | 200ms | 在平移台走位过程中并行完成,不占节拍 |
| 单块PCB检测时间 | 1分钟 | 含30个组件、两次拍摄、走位与暂停 |
| 平移台重复定位精度 | 3µm | 机械精度须优于测量分辨率 |
| 摄像机分辨率 | 753×582(黑白) | JVC TK-S350,配合PCI-1409采集卡 |
注意一个反直觉的事实:12mm视场配753像素,单像素物理尺寸约16µm,而系统分辨率做到5µm——测量精度约为像素尺寸的1/3,靠的不是堆像素,而是下面这些方法。
镜头选55mm焦距的远心镜头(telecentric lens),这种镜头的畸变特别小——对尺寸测量而言,几何畸变直接进入系统误差,远心设计是前提而非加分项。
真正的难点在照明。接口组件结构复杂,要让检测特征从复杂背景中凸显出来,案例中经过反复试验(包括自制LED光源),最终在三个不同位置分别设置光源:
| 光源 | 位置与形式 | 作用机理 | 服务对象 |
|---|---|---|---|
| 正面光源 | PCB上方环形光管 | 为检测位置提供适度正面照明 | 连接器轮廓与一般尺寸测量 |
| 背面光源 | PCB下方透射,加乳白色散射塑料薄板匀光 | 透射PCB,加强PCB与连接器之间的对比度 | 连接器与底板相对位置测量 |
| 侧面光源 | 与水平面成30°夹角垂直照射金属触点簧片 | 利用金属反光特性,使簧片与周围背景形成明显反差 | 触点簧片位置与是否碰歪的判断 |
除布光角度外,光源稳定性同样关键:系统采用光强相当稳定的高频荧光灯(避免工频闪烁进入逐行扫描的图像),并加设遮蔽罩减少环境光变化的影响。对尺寸测量型视觉系统来说,光照波动1%就足以让边缘位置漂移,这条经验值得写进任何视觉检测项目的检查清单。
系统的检测方法核心是用边缘检测的方法测出检测点的坐标值,再对相关坐标值做简单运算得到测量结果,关键在于能否准确找到检测点。算法建立在 IMAQ Vision 的 Edge Tool 与 Edge Caliper 两个函数基础上二次开发,利用其亚像素精度功能把检测分辨率提高到四分之一个像素。
工程上真正决定成败的是参数配置:每一个检测位置都需要合理设置定位与测量检测线位置、检测线的起停位置和走向、边缘检测的对比度阈值和滤波器宽度、单边缘检测的处理模式与双边缘检测的极性。同一批组件有个体差异,不同批次还可能有材质差异,任何一项参数设置不当都可能造成较大测量误差。案例中为此编制了4个自行设计的检测子程序,按检测位置的特点分别调用;材质变化较大时,用户可通过主界面修改检测线参数适配。
基准定位是另一个容易被忽视的环节。一个检测周期实际要进行120次检测,每次检测后PCB都得移位——为避免平移台多次移位的位置累积误差影响测量,每次测量先用定位检测线测出该组件PCB两条相互垂直的板边坐标,以此作为本次检测的参考坐标系,再按各检测位置的相对坐标设置检测线。相当于每拍一张图都用工件自身重建一次坐标系,机械误差被隔离在测量链路之外。测出一组检测点坐标后,还用数字滤波方法剔除异常测量值,抑制毛刺数据。
图像处理以像素为单位计量,必须换算成毫米。标定方法朴素而可靠:在安装接口组件PCB的夹具上安置一个10mm长的精密标准量块,用户按下"标定"按钮后,平移台把量块移到摄像机正下方,系统采集量块图像并用边缘检测测出其像素长度,算出1像素对应多少毫米,此后所有测量按此比例换算。
标定解决的是比例问题,剩下的是系统性误差。案例明确识别出两类主导误差源,并给出了修正路径:
| 误差源 | 成因 | 量级与影响 | 修正方法 |
|---|---|---|---|
| 物距不同 | 检测对象是三维立体结构,检测点有高有低;计算两个检测点间距时物距不相等会引起测量误差 | 本项目检测点最大物距差达5.7mm,足以造成较大误差 | 应用软件中专门设计消除该误差的子程序 |
| 景深不足 | 镜头焦距较长,景深不足以令所有检测位置都清晰成像 | 不清晰检测点的测量准确性受影响 | 统调阶段与高精度测量投影仪统计对比,计算每个测量数据的误差修正值,多次对比修正后精度完全达到生产要求,同时减小其他线性误差 |
这套"用更高精度仪器做离线对比、把偏差做成修正表"的思路,成本远低于把光学系统做到极致,是产线检测系统的常用务实选择。
亚像素细分的基本思路:沿检测线取灰度剖面,差分求梯度,梯度极值处即边缘;再以极值点及其两侧点做抛物线插值,把边缘位置细分到像素内部。以下是可直接移植到MCU或上位机的精简实现:
/* 亚像素边缘定位与标定换算(C语言,可移植) */
/* 输入:检测线灰度剖面 prof[n];输出:边缘的毫米坐标 */
double subpixel_edge(const short *prof, int n, double mm_per_px)
{
int i, i_max = 1;
double g_max = 0.0, g[64];
double y0, y1, y2, delta, edge_px;
/* 1) 相邻像素差分求梯度幅值 */
for (i = 1; i < n; i++) {
g[i] = prof[i] - prof[i - 1];
if (g[i] < 0) g[i] = -g[i];
if (g[i] > g_max) { g_max = g[i]; i_max = i; }
}
if (i_max <= 0 || i_max >= n - 1) return -1.0; /* 边缘越界 */
/* 2) 梯度极值三点抛物线插值,偏移量 -0.5 ~ +0.5 像素 */
y0 = g[i_max - 1]; y1 = g[i_max]; y2 = g[i_max + 1];
delta = 0.5 * (y0 - y2) / (y0 - 2.0 * y1 + y2);
edge_px = (double)i_max + delta;
/* 3) 像素坐标按标定比例换算为毫米 */
return edge_px * mm_per_px;
}
int main(void)
{
/* 标定:10mm 精密量块在本系统中测得 628 像素 */
double mm_per_px = 10.0 / 628.0; /* = 15.9um/px */
/* 12mm 视场 / 753 像素 ≈ 15.9um/px,与标定互验 */
double check = 12.0 / 753.0;
short prof[64] = { /* 检测线灰度剖面(采集后填充) */ 0 };
double edge_mm = subpixel_edge(prof, 64, mm_per_px);
/* 亚像素 1/4 细分后的测量分辨率 */
printf("标定比例 : %.2f um/px(互验 %.2f um/px)\n",
mm_per_px * 1000.0, check * 1000.0);
printf("边缘位置 : %.4f mm\n", edge_mm);
printf("亚像素分辨率 : %.2f um(1/4 像素)\n",
mm_per_px * 1000.0 / 4.0);
return 0;
}
/* 像素尺寸15.9um,1/4像素细分后约4um,
* 与系统标称5um测量分辨率处于同一量级 */
实际产品开发中,还需在插值前对剖面做滑动平均或中值滤波(对应 IMAQ 的滤波器宽度参数),抑制单像素噪声;双边缘检测模式配合极性设置,则可直接量取线宽与间距,对应案例中簧片间距、连接器间距这类成对参数。
这套系统的节拍设计值得细看:单幅图像处理200ms看似不快,但检测时间实际上大部分消耗在平移台的走位与拍摄暂停上,图像处理在平移台走位过程中并行完成——流水线重叠是产线视觉系统提升节拍的第一手段。检测结果以直观的LED矩阵显示,合格品与不合格品一目了然;测量数据累积统计并生成记录文件,为后续SPC过程控制提供数据源。
对嵌入式与工业控制团队,这个案例有三点可迁移的启示:其一,测量精度优先靠光学与算法而非像素堆料,753×582的分辨率做到5µm分辨率,说明预算应优先投给远心镜头、稳定光源与标定工装;其二,参考坐标系用工件自身特征(两条垂直板边)重建,可把机械累积误差隔离在测量链路外,这个思路同样适用于RTU数据采集系统中传感器漂移的自校准;其三,误差修正表(与更高精度仪器统计对比)是低成本逼近极限精度的杠杆,值得在每个检测项目验收阶段固化成流程。
机器视觉尺寸测量的精度来自系统工程:远心镜头保几何、三光源把特征从背景中剥离、1/4像素亚像素细分把16µm的像素做进5µm的分辨率、标准量块标定锁定比例、物距与景深误差用修正表吃掉。手机接口电路板检测系统以753×582的"低配"硬件达到25µm误差并稳定运行于国际品牌产线,证明测量型视觉的竞争力不在硬件堆料而在方法链;同样的照明-检测-标定-修正四步法,可直接迁移到接插件、精密结构件与PCB装配质量检测。
本文基于《手机接口电路板组件计算机视觉检测系统的开发》(暨南大学王思华、吕军,NI机器视觉解决方案应用案例)等资料整理优化。
沧州艾诺威电子 — 国家高新技术企业,20+项国家专利
嵌入式系统开发 · 物联网方案 · AI智能硬件 · 一站式交付
电话:13930711029 | 邮箱:tech@czinv.com | 24小时内响应