第二章 核心成像原理(上):双目立体视觉原理、视差与深度计算、基线距离对精度的影响

各位同学,欢迎来到深度相机选型的硬核部分。

今天咱们聊聊双目立体视觉。说实话,这是我最熟悉的3D技术之一。十年前我刚入行时,第一个落地的项目就是双目相机——给一台AGV小车做避障。那会儿踩的坑,现在想起来都心疼。但正是这些经历,让我对双目原理的理解特别深。

好,咱们正式开始。

2.1 双目立体视觉:说白了就是“模仿人眼”

双目立体视觉的原理,其实特别朴素。

你想想看,人为什么能感知深度?因为我们有两只眼睛,它们看到的画面略有不同。大脑通过对比这两幅图像的差异,就能算出物体离我们有多远。

双目相机干的也是同样的事。它用两个摄像头(左眼和右眼)同时拍摄同一场景,然后通过算法找出两幅图像中对应的像素点,计算它们的偏移量——这个偏移量,就是视差。

核心公式:

深度 Z = (f × B) / d

其中:

  • Z:物体到相机的距离(深度)
  • f:相机焦距(像素单位)
  • B:基线距离(两个相机光心之间的距离)
  • d:视差(对应像素在左右图像中的水平偏移量)

这个公式,我建议你刻在脑子里。后面所有关于精度、分辨率、选型的讨论,都绕不开它。

2.2 视差与深度计算:一个像素的差距,可能差好几米

咱们来拆解一下这个公式。

视差 d 的单位是像素。你想想看,如果视差算错了一个像素,深度会差多少?

我举个例子:

  • 假设 f = 500 像素,B = 10 cm
  • 物体在 1 米处,视差 d = (500 × 0.1) / 1 = 50 像素
  • 如果视差算成了 49 像素,深度就变成了 (500 × 0.1) / 49 ≈ 1.02 米
  • 差了 2 厘米,还行对吧?

但如果物体在 10 米处呢?

  • 视差 d = (500 × 0.1) / 10 = 5 像素
  • 算成 4 像素,深度 = (500 × 0.1) / 4 = 12.5 米
  • 差了 2.5 米!

⚠️ 这就是双目视觉的“硬伤”:

距离越远,视差越小,深度误差越大。说白了,双目相机在近处很准,远处就“飘”了。

我曾经在一个户外巡检项目里吃过这个亏。当时想用双目测 20 米外的电线杆,结果数据抖得没法看。后来换了激光雷达才搞定。

2.3 基线距离:不是越长越好,也不是越短越好

基线 B 是双目系统最关键的硬件参数。它直接影响精度和测量范围。

基线越长:

  • 视差越大,深度精度越高
  • 但相机视野重叠区域变小,近距离物体可能“出画”
  • 结构更笨重,不适合小型化设备

基线越短:

  • 结构紧凑,适合手机、无人机等小设备
  • 但视差小,远距离精度差
  • 对立体匹配算法的要求更高

💡 我的选型经验:

室内场景(0.5-5 米),基线 5-10 cm 就够了。

室外场景(5-20 米),基线建议 20-50 cm。

我做AGV避障时,基线选了 12 cm,兼顾了精度和体积。这个值不是算出来的,是反复试出来的。

2.4 知识体系总览

下面这张图,是我自己画的。它把双目立体视觉的核心逻辑串起来了。你多看几遍,心里就有谱了。

双目立体视觉核心逻辑 左相机图像 右相机图像 立体匹配算法 视差图 (d) 深度计算 Z = fB/d 深度图 (Z) 基线 B(两个相机光心之间的距离) 精度影响因素: • 基线 B 越大,精度越高 • 距离 Z 越远,精度越低 • 焦距 f 越大,精度越高 • 匹配精度决定视差质量

2.5 避坑指南:我踩过的那些坑

做双目产品,光懂原理是不够的。硬件选型时,有几个坑我替你们踩过了:

  • 别迷信高分辨率。分辨率高确实能提高视差精度,但计算量也翻倍。我见过有人用 4K 双目做实时避障,结果帧率掉到 5fps,根本没法用。工业场景 720p 或 1080p 足够了。
  • 注意相机同步。左右相机必须硬件触发同步,否则运动物体拍出来是“鬼影”。我曾经用软件同步,结果拍高速运动的机械臂,视差图全是错的。
  • 标定不能省。双目相机出厂前必须做立体标定,矫正镜头畸变和两相机之间的旋转平移。不标定?那深度数据就是垃圾。

一句话总结本章:

双目立体视觉的核心就是“用视差换深度”。基线越长、距离越近、焦距越大,精度越高。但实际选型时,要在精度、体积、计算量之间找平衡。


公众号:蓝海资料掘金营,微信deep3321