一、双目立体视觉基础:从原理到实战

各位工程师朋友,大家好。我是老张,在机器视觉这行摸爬滚打了十几年。今天咱们聊聊双目立体视觉的基础。说实话,这玩意儿看着高大上,但核心原理其实特别朴素——就是模仿人眼看世界的方式。

你想想看,我们两只眼睛为什么长在脑袋前面,而不是一左一右?因为有了视差,我们才能判断距离。双目相机也是这个道理。

1.1 双目成像原理:三角测量法

三角测量法,说白了就是解三角形。我给大家拆解一下:

  • 两个相机:左右各一个,光轴平行,间距固定(这个间距叫基线,记作 B)
  • 一个目标点:空间中的 P 点
  • 两个成像点:P 在左相机成像为 P_left,在右相机成像为 P_right

嗯,这里要注意:P_left 和 P_right 在图像上的位置是不一样的。这个差异,就是我们说的视差。

核心公式:

深度 Z = (f × B) / d

其中:f 是焦距,B 是基线长度,d 是视差

我在项目中遇到过一件事:有次客户说他们的深度测量总是不准。我过去一看,好家伙,基线 B 标定错了5毫米。你想想看,B 错了,整个深度值就全偏了。所以啊,硬件参数一定要反复确认。

1.2 视差与深度的关系

视差和深度是什么关系?反比关系。我给大家画个图就明白了:

视差与深度关系示意图 基线 B 近点 P1 远点 P2 视差大 → 深度小 视差小 → 深度大

从图上可以直观看到:物体离得近,左右成像位置差异大(视差大);物体离得远,差异小(视差小)。这个关系是反比的,不是线性的。

实战经验:

我个人习惯在标定完成后,先拍一张已知距离的标定板,验证一下深度值。这一步花不了几分钟,但能避免后面大量返工。

1.3 极线几何与对极约束

极线几何,这个名字听着唬人,其实核心就一句话:左图上的一个点,在右图上对应的点一定在某一条直线上。这条线就叫极线。

为什么会这样?因为两个相机的位置是固定的,空间点、左相机光心、右相机光心,这三个点构成一个平面(极平面)。这个平面与右相机成像面的交线,就是极线。

这个约束有什么用?太有用了!

  • 搜索降维:本来要在整张图上找匹配点,现在只需要沿着一条线找
  • 误匹配减少:不在极线上的点,直接排除
  • 计算加速:我做过测试,用极线约束后匹配速度能提升5-10倍

避坑指南:

我曾经在一个项目中,因为相机安装时没有严格平行,导致极线是斜的。当时没注意,直接用水平极线去搜,结果匹配率不到60%。后来重新做了立体校正,匹配率才回到95%以上。

所以,立体校正这一步千万别省!

1.4 基础矩阵与本质矩阵

这两个矩阵,是极线几何的数学表达。我给大家理清楚:

矩阵 含义 适用场景
基础矩阵 F 描述左右图像像素坐标之间的极线关系 未标定的相机(像素坐标)
本质矩阵 E 描述左右相机在归一化坐标系下的几何关系 已标定的相机(相机坐标系)

说白了,基础矩阵 F 是本质矩阵 E 的"升级版"——E 只考虑相机之间的旋转和平移,F 还包含了相机内参。

我记得有一次做三维重建,用 8 点法算基础矩阵,结果怎么算都不对。后来发现是特征点提取时,有一个点的坐标写反了。嗯,这种低级错误,排查起来最费时间。

核心关系:

E = K^T × F × K

其中 K 是相机内参矩阵

F = K^(-T) × E × K^(-1)

1.5 实战中的注意事项

讲了这么多理论,最后给大家总结几条实战经验:

  1. 基线选择:基线越长,深度精度越高,但视野重叠区域越小。我一般选 10-20cm,具体看检测距离。
  2. 相机同步:双目相机必须硬件触发同步,否则运动物体会有重影。这个坑我踩过。
  3. 标定频率:建议每 3-6 个月重新标定一次。温度变化、振动都会影响标定参数。
  4. 光照一致性:左右相机的曝光时间、增益要一致,否则匹配会出问题。

我的习惯:

每次调试双目系统,我都会先拍一张棋盘格,看看左右图像的角点检测是否一致。这一步能快速发现硬件问题,比如镜头畸变、安装倾斜等。

好了,这一章的内容就到这里。双目立体视觉的基础,说白了就是三角测量加极线约束。理解了这个,后面的立体匹配、三维重建就好办了。


专注资料整理