3. 图像采集与接口协议:GigE Vision、USB3 Vision、Camera Link 协议对比

图像采集是视觉系统的入口。接口没选对,后面算法再牛也白搭。我这些年调试过的产线,至少有一半的“图像卡顿”问题,根源都在接口带宽或触发配置上。

今天咱们把主流的三种协议掰开揉碎讲清楚。你想想看,一个 500 万像素的相机,用 GigE 和用 USB3,实际能跑到的帧率能差多少?Camera Link 为什么在高端线扫领域至今无法被替代?这些我都会结合项目经验给你讲透。

3.1 三大协议的技术原理与差异

先看一张总览图,把三者的定位搞清楚。

三大工业视觉接口协议对比 GigE Vision USB3 Vision Camera Link 核心特性对比 带宽:1 Gbps 带宽:5 Gbps 带宽:2.04~6.8 Gbps 线缆:100m 线缆:3~5m 线缆:10m 成本:低 成本:低 成本:高 CPU 开销:中 CPU 开销:低 CPU 开销:高 多相机、远距离 分布式系统 桌面级、紧凑型 中等分辨率 高速线扫、高分辨率 高端检测 选型口诀:远距离用 GigE,中等距离高带宽用 USB3,极致性能上 Camera Link

3.2 GigE Vision:远距离部署的首选

GigE Vision 基于千兆以太网,最大优势就是线缆长度。100 米以内不需要中继器,这在大型产线或分布式工位上非常实用。

我个人习惯在以下场景优先考虑 GigE:

  • 多相机系统:一台工控机带 4~8 个相机,通过交换机组网
  • 远距离部署:相机到主机距离超过 10 米
  • 已有网络基础设施:工厂已有千兆网络,直接接入即可
避坑指南:GigE 的“1 Gbps”是理论带宽,实际有效载荷约 110 MB/s。如果相机分辨率超过 500 万像素且帧率要求 60 fps 以上,GigE 会非常吃力。我曾经在一个 PCB 检测项目里,用 1200 万像素 GigE 相机跑 30 fps,结果丢帧率高达 15%。后来换成了 USB3 Vision 才解决问题。

3.3 USB3 Vision:性价比之王

USB3 Vision 的带宽是 5 Gbps,实际有效约 400 MB/s。这个带宽足够支撑 500 万像素 @ 90 fps 或 1200 万像素 @ 30 fps 的常见需求。

为什么说它性价比高?

  • 不需要独立供电(总线供电,5V/900mA)
  • 即插即用,驱动成熟
  • CPU 开销低,USB 控制器硬件卸载了大部分协议处理

但要注意,USB3 的线缆长度是硬伤。3 米以内最稳定,超过 5 米必须用有源延长线或光纤 USB3 线缆。我在一个锂电检测项目里,相机装在机械臂末端,线缆需要走 8 米拖链,USB3 信号衰减严重,最后只能改用 GigE。

3.4 Camera Link:为极致性能而生

Camera Link 是并行差分传输,带宽从 Base 配置的 2.04 Gbps 到 Full 配置的 6.8 Gbps。它最大的特点是低延迟和确定性传输。

为什么高端线扫相机几乎全是 Camera Link?

  • 线扫相机动辄 16k 像素,行频 100 kHz 以上,数据量巨大
  • Camera Link 的 LVDS 信号抖动极小,适合像素时钟精确同步
  • 支持相机端直接输出 Bayer 或 Raw 数据,不经过 CPU 打包
注意:Camera Link 需要专用的采集卡和线缆,一套下来成本是 GigE 的 3~5 倍。而且线缆最大 10 米,不适合分布式部署。如果你做的是面阵相机项目,除非帧率要求极高(>200 fps),否则不建议上 Camera Link。

3.5 触发模式:硬件触发 vs 软件触发

触发是工业视觉的“起跑线”。触发不准,图像采集的时序就全乱了。

触发方式 延迟 抖动 适用场景
硬件触发(外部信号) < 10 μs < 1 μs 高速运动、精确同步
软件触发(API 调用) 1~10 ms 0.5~5 ms 低速、静态、调试

硬件触发我一般用光耦隔离的输入信号,接 PLC 或编码器。举个例子,在印刷品检测中,编码器每转一圈发一个脉冲,相机在固定位置拍照。如果抖动超过 1 μs,图像上的印刷字符就会偏移几个像素,检测精度直接报废。

软件触发呢?说白了就是调用 camera.StartCapture() 或 camera.SoftwareTrigger()。这个延迟受操作系统调度影响很大。Windows 下非实时系统,软件触发抖动可能达到 5 ms。你想想看,如果产线速度是 1 m/s,5 ms 的抖动意味着图像位置偏差 5 mm——这还怎么检测?

我的建议:凡是产线速度超过 0.5 m/s 的项目,一律用硬件触发。软件触发只用于实验室调试或静态拍照。

3.6 帧率与带宽计算

帧率不是相机标多少就能跑多少。你得算清楚带宽够不够。

公式很简单:

单帧数据量 = 宽度 × 高度 × 像素位深 / 8 (单位:字节)
所需带宽 = 单帧数据量 × 目标帧率 (单位:字节/秒)

举个例子:

相机:2448 × 2048,8 bit 灰度
单帧数据量 = 2448 × 2048 × 8 / 8 = 5,017,600 字节 ≈ 4.8 MB
目标帧率:60 fps
所需带宽 = 4.8 MB × 60 = 288 MB/s

GigE 有效带宽:约 110 MB/s → 不够!
USB3 有效带宽:约 400 MB/s → 够用
Camera Link Base:约 255 MB/s → 勉强够,但建议用 Medium 配置

这里有个坑:很多人只看理论带宽,忽略了协议开销。GigE 的 UDP 包头、USB3 的传输层开销、Camera Link 的时钟损耗,实际有效带宽通常只有理论值的 70%~85%。

经验值:我一般按理论带宽的 75% 做预算。比如 GigE 按 110 MB/s 算,USB3 按 400 MB/s 算,Camera Link Base 按 255 MB/s 算。这样留出余量,避免高负载时丢帧。

3.7 选型决策流程

最后给一个我常用的选型决策树:

  1. 先看距离:超过 10 米 → GigE Vision
  2. 再看带宽:计算所需带宽,匹配接口
  3. 再看成本:预算有限 → USB3 Vision;预算充足且性能要求极高 → Camera Link
  4. 最后看生态:已有采集卡或交换机?优先兼容现有设备

嗯,接口协议这块就讲这么多。记住一句话:没有最好的协议,只有最合适的协议。选型时把距离、带宽、成本、生态四个维度列个表,答案自然就出来了。