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 重建、拼接、比对全乱套。
同步方案分三个层级:
- 软件同步:通过 SDK 发送软触发命令。精度最差(毫秒级),只适合对同步要求不高的场景。
- 硬件触发同步:用同一个外部信号源(PLC、脉冲发生器)同时触发多个相机。精度高(微秒级),但需要额外布线。
- 协议级同步:GigE Vision 的 PTP、Camera Link 的帧同步信号。精度最高(纳秒级),适合高速线阵或 3D 测量。
下面这张图展示了典型的硬件触发同步方案:
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 接口选型决策流程
最后,我总结了一个选型决策流程,你照着走一遍基本不会错:
- 确定相机类型:线阵还是面阵?线阵几乎必选 Camera Link 或 CoaXPress。
- 确定传输距离:超过 10 米?GigE Vision 是唯一选择。
- 确定帧率/分辨率:计算所需带宽。带宽超过 3 Gbps?考虑 Camera Link 或万兆网。
- 确定相机数量:超过 4 个?GigE Vision 组网最灵活。
- 确定同步精度:需要纳秒级?Camera Link 硬同步。微秒级?GigE PTP 够用。
我曾经踩过的坑: 有个项目选了 USB3 Vision 做 4 相机同步,结果发现 USB 控制器无法同时处理 4 路高带宽流,导致频繁丢帧。最后全部换成 GigE Vision + 千兆交换机,问题解决。选接口时,别只看相机参数,还要看主机端的 总线带宽 和 控制器数量。