3. 图像采集与传输优化

在 VisionPro 项目中,算法再优秀,如果进入 ToolBlock 的图像本身存在丢帧、拖影、曝光不足或传输延迟,后续的定位、测量与检测都会失去意义。图像采集与传输优化要解决的核心问题是:让相机在正确的时刻、以正确的曝光和稳定的数据流,把可用的图像交给视觉算法。本节围绕相机选型、触发模式、带宽控制、丢帧排查与采集时间测量五个环节展开,重点说明实际工程中如何判断与调整。

一、相机选型:从检测需求反推参数

相机选型不是先看型号,而是先明确检测对象与精度要求。假设需要检测一个 60 mm × 40 mm 的工件,要求最小缺陷尺寸为 0.1 mm,且缺陷至少占 3 个像素才能稳定识别。则所需分辨率约为:60 ÷ (0.1 ÷ 3) = 1800 像素(长边),40 ÷ (0.1 ÷ 3) = 1200 像素(短边)。考虑边缘留白与算法容差,选择 2000 × 1500 像素(约 300 万像素)的相机较为合理。

帧率由生产节拍决定。若节拍为 300 ms/件,且每件需采集 1 张图,则相机帧率至少 3.3 fps;若需多工位或多曝光合成,则按实际张数叠加。接口方面,GigE Vision 适合长距离布线(可达 100 m),USB3 Vision 适合短距离高带宽场景,Camera Link 适合高速多相机同步。选型时还需确认传感器类型(CMOS 全局快门适合运动物体,卷帘快门在高速运动下会产生果冻效应)、镜头接口(C/CS 口)与靶面尺寸匹配。

二、触发模式:决定图像与运动的对应关系

触发模式直接决定“拍到的图像是否对应正确位置”。连续采集(Free Run)适合静态或低速场景;软触发由软件发出信号,适合节拍不固定的工位;硬触发由光电传感器、编码器或 PLC 发出,适合高速运动中的精确定位。对于传送带上的工件,常用编码器触发配合分频,使相机按固定位移间隔采集,避免速度波动导致图像拉伸或压缩。

触发延迟与抖动是硬触发的关键参数。若传感器到相机存在 200 μs 延迟,且传送带速度为 500 mm/s,则触发时刻与曝光时刻之间工件已移动 0.1 mm。对于 0.1 mm 级检测,这一误差不可忽略,需要通过触发提前量或编码器位置补偿来修正。曝光时间则需在运动模糊与亮度之间折中:曝光时间 t 内工件移动距离 d = v × t,若要求 d ≤ 1 个像素对应的物理尺寸,则 t ≤ 像素精度 ÷ v。

图像采集与传输链路:从触发到算法可用图像 触发源 光电/编码器/PLC 工业相机 曝光 + 读出 传输接口 GigE / USB3 / CL 采集卡/网卡 + 主机 缓冲 → VisionPro 采集时间构成(单帧) 触发延迟 曝光时间 读出时间 传输时间 主机处理/缓冲 ~200 μs 100~5000 μs ~5~20 ms 与带宽相关 与算法相关 带宽估算示例 2000 × 1500 像素 × 8 bit = 24 Mbit/帧;30 fps → 720 Mbit/s ≈ 90 MB/s GigE 理论 1000 Mbit/s,实际有效约 700~900 Mbit/s,需预留协议开销与突发余量 丢帧排查路径 ① 检查带宽占用 → ② 检查网卡巨帧/Jumbo Frame → ③ 检查触发频率是否超过相机能力 ④ 检查主机 CPU/内存与采集缓冲 → ⑤ 检查线缆与供电 → ⑥ 用采集时间测量定位瓶颈

三、带宽控制:算清楚再配置

带宽不足是丢帧最常见的原因之一。以 GigE Vision 为例,理论带宽 1000 Mbit/s,但实际有效吞吐通常在 700~900 Mbit/s 之间,需扣除协议开销、重传与突发流量。若相机输出 2000 × 1500 × 8 bit 的灰度图,单帧数据量为 24 Mbit;在 30 fps 下需要 720 Mbit/s,已接近 GigE 上限。此时若同一网卡还连接其他相机或与办公网络共用,丢帧几乎必然发生。

控制手段包括:降低帧率或使用感兴趣区域(ROI)只输出缺陷可能出现的区域;启用像素合并(Binning)降低分辨率;使用压缩传输(如 JPEG 或无损压缩,需相机支持);将多相机分配到不同网卡或使用万兆网卡。对于 USB3 Vision,需注意控制器带宽共享问题,避免多个高带宽设备挂在同一 USB 控制器下。配置后应通过相机厂商工具或 VisionPro 的采集统计查看实际吞吐与丢帧计数。

四、丢帧排查:从现象到根因

丢帧的表现是采集帧数少于触发次数,或图像出现撕裂、重复、时间戳跳变。排查应按“先带宽、后触发、再主机”的顺序进行。首先确认相机实际输出帧率与触发频率是否匹配;其次检查网卡是否启用巨帧(Jumbo Frame,通常设为 9014 字节),并关闭节能以太网与中断节流;再次检查主机 CPU 占用、内存分配与采集缓冲队列深度。若使用硬触发,还需用示波器或采集卡的时间戳功能确认触发信号是否干净、是否存在抖动或丢脉冲。

在 VisionPro 中,可通过 CogAcqFifoTool 的统计信息查看已采集帧数、丢帧数与时间戳间隔。若时间戳间隔出现明显跳变,通常说明传输或主机处理出现阻塞,而非相机本身问题。

五、采集时间测量:用数据定位瓶颈

采集时间测量是优化的依据。完整单帧采集时间可拆分为:触发延迟、曝光时间、读出时间、传输时间与主机缓冲时间。测量方法有两种:一是使用相机 SDK 提供的时间戳,记录触发时刻与图像到达时刻;二是在 VisionPro 中通过 CogAcqFifoTool 的 LastFrameTime 或自定义脚本记录采集前后时间差。若曝光时间为 500 μs、读出时间为 8 ms、传输时间为 12 ms,则单帧总时间约 20.5 ms,对应最高约 48 fps;若实际节拍要求 30 fps,则有余量;若要求 60 fps,则必须缩短读出或传输时间。

实际优化时,可先固定曝光与触发,单独测量传输时间:将相机对准静态目标,连续采集 100 帧,记录每帧到达主机的时间间隔,计算平均值与最大值。若最大值远大于平均值,说明存在突发阻塞,应检查网卡缓冲与主机负载。若平均值本身已接近节拍上限,则需降低分辨率、启用 ROI 或升级接口。

六、工程检查清单

检查项 典型值/操作 判断依据
分辨率与精度 按缺陷像素数反推 缺陷 ≥ 3 像素
帧率与节拍 帧率 ≥ 节拍需求 × 安全系数 1.2 无等待、无堆积
触发模式 运动场景用硬触发 + 编码器 图像位置一致
曝光时间 t ≤ 像素精度 ÷ 运动速度 无运动模糊
带宽占用 ≤ 接口有效带宽的 70% 丢帧计数为 0
网卡设置 巨帧 9014、关闭节能 吞吐稳定
采集时间 分段测量,定位最大项 总时间 ≤ 节拍

图像采集与传输优化的本质,是把“相机—接口—主机—算法”当作一条完整链路来对待。选型决定上限,触发决定正确性,带宽决定稳定性,丢帧排查决定可维护性,采集时间测量决定优化方向。只有这五个环节都经过量化确认,VisionPro 的算法才能在真实产线上持续输出可靠结果。