1、立体匹配概述:什么是立体匹配、双目视觉原理、极线约束与对极几何、视差与深度关系
大家好,我是你们的老朋友。今天咱们正式开讲立体匹配的第一章。
说实话,我刚开始接触这个领域的时候,也被一堆术语搞得头晕。什么对极几何、视差图、深度估计……听着就头大。但后来我发现,这东西说白了就是——让计算机像人一样,用两只眼睛看世界,然后算出距离。
嗯,咱们今天就把它彻底讲明白。
什么是立体匹配?
立体匹配,英文叫 Stereo Matching。它的任务很简单:给定左右两张图片,找到左图中每个像素点在右图中的对应位置。
你想想看,人眼为什么能感知深度?因为我们左眼和右眼看到的画面有细微差别。大脑通过计算这种差别,就能判断物体离我们有多远。立体匹配做的就是这件事——只不过换成了计算机来做。
核心定义:立体匹配 = 在双目图像中寻找同名点(对应点)的过程。
我在项目中遇到过不少新手,上来就问:“老师,立体匹配是不是就是做图像拼接?”不是的。图像拼接是把两张图拼成一张,立体匹配是找两张图之间的像素对应关系。这是两码事。
双目视觉原理
双目视觉,说白了就是模仿人眼。我们装两个摄像头,一左一右,同时拍摄同一场景。
这里有个关键点:两个摄像头的光轴要平行。如果不平行,后续的计算会非常麻烦。我个人习惯在搭建硬件时,先用标定板把两个相机对齐,误差控制在0.1度以内。
双目视觉的基本流程是这样的:
- 图像采集:左右相机同时拍照
- 立体校正:把图像调整到极线对齐状态
- 立体匹配:计算视差图
- 深度计算:由视差图得到深度图
我曾经犯过一个低级错误——两个相机曝光参数没统一,结果左图亮右图暗,匹配效果一塌糊涂。后来我学乖了,每次采集前先做一次自动白平衡同步。
极线约束与对极几何
这是立体匹配里最核心的几何基础。很多同学觉得它难,其实没那么复杂。
对极几何描述的是两个相机之间的几何关系。它告诉我们一个事实:左图中的一个点,在右图中对应的点一定在某一条直线上。这条线就叫极线。
为什么会这样?因为两个相机的位置是固定的,光线从物体出发,经过左相机光心、右相机光心,这三个点构成一个平面。这个平面与右相机成像平面的交线,就是极线。
我的经验:极线约束能把二维搜索问题降为一维搜索。原来要在整张图上找对应点,现在只需要沿着一条线找。速度提升几十倍不止。
这里我画了一张图,帮你理清对极几何的核心概念:
从这张图你可以看到:空间点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