1、立体匹配概述:什么是立体匹配、双目视觉原理、极线约束与对极几何、视差与深度关系

大家好,我是你们的老朋友。今天咱们正式开讲立体匹配的第一章。

说实话,我刚开始接触这个领域的时候,也被一堆术语搞得头晕。什么对极几何、视差图、深度估计……听着就头大。但后来我发现,这东西说白了就是——让计算机像人一样,用两只眼睛看世界,然后算出距离

嗯,咱们今天就把它彻底讲明白。

什么是立体匹配?

立体匹配,英文叫 Stereo Matching。它的任务很简单:给定左右两张图片,找到左图中每个像素点在右图中的对应位置

你想想看,人眼为什么能感知深度?因为我们左眼和右眼看到的画面有细微差别。大脑通过计算这种差别,就能判断物体离我们有多远。立体匹配做的就是这件事——只不过换成了计算机来做。

核心定义:立体匹配 = 在双目图像中寻找同名点(对应点)的过程。

我在项目中遇到过不少新手,上来就问:“老师,立体匹配是不是就是做图像拼接?”不是的。图像拼接是把两张图拼成一张,立体匹配是找两张图之间的像素对应关系。这是两码事。

双目视觉原理

双目视觉,说白了就是模仿人眼。我们装两个摄像头,一左一右,同时拍摄同一场景。

这里有个关键点:两个摄像头的光轴要平行。如果不平行,后续的计算会非常麻烦。我个人习惯在搭建硬件时,先用标定板把两个相机对齐,误差控制在0.1度以内。

双目视觉的基本流程是这样的:

  1. 图像采集:左右相机同时拍照
  2. 立体校正:把图像调整到极线对齐状态
  3. 立体匹配:计算视差图
  4. 深度计算:由视差图得到深度图

我曾经犯过一个低级错误——两个相机曝光参数没统一,结果左图亮右图暗,匹配效果一塌糊涂。后来我学乖了,每次采集前先做一次自动白平衡同步。

极线约束与对极几何

这是立体匹配里最核心的几何基础。很多同学觉得它难,其实没那么复杂。

对极几何描述的是两个相机之间的几何关系。它告诉我们一个事实:左图中的一个点,在右图中对应的点一定在某一条直线上。这条线就叫极线

为什么会这样?因为两个相机的位置是固定的,光线从物体出发,经过左相机光心、右相机光心,这三个点构成一个平面。这个平面与右相机成像平面的交线,就是极线。

我的经验:极线约束能把二维搜索问题降为一维搜索。原来要在整张图上找对应点,现在只需要沿着一条线找。速度提升几十倍不止。

这里我画了一张图,帮你理清对极几何的核心概念:

对极几何核心概念示意图 左光心 右光心 基线 B P(空间点) 左成像面 右成像面 p左 p右 极平面 极线 极平面 极线 基线

从这张图你可以看到:空间点P、左光心、右光心,三点确定一个平面(极平面)。这个平面与左右成像面的交线,就是极线。左图上的p左点,在右图上的对应点一定在极线上。

注意:如果两个相机没有经过立体校正,极线是斜的。经过校正后,极线变成水平的。这就是为什么我们做立体匹配前一定要做立体校正——把二维搜索变成一维水平搜索。

视差与深度关系

好,现在咱们聊聊最核心的公式。

视差(Disparity)的定义很简单:左图中某个像素点,与它在右图中对应点的水平坐标差值。

公式长这样:

d = x_left - x_right

其中 d 是视差,x_left 是左图列坐标,x_right 是右图列坐标。

那深度(Depth)和视差有什么关系呢?

Z = (f * B) / d

其中:

  • Z:深度(物体到相机的距离)
  • f:相机焦距(像素单位)
  • B:基线长度(两个相机光心之间的距离)
  • d:视差

这个公式告诉我们一个非常重要的规律:视差越大,物体越近;视差越小,物体越远

我举个例子你就明白了。假设你伸出食指放在眼前,闭上左眼用右眼看,再闭上右眼用左眼看——你会发现手指的位置在背景上跳来跳去。手指离眼睛越近,这个跳动幅度(视差)就越大。

关键结论:深度与视差成反比。视差为0的点,深度无穷大(也就是无限远)。

我在实际项目中遇到过一个问题:为什么远处的物体视差几乎为0?因为当物体足够远时,左右眼看到的画面几乎一样,视差趋近于0。这时候深度估计的精度会急剧下降。所以双目视觉的有效测距范围是有限的,一般不超过基线长度的100倍。

咱们用一张表格总结一下视差和深度的关系:

视差 d(像素) 深度 Z(米) 物理含义
0 无限远
1 f × B 最远可测距离
10 f × B / 10 中等距离
100 f × B / 100 近距离

假设 f = 500 像素,B = 0.1 米,那么视差为1时,深度 = 50米。也就是说,这套系统最多能测50米远的物体。

避坑指南:我曾经在项目里把基线设得太短,结果视差范围太小,深度分辨率不够。后来我总结了一个经验:基线长度要根据目标测距范围来选。测近距离用小基线,测远距离用大基线。

好了,这一章的内容就到这里。立体匹配的核心思想其实不复杂——就是找到左右图的对应点,然后算视差,最后转深度。后面的章节我们会深入具体的匹配算法和代价计算方法。

记住我今天说的:极线约束是效率的保障,视差与深度的反比关系是理解一切的基础


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