2. VisionPro工具链与高速检测匹配

在高速视觉检测中,节拍往往不是被相机帧率卡住,而是被工具链的“无效计算”拖慢。VisionPro 的工具链本质上是一条按顺序执行的算子流水线:图像从采集进入,经过定位、测量、判断,最终输出结果。每个工具都会消耗时间,而工具之间的依赖关系又决定了哪些计算可以并行、哪些必须串行。理解工具分类与执行顺序,是控制单帧耗时的第一步。

一、核心工具分类:按“计算代价”而非按功能记忆

VisionPro 的工具数量很多,但从高速检测角度,可以按计算代价和依赖关系归为四类:

  • 定位类工具:CogFindLine、CogFindCircle、CogPMAlignTool、CogCNLSearchTool。它们负责在图像中找到基准位置和角度,是后续测量的前提。PMAlign 基于模板匹配,搜索范围越大、模板越大,耗时越高;CNLSearch 对对比度变化更鲁棒,但同样受搜索空间影响。
  • 测量类工具:CogCaliperTool、CogDistancePointPoint、CogAngleLineLine、CogBlobTool。卡尺在指定搜索线上找边缘,计算量相对可控;Blob 连通域分析在像素量大、阈值复杂时耗时明显上升。
  • 判断与逻辑类工具:CogToolGroup、CogResultAnalysis、表达式与条件分支。它们本身计算量小,但决定了是否触发后续重计算,是节拍优化的关键杠杆。
  • 预处理与辅助类工具:CogImageConvert、CogIPOneImageTool、滤波、形态学、标定工具。它们不直接输出检测结论,却常被忽略地占用大量时间,尤其是对全分辨率图像做滤波或形态学。

分类的意义在于:定位和测量是“必须算”的,判断是“可以少算”的,预处理是“可以降分辨率或降频”的。高速检测中,优先压缩的是后两类。

二、工具执行顺序:依赖决定串行,独立才能并行

VisionPro 工具链默认按添加顺序执行,但真正决定节拍的是数据依赖。一个典型的高速检测链是:

采集图像 → 图像预处理 → PMAlign 定位 → 建立坐标系
        → Caliper 测量关键尺寸 → Blob 检测缺陷
        → 结果判断 → 输出 OK/NG

其中,PMAlign 的输出(位置、角度)是 Caliper 和 Blob 的输入,因此定位必须在前,测量必须等定位完成。但 Caliper 与 Blob 之间如果没有共享数据,理论上可以并行;VisionPro 中可通过多工具组或脚本并行调度来利用这一点。实际工程里更常见的做法是:把不依赖定位的预处理提前,把依赖定位的测量放在定位之后,把纯判断逻辑放在最后,避免“先算一堆再判断”的浪费。

另一个容易踩坑的顺序问题是坐标系。PMAlign 找到的是图像坐标,Caliper 若直接使用图像坐标,边缘搜索线会随产品偏移而失效。正确顺序是:定位工具输出位姿 → 建立校准坐标系 → 测量工具在该坐标系下工作。顺序错了,不是精度问题,而是直接漏检。

三、工具选择对单帧耗时的影响:用数量级思维做取舍

不同工具的单帧耗时差异可以达到一个数量级以上。以下为教学示例参数(非实测,用于说明量级关系):

工具典型单帧耗时(示例)主要影响因素
CogPMAlignTool3~15 ms模板尺寸、搜索范围、角度范围、接受阈值
CogCNLSearchTool5~20 ms对比度、搜索区域、边缘数量
CogCaliperTool0.2~1 ms搜索线长度、边缘对数量、投影方向
CogBlobTool2~20 ms像素数量、阈值分割复杂度、连通域数量
CogIPOneImageTool(滤波)1~10 ms核大小、图像分辨率

从表中可以看出:一个 PMAlign 可能比十个 Caliper 还慢。因此高速检测的常见策略是:用少量定位工具建立坐标系,用大量轻量 Caliper 完成尺寸测量,把 Blob 限制在 ROI 内而不是全图,预处理尽量在降采样图像上做。若单帧预算为 20 ms,定位占 8 ms、测量占 4 ms、判断占 1 ms,剩余 7 ms 才是安全余量;一旦 Blob 全图运行,很容易直接超预算。

VisionPro 工具链执行顺序与单帧耗时预算(示例) 0 ms 20 ms 预算 采集 1 ms 预处理 降采样/滤波 2 ms PMAlign 定位 建立坐标系 8 ms Caliper 测量 多边缘对 4 ms Blob 缺陷 ROI 内 3 ms 结果判断 OK/NG 1 ms 定位输出位姿 → 测量坐标系依赖 可并行区域 Caliper 与 Blob 无数据依赖 可分组并行调度,压缩节拍 单帧耗时构成(示例) 1 2 8 4 3 1 合计 19 ms,余量 1 ms;若 Blob 改为全图运行,预计增加 8~12 ms,直接超预算。 优化杠杆:① 预处理降采样;② PMAlign 缩小搜索范围与角度;③ Blob 限定 ROI;④ 无依赖工具并行;⑤ 判断前置,避免无效测量。 原则:先定位后测量,先轻后重,先判断后计算。

四、把工具链当成预算表来设计

高速检测的工具链设计,本质上是在 20 ms 或 30 ms 的预算内分配计算资源。建议按以下顺序做取舍:

  1. 先确定必须的定位工具,并把它压缩到最小搜索空间。PMAlign 的搜索范围每缩小一半,耗时通常近似线性下降。
  2. 测量工具优先选 Caliper,而不是用 Blob 或模板匹配去替代尺寸测量。Caliper 在单条搜索线上的耗时通常在亚毫秒级。
  3. Blob 只用于缺陷检测,且必须限定 ROI。全图 Blob 在 500 万像素图像上很容易超过 10 ms。
  4. 预处理尽量在降采样图像上完成,或者只在 ROI 内做滤波和形态学。
  5. 把结果判断提前到测量之后立即执行,NG 件可以提前终止后续工具,避免无效计算。
一个实用的检查方法:在 VisionPro 中启用工具执行时间显示,逐工具记录耗时,找出占比超过 30% 的工具,优先优化它。多数情况下,优化一个 PMAlign 比优化十个 Caliper 更有效。
注意:不要为了降低单帧耗时而盲目降低定位精度或测量精度。高速检测的前提是检测能力达标,节拍优化必须在满足精度和重复性的前提下进行。若定位工具被压缩到无法稳定找到基准,后续测量会整体失效,反而造成更大的停机成本。

总结来说,VisionPro 工具链与高速检测的匹配,核心是三件事:按计算代价分类工具,按数据依赖排列顺序,按单帧预算做取舍。把这三件事落实到具体工具的参数和 ROI 上,节拍优化才有可操作的抓手。