一、立体视觉概述:什么是立体匹配、双目视觉原理、视差与深度关系、应用场景
大家好,我是你们的老朋友。今天咱们正式开讲立体匹配的第一章。说实话,每次带新人入门,我都会先问一个问题:人眼为什么能看到三维世界?你想想看,我们两只眼睛看到的画面其实不完全一样,但大脑却能合成出深度信息。立体匹配,说白了就是让计算机模仿这个能力。
1.1 什么是立体匹配
立体匹配,全称叫立体图像匹配。它的任务很简单:给定两张从不同角度拍摄的图片,找到它们之间的对应像素点。
举个例子。我拍了一张桌子上的杯子,左眼看到杯把在左边,右眼看到杯把稍微往右偏了一点。计算机要做的,就是找到左图里杯把上的某个像素,在右图里对应的是哪个像素。这个找对应关系的过程,就是立体匹配。
核心定义:立体匹配 = 在左右视图之间建立像素级对应关系,从而计算视差图。
我在项目中遇到过不少新手,上来就调算法参数,结果效果很差。其实理解匹配的本质比调参重要得多。匹配的本质是相似性度量——你凭什么说左图的像素A和右图的像素B是同一个点?靠的是它们周围的纹理、颜色、梯度等特征相似。
1.2 双目视觉原理
双目视觉,就是模拟人眼的结构。两个摄像头平行放置,光轴平行,像距相同。这叫做标准双目系统。
嗯,这里要注意:实际工程中很难做到绝对平行。我调试过一台双目相机,左右摄像头有0.5度的偏角,结果视差图全是歪的。后来做了立体校正才搞定。
双目视觉的数学基础是对极几何。简单说:左图中的一个点,在右图中一定位于某一条直线上,这条线叫极线。有了这个约束,匹配搜索就从二维降到了一维,效率提升巨大。
个人经验:我建议初学者先理解极线约束,再去碰那些复杂的匹配算法。极线约束是立体匹配的基石,绕不过去。
1.3 视差与深度关系
视差,就是同一个三维点在左右图像上成像位置的水平偏移量。单位是像素。
深度和视差的关系,用一个公式就能说清楚:
深度 Z = (焦距 f × 基线距离 B) / 视差 d
其中:
- Z:物体到相机的距离(深度)
- f:相机焦距(像素单位)
- B:左右相机光心之间的距离(基线)
- d:视差值(像素)
你看,深度和视差成反比。物体越近,视差越大;物体越远,视差越小。无限远处的物体,视差趋近于0。
我曾经在自动驾驶项目里踩过一个坑:用大基线相机测远处车辆,视差只有1-2个像素,稍微有点噪声,深度就跳得离谱。后来我改用长焦镜头+小基线,才把远距离测距精度提上来。
避坑指南:视差计算对亚像素精度要求很高。我曾经因为只用了整像素匹配,导致深度图出现明显的阶梯状伪影。后来改用亚像素插值,效果立竿见影。
1.4 应用场景
立体匹配不是实验室里的玩具,它在工业界有大量落地场景。我挑三个最典型的说说。
1.4.1 自动驾驶
自动驾驶里,立体相机是感知系统的重要传感器。它能提供稠密的深度图,用于障碍物检测、可行驶区域分割、目标跟踪。
我记得有一次测试,我们的车在高速上遇到一辆静止的货车。激光雷达没扫到,但双目相机通过视差计算发现前方有障碍物,及时触发了紧急制动。这就是立体匹配的价值——稠密、低成本、全天候。
1.4.2 机器人
机器人导航、抓取、避障都离不开深度信息。立体相机比激光雷达便宜得多,而且能提供彩色+深度对齐的数据。
我做过的仓储机器人项目,就用双目相机做货架识别和路径规划。立体匹配算出来的深度图,配合RGB图像,能让机器人精准地抓取货架上的箱子。
1.4.3 3D重建
从多视角图像重建三维模型,立体匹配是核心步骤。先算视差图,再转成深度图,最后融合成点云。
我参与过一个文物数字化项目,用双目相机扫描一尊佛像。立体匹配算出的深度图精度达到毫米级,重建出来的模型连佛像衣纹的褶皱都清晰可见。
1.5 知识体系总览
下面这张图,是我自己总结的立体匹配知识体系。你看一眼,心里就有谱了。
这张图把立体匹配的流程串起来了。从输入到输出,再到应用,每一步都有对应的算法和工程技巧。后面的章节,我会逐一拆解。
1.6 本章小结
这一章我们聊了立体匹配是什么、双目视觉怎么工作、视差和深度怎么换算,以及它在哪些场景里真正有用。说白了,立体匹配就是用两张图算出一张深度图,然后让机器看懂三维世界。
我个人觉得,理解视差与深度的反比关系,是入门的第一道坎。你把这个关系刻在脑子里,后面学匹配算法、立体校正、深度滤波,都会顺很多。
好,今天就到这儿。下一章我们开始动手——从相机标定和立体校正讲起,把双目系统的硬件基础打牢。
公众号:蓝海资料掘金营,微信deep3321