3、图像采集与接口协议:GigE Vision、USB3 Vision、Camera Link 协议详解,以及多相机触发与同步方案

图像采集是视觉检测的「入口」。接口没选对,后面算法再强也白搭。我这些年见过太多项目,相机数据传不过来、丢帧、触发不同步,最后全卡在接口上。

今天咱们就把主流的三种工业相机接口——GigE Vision、USB3 Vision、Camera Link——掰开揉碎讲清楚。最后再聊聊多相机同步这个「老大难」问题。

3.1 三大接口协议核心对比

先看一张总表,心里有个底。

特性 GigE Vision USB3 Vision Camera Link
带宽 1 Gbps(千兆)
2.5/5/10 Gbps(万兆)
~3.2 Gbps(USB 3.0)
~10 Gbps(USB 3.2)
2.04 Gbps(Base)
~6.8 Gbps(Full)
传输距离 100m(Cat6) 3-5m(被动线缆)
10-20m(有源中继)
3-10m(铜缆)
更长(光纤扩展)
CPU 开销 中等(需处理 UDP/IP) 低(UVC/U3V 驱动优化好) 低(纯硬件传输)
多相机同步 IEEE 1588 (PTP) 支持好 硬件触发 + 软件时间戳 专用触发线 + 帧同步信号
典型场景 分布式、长距离、多相机 桌面级、高分辨率、短距离 高速线阵、高帧率面阵
成本 中(网卡 + 交换机) 低(主板自带接口) 高(采集卡 + 专用线缆)

一句话选型建议:

  • 要远距离、多相机、灵活组网 → GigE Vision
  • 要低成本、即插即用、高分辨率 → USB3 Vision
  • 要极致速度、低延迟、线阵相机 → Camera Link

3.2 GigE Vision:工业视觉的「通用语」

GigE Vision 是我用得最多的协议。为什么?因为它基于标准以太网,基础设施便宜,100 米传输距离在工厂里太实用了。

它的核心机制是 GVCP(控制协议) + GVSP(流协议)。GVCP 负责配置相机参数,GVSP 负责把图像数据打包成 UDP 包发出来。

嗯,这里要注意:UDP 是「尽力交付」,丢包怎么办?GigE Vision 在 GVSP 里加了重传机制。但重传会引入延迟,所以网络环境一定要干净。

我的经验: 做 GigE Vision 项目,交换机必须支持 IGMP Snooping 和 Jumbo Frame。IGMP 防止多播风暴,Jumbo Frame 减少包数量、降低 CPU 开销。我曾经在一个产线上没开 Jumbo Frame,结果 500 万像素相机跑不到 30fps,开了之后直接满帧。

GigE Vision 还有一个杀手锏——IEEE 1588 (PTP) 精确时间同步。多相机场景下,它能做到微秒级同步,不需要额外触发线。

3.3 USB3 Vision:简单高效的「桌面利器」

USB3 Vision 的优势就一个字:方便。插上就能用,带宽也够(USB 3.0 理论 5 Gbps,实际 ~3.2 Gbps),适合实验室、小工位、高分辨率静态检测。

但它的短板也很明显:距离。被动线缆超过 3 米信号就开始衰减。我有个项目,相机装在 5 米外的支架上,用了有源中继线才稳定。

USB3 Vision 的协议栈比 GigE 简单。它基于 U3V(USB3 Vision 标准),驱动层直接映射到操作系统,延迟很低。但多相机同步是个麻烦事——USB 总线是主从结构,做不到真正的硬件同步。

避坑指南: 我曾经在一个 4 相机 USB3 Vision 项目里,用了同一台电脑的 4 个 USB 口。结果发现相机之间互相抢带宽,帧率不稳定。后来换成两张 USB 3.0 扩展卡(每张卡接 2 个相机),问题才解决。USB 控制器是共享带宽的,多个相机一定要分散到不同控制器上。

3.4 Camera Link:高速检测的「硬核选择」

Camera Link 是纯硬件协议,没有 IP 栈,没有操作系统干预。数据从相机到采集卡,走的是 LVDS(低压差分信号),延迟极低。

