4. 异构相机同步
多相机拼接,最头疼的问题是什么?
我个人觉得,不是分辨率不够,也不是畸变太大。而是——时间不同步。
你想想看,两路相机拍同一个场景,一个快了 10 毫秒,一个慢了 20 毫秒。拼接出来的画面里,行人可能“分身”,车辆可能“错位”。这种问题,后期算法再强也救不回来。
所以,同步是异构相机融合的基石。今天我们就来聊聊,硬件同步和软件同步,到底该怎么选。
4.1 为什么同步这么难?
异构相机,说白了就是不同品牌、不同型号、不同接口的相机混着用。
比如,我手头有一台 Basler 的 GigE 相机,一台海康的 USB3 相机,还有一台 FLIR 的 Camera Link 相机。它们的时钟源、触发方式、数据传输延迟,全都不一样。
想让它们在同一个时间点上“咔嚓”一声同时拍照,不是件容易事。
4.2 硬件同步:PTP 与 GPS PPS
硬件同步,就是通过物理信号来对齐时间。我把它分为两类:PTP(精确时间协议) 和 GPS PPS(秒脉冲)。
4.2.1 PTP(IEEE 1588)
PTP 的原理,是在网络里选一个“主时钟”,其他设备都跟着它走。主时钟会定期发报文,告诉从设备“现在几点几分几秒”。从设备收到后,会计算网络延迟,然后校准自己的时钟。
我在项目中用过 PTP 来同步多台 GigE Vision 相机。精度能做到微秒级,甚至亚微秒级。对于大多数拼接场景,完全够用。
优点:
- 精度高(1μs 以内)
- 无需额外布线(走网线就行)
- 支持多设备级联
缺点:
- 依赖网络基础设施(交换机、网卡)
- 配置复杂(需要设置主从关系)
- 对网络负载敏感(大流量时精度下降)
4.2.2 GPS PPS(秒脉冲)
GPS PPS 更粗暴。GPS 模块每秒输出一个脉冲信号,精度在纳秒级。所有相机都接这个脉冲,收到信号就立即触发拍照。
我曾经在户外测试场用过 GPS PPS。当时要同步 8 台不同品牌的相机,分布在 50 米范围内。拉了一根长长的 BNC 线,每个相机接一个触发输入口。效果很稳定,误差基本在 100 纳秒以内。
优点:
- 精度极高(纳秒级)
- 不依赖网络(独立物理信号)
- 适合远距离分布
缺点:
- 需要额外硬件(GPS 模块、线缆)
- 受环境限制(室内不可用)
- 布线成本高
4.3 软件同步:时间戳对齐
硬件同步虽好,但不是所有场景都能用。比如,你用的是 USB 相机,没有触发输入口。或者,相机分布在不同的房间,拉线不现实。
这时候,就得靠软件同步了。
软件同步的核心思路是:不强制相机同时拍照,而是给每帧图像打上时间戳,然后在软件里对齐。
具体做法是:
- 所有相机连接到同一台主机,主机提供统一的时钟源(比如 NTP 或 PTP 软件实现)。
- 每台相机在采集到图像时,记录下当前的主机时间。
- 在拼接时,根据时间戳找到最接近的帧,进行配对。
我在一个项目中用过软件同步。当时是 4 台 USB 3.0 相机,通过一个 USB 3.0 Hub 连接到一台工控机。工控机运行 Windows,用 QueryPerformanceCounter 获取高精度时间。每帧图像到达时,驱动会立即打上时间戳。
实际效果如何?嗯,只能说“能用”。在静态场景下,误差在 5-10 毫秒。但一旦场景里有快速运动的物体,比如汽车、行人,就会出现明显的错位。
优点:
- 无需额外硬件(成本低)
- 部署灵活(任何相机都能用)
- 易于扩展(加相机只需改软件)
缺点:
- 精度低(毫秒级,受系统负载影响)
- 依赖主机性能(CPU 忙时时间戳会延迟)
- 不适合高速运动场景
4.4 三种方案对比
为了方便你选型,我整理了一张表。你可以根据项目需求,直接对照着看。
| 方案 | 精度 | 成本 | 部署难度 | 适用场景 |
|---|---|---|---|---|
| PTP | 1μs 以内 | 中(需支持交换机) | 中 | GigE 相机、网络化系统 |
| GPS PPS | 100ns 以内 | 高(GPS 模块+线缆) | 高 | 户外、远距离、高精度 |
| 软件时间戳 | 5-20ms | 低(仅软件) | 低 | 室内、低速、原型验证 |
4.5 我的选择建议
说了这么多,到底怎么选?我个人的习惯是:
- 如果相机支持 PTP,优先用 PTP。 精度够用,部署也方便。我最近几个项目都这么干,效果很稳。
- 如果场景在户外,且精度要求极高,上 GPS PPS。 比如自动驾驶、无人机测绘。别心疼那点硬件钱,后期省心。
- 如果只是做原型验证,或者预算有限,用软件时间戳。 但要做好心理准备——运动物体可能会有重影。我曾经因为这个被客户骂过一次,后来乖乖换了硬件同步。
4.6 知识结构图
下面这张图,帮你理清三种同步方案的核心逻辑和适用边界。
4.7 小结
同步这件事,没有银弹。硬件同步精度高,但成本也高;软件同步灵活,但精度有限。
我的建议是:先评估你的精度需求,再决定方案。 如果拿不准,可以先上软件同步做原型,等验证了算法,再升级到硬件同步。这样既控制了风险,又保证了最终效果。