3、双目相机硬件选型与搭建
做双目视觉这么多年,我最大的感触是:算法再牛,也救不了烂硬件。很多朋友一上来就调算法、跑匹配,结果发现视差图全是噪点——其实问题出在相机选型上。今天咱们就聊聊硬件选型那些事。
3.1 相机传感器:CCD vs CMOS
先说传感器。CCD和CMOS之争,在工业界已经吵了十几年了。我个人习惯是:静态场景用CCD,动态场景用CMOS。
| 特性 | CCD | CMOS |
|---|---|---|
| 灵敏度 | 高(尤其低光) | 中等 |
| 噪声 | 低 | 较高(但现代工艺已改善) |
| 帧率 | 一般(30fps左右) | 高(可达1000fps+) |
| 功耗 | 高 | 低 |
| 成本 | 高 | 低 |
| 全局快门 | 原生支持 | 需选型支持 |
核心建议:双目系统必须选全局快门(Global Shutter)的传感器。卷帘快门(Rolling Shutter)在拍摄运动物体时会产生果冻效应,左右图像时间不一致,视差计算直接崩掉。
我记得有一次项目,客户非要省钱用卷帘快门的CMOS。结果拍一个快速移动的机械臂,左右图像差了2ms,视差图直接糊成一团。后来换了全局快门的IMX264,问题瞬间解决。嗯,有些钱真不能省。
3.2 镜头参数:焦距、视场角、光圈
镜头选型,说白了就是三个参数:焦距、视场角、光圈。它们互相牵制,你得根据应用场景做取舍。
3.2.1 焦距与视场角
焦距越短,视场角越大,看得越宽但远处细节越差。焦距越长,视场角越小,看得越远但视野窄。公式很简单:
视场角(FOV) = 2 * arctan(传感器尺寸 / (2 * 焦距))
举个例子:
- 6mm镜头配1/2英寸传感器 → FOV约60°(适合室内近距离)
- 12mm镜头配1/2英寸传感器 → FOV约30°(适合室外远距离)
我的经验:室内机器人导航,我一般选6-8mm焦距。室外自动驾驶,12-16mm更合适。你想想看,如果焦距选太短,远处物体在图像里就几个像素,视差精度根本不够。
3.2.2 光圈
光圈影响进光量和景深。光圈越大(F值越小),进光越多但景深越浅。双目系统我建议:光圈别开太大。
为什么?因为双目需要左右图像都清晰。光圈F2.8以上,景深太浅,稍微有点安装误差,左右图像清晰度就不一致了。我一般用F4-F8之间,景深够用,进光量也还行。
避坑指南:我曾经在户外项目用了F1.4的大光圈镜头,结果中午阳光强烈,图像过曝严重。后来加了ND滤镜才勉强能用。所以户外场景,建议选带可调光圈的镜头,或者直接配ND滤镜。
3.3 基线距离与视差的关系
基线距离,就是左右相机光心之间的距离。这个参数直接影响视差范围和测距精度。
核心公式:
深度 Z = (焦距 f * 基线 B) / 视差 d
从公式能看出:
- 基线越长 → 相同视差下,测距越远
- 基线越短 → 近距离精度高,但远距离视差太小
我整理了一个参考表:
| 应用场景 | 推荐基线 | 有效测距范围 |
|---|---|---|
| 室内机器人(0.5-5m) | 6-12cm | 0.3-10m |
| 自动驾驶(5-100m) | 30-60cm | 2-150m |
| 无人机避障(1-20m) | 10-20cm | 0.5-30m |
| 近距离测量(0.1-2m) | 3-6cm | 0.05-5m |
注意:基线不是越长越好。基线太长,左右图像重叠区域变小,匹配难度增加。而且近距离物体可能只出现在一侧图像中,根本没法匹配。我见过有人把基线拉到1米,结果近距离物体直接出画——这就是典型的过犹不及。
3.4 双目相机同步触发机制
双目系统最核心的问题之一:左右图像必须同时采集。如果左右图像有时间差,运动物体就会出现位置偏差,视差计算全错。
同步触发有三种常见方式:
- 硬件同步(推荐):用同一根触发线连接两个相机,同时触发曝光。精度可达微秒级。
- 软件同步:通过软件指令同时触发。精度受系统调度影响,一般几毫秒到几十毫秒。
- PTP时钟同步:通过IEEE 1588协议同步时钟,适合分布式系统。
硬件同步的接线方式:
主相机(Master): 触发输出 → 从相机(Slave): 触发输入
两个相机共用同一个时钟源(如FPGA或MCU产生PWM信号)
我的习惯:只要条件允许,我一定用硬件同步。软件同步看起来方便,但实际项目中,系统负载一高,触发延迟就飘了。有一次在AGV项目里用软件同步,结果机器人转弯时左右图像差了15ms,视差图直接废掉。后来改成硬件同步,问题再没出现过。
另外,曝光时间也要保持一致。我建议:左右相机设置完全相同的曝光参数,包括曝光时间、增益、白平衡。否则左右图像亮度不一致,匹配算法会很难受。
3.5 知识体系总览
下面这张图,是我整理的双目硬件选型核心逻辑:
这张图把四个核心要素串起来了。你选型的时候,就按这个逻辑走:先定场景,再定传感器,然后选镜头和基线,最后搞定同步。每一步都有取舍,但方向对了,后面调试就轻松很多。
总结一下:双目硬件选型没有万能方案。我做了这么多年,每个项目都得重新算一遍。但核心原则不变:全局快门、合适焦距、匹配基线、硬件同步。把这四点抓牢了,你的双目系统就成功了一半。