1. 双目视觉基础:测距的起点

做机器视觉这些年,我接触过不少测距方案。结构光、TOF、激光雷达……各有各的脾气。但要说最贴近人类视觉的,还得是双目视觉。说白了,就是给机器装上两只“眼睛”,让它像我们一样判断距离。

这一章,我们先把地基打牢。双目测距的原理其实不复杂,但细节里藏着不少坑。我当年刚入行时,就因为在视差计算上栽过跟头,后来才明白——基础不牢,后面全是白搭。

1.1 双目测距的基本原理

想象一下,你用两只眼睛看一个物体。左眼和右眼看到的画面其实略有不同。这个差异,就是“视差”。大脑就是靠这个视差,来判断物体离你有多远。

双目相机模仿的就是这个过程。两个相机同时拍摄,得到左右两张图。然后找到同一个物体在两张图上的位置差异——也就是视差。视差越大,物体越近;视差越小,物体越远。

核心公式:

深度 Z = (f × B) / d

其中:

  • Z — 物体到相机的距离(深度)
  • f — 相机焦距
  • B — 基线长度(两个相机光心之间的距离)
  • d — 视差(同一物体在左右图像上的像素差)

这个公式看着简单,但实际用起来,每个参数都有讲究。我见过不少新手,上来就套公式,结果测出来的距离偏差很大。为什么?因为公式里的 f 和 B 都是理想值,而实际相机总有误差。

1.2 视差与深度的关系

视差和深度不是线性关系。这一点很重要。你想想看,物体离得近时,视差变化很敏感;离得远时,视差变化就迟钝了。

举个例子:

深度 Z (mm) 视差 d (像素) 视差变化 1 像素对应的深度变化 (mm)
500 100 约 5.0
1000 50 约 20.0
2000 25 约 80.0
5000 10 约 500.0

看到没?距离越远,视差变化对深度的影响越大。这意味着什么?意味着远距离测距时,视差计算必须非常精确。差一个像素,距离可能就差了几十甚至几百毫米。

我的经验: 做远距离测距时,我一般会建议用亚像素级别的视差计算。整像素级别的精度,远距离根本不够用。曾经有个项目,客户要求 10 米处误差小于 1%,我们硬是把视差精度做到了 0.1 像素级别。

1.3 三角测量法

三角测量法,说白了就是几何问题。两个相机和物体之间,构成了一个三角形。已知两个相机的位置和角度,就能算出物体的位置。

具体来说:

  1. 左相机看到物体在图像上的某个位置
  2. 右相机看到物体在图像上的另一个位置
  3. 这两个位置加上相机光心,构成两条射线
  4. 两条射线的交点,就是物体的实际位置

理想情况下,两条射线应该交于一点。但实际中,由于噪声和误差,它们往往不会完美相交。这时候就需要用最小二乘法来求最优解。

注意: 三角测量法对相机标定精度非常敏感。我曾经遇到过一个案例,标定参数差了 0.1 度,结果 5 米处的测距误差直接飙到了 20 厘米。所以,标定这一步千万别马虎。

1.4 相机成像模型

要理解双目测距,必须先搞懂相机是怎么成像的。这里我简单讲一下针孔相机模型——这是最基础、最常用的模型。

针孔模型的核心思想:

  • 光线从物体出发,穿过相机光心
  • 在成像平面上形成倒立的像
  • 通过数学变换,把三维世界坐标映射到二维图像坐标

数学上,这个映射关系可以写成:

s * [u, v, 1]^T = K * [R | t] * [X, Y, Z, 1]^T

其中:

  • u, v — 图像像素坐标
  • X, Y, Z — 世界坐标
  • K — 相机内参矩阵(焦距、主点等)
  • R, t — 相机外参(旋转和平移)
  • s — 尺度因子

这个公式看着有点吓人,但实际用起来,其实就是几个矩阵乘法。我习惯把内参理解为“相机自己的脾气”,外参理解为“相机在空间中的位置和朝向”。

内参矩阵 K 长这样:

K = [fx,  0, cx
      0,  fy, cy
      0,   0,  1]

fx, fy 是焦距(像素单位),cx, cy 是主点坐标。这些参数,都需要通过标定来获得。

1.5 知识体系总览

这一章的内容,我画了个图帮你理一理。双目测距的整个知识链条,其实就这几块:

双目测距知识体系 双目测距 基本原理 视差与深度关系 三角测量法 相机成像模型 左右图像匹配 视差计算 深度恢复 非线性关系 精度与距离 亚像素估计 射线求交 最小二乘法 误差来源 针孔模型 内参外参 畸变校正 理解这些,才算入了双目测距的门

嗯,这张图基本把这一章的核心内容串起来了。从基本原理出发,到视差与深度的关系,再到三角测量法和相机模型——每一步都是后面章节的基础。

一个小建议: 刚开始学双目测距,别急着调算法。先把相机模型吃透,把标定做好。我见过太多人,算法调得飞起,结果发现是标定参数有问题——白忙活一场。

好了,这一章就到这里。记住,双目测距的核心就一句话:视差是桥梁,深度是目标。后面的章节,我们会一步步深入,看看怎么把这个桥梁搭得更稳、更准。

专注资料整理