它分三种配置:

  • Base:1 根线缆,2.04 Gbps,支持 8-bit/10-bit 数据
  • Medium:2 根线缆,4.08 Gbps,支持 16-bit 数据
  • Full:2 根线缆,6.8 Gbps,支持 24-bit 数据

Camera Link 的同步机制是「硬同步」。相机和采集卡之间通过 CC(相机控制) 信号线传递触发、帧同步、行同步。多相机同步时,用同一个外部触发源,配合采集卡的帧同步信号,能做到纳秒级同步。

但代价也大:采集卡贵(几千到几万),线缆粗且贵,距离短。说白了,只有线阵相机、高速面阵(>100fps)才值得上 Camera Link。

什么时候选 Camera Link?

  • 线阵相机:印刷检测、纺织检测、卷材检测
  • 高速面阵:电子元器件分选、药品泡罩检测
  • 需要极低延迟:实时控制、机器人引导

3.5 多相机触发与同步方案

多相机同步是视觉系统里最头疼的问题之一。你想想看,两个相机拍同一个产品,一个拍到第 100 帧,另一个拍到第 101 帧,那 3D 重建、拼接、比对全乱套。

同步方案分三个层级:

  1. 软件同步:通过 SDK 发送软触发命令。精度最差(毫秒级),只适合对同步要求不高的场景。
  2. 硬件触发同步:用同一个外部信号源(PLC、脉冲发生器)同时触发多个相机。精度高(微秒级),但需要额外布线。
  3. 协议级同步:GigE Vision 的 PTP、Camera Link 的帧同步信号。精度最高(纳秒级),适合高速线阵或 3D 测量。

下面这张图展示了典型的硬件触发同步方案:

多相机硬件触发同步方案 多相机硬件触发同步方案 外部触发源(PLC) 触发信号分配器 相机 1 GigE / USB3 / CL 相机 2 GigE / USB3 / CL 相机 3 GigE / USB3 / CL 采集 / 处理主机 所有相机接收同一触发信号,保证帧级同步。数据通过各自接口独立传输到主机。 GigE Vision 还可叠加 PTP 实现微秒级时间同步,无需额外触发线。

3.6 实战中的同步方案选择

我根据项目经验,把常见场景的同步方案整理成了一张表:

场景 推荐方案 同步精度 注意事项
2-4 个面阵相机,静态检测 硬件触发 + 同一信号源 ~10 μs 触发线等长,避免信号延迟差异
4-8 个 GigE 相机,流水线 PTP 同步 + 软触发 ~1 μs 交换机必须支持 PTP(IEEE 1588v2)
线阵相机 + 编码器 编码器触发 + 帧同步信号 ~100 ns Camera Link 或 CoaXPress 最合适
3D 激光轮廓仪 + 面阵相机 硬件触发 + 共享时钟 ~1 μs 需要采集卡支持多路触发输入

我的习惯: 只要项目预算允许,我优先用 硬件触发 + PTP 同步 的组合。硬件触发保证帧级对齐,PTP 保证时间戳一致。这样即使某个相机丢了一帧,也能通过时间戳识别出来,不会导致数据错位。

3.7 接口选型决策流程

最后,我总结了一个选型决策流程,你照着走一遍基本不会错:

  1. 确定相机类型:线阵还是面阵?线阵几乎必选 Camera Link 或 CoaXPress。
  2. 确定传输距离:超过 10 米?GigE Vision 是唯一选择。
  3. 确定帧率/分辨率:计算所需带宽。带宽超过 3 Gbps?考虑 Camera Link 或万兆网。
  4. 确定相机数量:超过 4 个?GigE Vision 组网最灵活。
  5. 确定同步精度:需要纳秒级?Camera Link 硬同步。微秒级?GigE PTP 够用。

我曾经踩过的坑: 有个项目选了 USB3 Vision 做 4 相机同步,结果发现 USB 控制器无法同时处理 4 路高带宽流,导致频繁丢帧。最后全部换成 GigE Vision + 千兆交换机,问题解决。选接口时,别只看相机参数,还要看主机端的 总线带宽 和 控制器数量。