4. 视觉对位核心算法原理
视觉对位系统的精度上限,往往不由相机分辨率单独决定,而由“算法链”决定:先在图像中找到目标的大致位置,再把位置细化到亚像素级,最后把像素坐标换算成机械坐标并驱动平台补偿。台达的机器视觉与运动控制平台(如 DMV 视觉系统配合 AS 系列伺服、AX 系列运动控制器)通常把这条链拆成模板匹配、边缘定位、Blob 分析、亚像素细化四个环节。理解每个环节的输入、输出与误差来源,才能在实际调机时知道该改哪个参数。
一、模板匹配:解决“目标在哪里”
模板匹配的本质是在搜索图像中滑动一个预先截取的模板,计算每个位置的相似度,取相似度最高的位置作为目标位置。台达 DMV 常用的相似度度量是归一化互相关(NCC),它对整体亮度变化不敏感,适合光照有波动的产线。设模板为 T(x,y),搜索图为 I(x,y),在位置 (u,v) 处的 NCC 值为:
NCC(u,v) = Σ[T(x,y)-T̄]·[I(x+u,y+v)-Ī] /
sqrt( Σ[T(x,y)-T̄]² · Σ[I(x+u,y+v)-Ī]² )
NCC 值域为 [-1,1],越接近 1 表示越相似。实际配置时,匹配分数阈值一般设 0.7~0.85;阈值过低会误匹配,过高则在来料轻微变化时直接判 NG。搜索范围(ROI)要覆盖工件可能出现的最大偏移量,但不宜过大,否则匹配耗时线性增长。台达平台中通常先做金字塔降采样粗匹配,再在原图精匹配,这样在 500 万像素图像上也能把单次匹配控制在几十毫秒量级。
模板匹配的固有局限是旋转与缩放敏感。若工件存在 ±3° 以上旋转,应启用旋转搜索或改用形状匹配;若存在明显缩放,需要多尺度模板。模板本身要选特征丰富、对比度高的区域,避免选到大片均匀背景,否则相关峰平坦,定位重复性差。
二、边缘定位:把“位置”细化到轮廓
模板匹配给出的是目标大致位置,精度通常在 1~2 像素。要进一步提高,需要在目标轮廓上做边缘定位。常用方法是沿一条垂直于边缘的卡尺(Caliper)方向采样灰度剖面,再求一阶导数极值或二阶导数过零点。以一维灰度剖面 g(i) 为例,边缘位置对应 |g(i+1)-g(i)| 最大处;对导数曲线做抛物线拟合,即可得到亚像素边缘位置:
设导数峰值在 i0,取 i0-1、i0、i0+1 三点值 d1、d2、d3
偏移量 δ = 0.5·(d1-d3)/(d1-2d2+d3)
亚像素边缘位置 = i0 + δ
台达视觉工具中,卡尺的“边缘极性”必须与工件实际明暗关系一致:从暗到亮选上升沿,从亮到暗选下降沿。若极性选反,算法会锁定到错误边缘,表现为定位结果整体偏移一个特征宽度。卡尺数量与分布也影响结果:对圆形工件,通常沿圆周均匀布置 8~16 条卡尺,再对边缘点做圆拟合,可同时得到圆心和半径;对矩形工件,则在四条边上各布置若干卡尺,分别拟合直线后求交点。
三、Blob 分析:处理“没有固定模板”的目标
当目标形状不固定、或需要统计多个目标时,模板匹配不再适用,应改用 Blob 分析。Blob 分析先对图像做阈值分割,把前景像素连通成区域,再计算每个区域的面积、质心、外接矩形、圆度等特征。台达平台中常用 Otsu 自动阈值或固定阈值加形态学开闭运算,去除噪点和毛刺。
Blob 的关键参数是面积上下限和连通性。面积下限用于滤除噪点,上限用于排除大面积背景;连通性一般选 8 邻域,避免细长目标被断开。质心坐标 (xc, yc) 由区域内所有像素坐标平均得到,是后续对位计算最常用的输出。若目标有孔洞,可启用“填充孔洞”选项,否则质心会被孔洞拉偏。
四、亚像素精度提升与台达平台实现
亚像素方法的核心思想是:像素只是采样点,真实边缘落在两个像素之间。除上述抛物线拟合外,常用的还有高斯拟合、矩方法、以及基于 Zernike 矩的亚像素边缘检测。工程上最稳妥的组合是:模板匹配给出粗定位 → 卡尺边缘定位给出亚像素轮廓点 → 最小二乘拟合直线/圆 → 求交点或圆心作为最终特征点。这样单轴重复定位精度通常可从 ±0.5 像素提升到 ±0.05~0.1 像素。
在台达平台中,算法结果最终要转成机械坐标。标定环节用九点标定或棋盘格标定得到像素当量(mm/pixel)和旋转矩阵。设像素坐标为 (u,v),标定矩阵为 H,则机械坐标 (X,Y) 由齐次变换得到。对位补偿时,先计算当前特征点与基准特征点的偏差 (Δu,Δv),再乘以像素当量得到 (ΔX,ΔY),最后把补偿量下发给伺服轴。注意:相机安装方向与机械坐标方向可能不一致,标定时必须明确 X/Y 正方向,并在全文和程序中保持一致,否则会出现“越补越偏”的现象。
五、参数配置与结果判读示例
下面给出一组用于教学演示的合理示例参数(非实测值),对象为 30 mm × 20 mm 的金属工件,相机视野约 40 mm × 30 mm,500 万像素,像素当量约 0.008 mm/pixel。
| 环节 | 关键参数 | 示例取值 | 判读依据 |
|---|---|---|---|
| 模板匹配 | NCC 阈值 / 搜索角 | 0.80 / ±5° | 分数低于 0.80 判 NG,检查来料或光照 |
| 边缘定位 | 卡尺数量 / 极性 | 12 条 / 上升沿 | 边缘点拟合残差 < 0.3 px 视为稳定 |
| Blob 分析 | 面积范围 / 连通性 | 200~5000 px² / 8 邻域 | 质心跳动 < 0.1 px 视为稳定 |
| 亚像素 | 拟合方式 | 抛物线 + 最小二乘 | 重复定位标准差 < 0.1 px |
| 标定 | 像素当量 | 0.008 mm/pixel | 九点残差 < 0.02 mm |
调机时建议按“先粗后细”的顺序排查:若匹配分数正常但最终对位偏差大,问题多半在标定或方向定义;若匹配分数本身偏低,先检查模板是否选在低对比区域、ROI 是否覆盖偏移范围;若边缘点拟合残差大,检查卡尺极性、卡尺是否跨到无关边缘、以及工件表面是否有反光或油污。把这些环节的输入输出关系理清,视觉对位才能从“能跑”走向“稳定可复现”。