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 正方向,并在全文和程序中保持一致,否则会出现“越补越偏”的现象。

视觉对位算法链:从图像到机械补偿 相机图像 500万像素 灰度图 ① 模板匹配 NCC 相似度 金字塔粗→精 输出:粗定位 (u,v) ② 边缘定位 卡尺采样灰度剖面 导数极值 + 抛物线拟合 输出:亚像素轮廓点 ③ Blob 分析 阈值分割 + 连通域 面积/质心/圆度 输出:质心 (xc,yc) ④ 几何拟合:最小二乘直线 / 圆 → 交点或圆心 单轴重复精度:±0.5 px → ±0.05~0.1 px ⑤ 标定矩阵 H 九点标定 像素当量 mm/pixel ⑥ 偏差补偿 ΔX=Δu·mm/px 下发伺服轴 常见误差源 极性选反 / 阈值过低 方向不一致 / 标定偏差

五、参数配置与结果判读示例

下面给出一组用于教学演示的合理示例参数(非实测值),对象为 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 是否覆盖偏移范围;若边缘点拟合残差大,检查卡尺极性、卡尺是否跨到无关边缘、以及工件表面是否有反光或油污。把这些环节的输入输出关系理清,视觉对位才能从“能跑”走向“稳定可复现”。