2. 基线距基础概念
各位工程师朋友,今天我们来聊聊双目视觉里最核心的一个参数——基线距。我做了这么多年光学测量,可以负责任地说:基线距选得好不好,直接决定了你的系统能不能用。
2.1 基线距的定义
说白了,基线距就是两个相机光心之间的距离。用字母 B 表示,单位通常是毫米。
你想想看,我们人眼两个瞳孔之间的距离大概在 60-70mm 左右,这就是我们天生的基线距。双目视觉系统模仿的就是这个原理。
核心定义:基线距 B = 左相机光心到右相机光心的直线距离
我在项目中遇到过不少新手,把相机外壳之间的距离当成基线距。嗯,这里要注意:基线距是光心之间的距离,不是外壳距离。特别是用大尺寸相机时,外壳厚度可能有好几毫米,算错了基线距,后面所有标定都白做。
2.2 基线距与视差的关系
视差是什么?简单说就是同一个物体在左右相机成像平面上的位置差。用公式表示:
视差 d = x_left - x_right
其中 x_left 和 x_right 分别是物体在左右图像中的列坐标。
那么基线距和视差是什么关系?我直接给你结论:
Z = (B × f) / d
这里 Z 是物体到相机的距离,f 是焦距。你看,深度 Z 和视差 d 成反比,和基线距 B 成正比。
为什么会这样?我习惯用一个生活例子来解释:你伸出一根手指放在眼前,闭上左眼用右眼看,再闭上右眼用左眼看——手指的位置会跳来跳去。这个跳动量就是视差。手指离眼睛越近,跳动越大;基线距(两眼距离)越大,跳动也越大。
个人经验:我建议在选型时,先用这个公式估算一下。比如你要测 5 米远的物体,焦距 12mm,想让视差至少 10 个像素(像素尺寸 5μm),那么基线距至少要:
B = Z × d / f = 5000 × (10 × 0.005) / 12 ≈ 20.8 mm
这个估算方法我用了很多年,很管用。
2.3 基线距对深度测量精度的影响
这是本章的重头戏。基线距直接影响深度测量的精度,我把它拆成三个层面来讲。
2.3.1 精度公式推导
深度测量误差 ΔZ 可以用下面这个公式表达:
ΔZ = (Z² × Δd) / (B × f)
其中 Δd 是视差测量误差(通常 0.1-0.5 像素)。
你看,误差 ΔZ 和基线距 B 成反比。基线距越大,误差越小,精度越高。
2.3.2 实际案例分析
我曾经做过一个项目,要在 2 米距离内测量工件高度,要求精度 ±0.5mm。我选了焦距 16mm 的相机,像素尺寸 3.45μm。
算一下:如果基线距 100mm,视差误差按 0.2 像素算:
ΔZ = (2000² × 0.2 × 0.00345) / (100 × 16) = 1.725 mm
精度 1.7mm,远达不到要求。后来我把基线距加大到 300mm:
ΔZ = (2000² × 0.2 × 0.00345) / (300 × 16) = 0.575 mm
勉强达标。最后我用了 400mm 基线距,才稳稳做到 ±0.4mm。
避坑指南:我曾经犯过一个错误——为了追求精度,把基线距做得特别大。结果呢?两个相机视野重叠区域太小,很多区域根本看不到。记住:基线距越大,公共视野越小。这是个 trade-off。
2.3.3 基线距选择的三个约束
我总结了一个基线距选择的三角约束:
| 约束条件 | 影响 | 我的建议 |
|---|---|---|
| 精度要求 | 基线距越大,精度越高 | 先算最小基线距,再往上加 20% 余量 |
| 视野重叠 | 基线距越大,重叠越小 | 保证重叠区域 ≥ 目标视场的 1.5 倍 |
| 结构尺寸 | 受安装空间限制 | 实在不行就用更大焦距的镜头 |
说白了,选基线距就是在精度和视野之间找平衡。我个人习惯是先定精度要求,算出最小基线距,再检查视野重叠够不够。不够的话,要么换更大焦距的镜头,要么接受更低的精度。
核心要点回顾:
- 基线距 B 是两相机光心距离,不是外壳距离
- 深度 Z = (B × f) / d,视差越大深度越小
- 精度 ΔZ ∝ 1/B,基线距越大精度越高
- 但基线距过大会导致公共视野变小
嗯,基线距这个概念看似简单,但实际工程中坑不少。我见过太多人一上来就选个 200mm 基线距,结果发现测不了近处物体。所以我的建议是:先算后选,别凭感觉。
这张图把基线距、视差、深度和精度的关系都串起来了。你多看几遍,理解了这个三角关系,后面章节的内容就顺了。