一、立体视觉概述:从人眼到计算机的“三维感知”

大家好,我是这门课的主讲。今天咱们聊聊立体视觉——说白了,就是让计算机像人一样“看出”物体的远近。

你可能觉得这没什么了不起。但你想过没有,我们每天开车、走路、拿杯子,这些动作背后都依赖一个强大的能力:立体感知。人眼天生就会,但让计算机学会,可费了不少功夫。

1.1 人眼立体视觉:大自然给我们的启发

先说说人眼是怎么工作的。我经常在课上问学生:为什么闭上一只眼睛,就很难判断距离?

原因很简单。我们两只眼睛之间有大约6-7厘米的间距。看同一个物体时,左右眼看到的图像其实有细微差别——这叫视差。大脑就是靠这个视差,反推出物体的深度信息。

核心概念:视差越大,物体越近;视差越小,物体越远。这就是立体视觉最根本的原理。

我记得有一次做AR项目,用户反馈说虚拟物体“贴”在屏幕上,没有真实感。后来发现,问题就出在视差计算不够精确。嗯,这个坑我踩过,后面会详细讲怎么避免。

1.2 计算机双目视觉:模仿人眼,但更“死板”

计算机双目视觉,说白了就是用两个摄像头模拟人眼。一个左相机,一个右相机,拍下两张图。然后通过算法找到两张图中对应的点,算出视差,最后得到深度。

流程大致是这样的:

  1. 图像采集——左右相机同步拍摄
  2. 立体校正——让两张图“对齐”,方便后续匹配
  3. 立体匹配——找到左右图中同一个物体的像素点
  4. 视差计算——算出每个点的视差值
  5. 深度恢复——根据视差和相机参数,算出真实距离

你可能会问:这不就是人眼那套吗?对,原理一样。但计算机有个毛病——它不知道两张图里哪些点是同一个物体。所以立体匹配是整个流程中最难的一步。我在项目中遇到过,纹理少的墙面、反光的玻璃,都是匹配算法的噩梦。

1.3 双目视觉的应用场景:不只是“看得见”

这些年,双目视觉的应用越来越广。我挑几个典型的说说。

自动驾驶

车要判断前方障碍物有多远,激光雷达太贵,毫米波雷达分辨率低。双目摄像头呢?便宜,还能提供稠密的深度图。特斯拉早期就尝试过纯视觉方案。不过说实话,纯靠双目做自动驾驶,光照不好时容易翻车。我建议还是多传感器融合更靠谱。

机器人

机器人要抓取物体、避障、建图,没有深度信息寸步难行。双目视觉是性价比很高的方案。我之前做过一个仓储机器人项目,用双目做障碍物检测,效果不错,就是计算量有点大——嗯,后面会讲怎么优化。

AR/VR

AR眼镜要让你觉得虚拟物体真的“放在”桌子上,必须知道桌子的三维结构。双目视觉可以实时重建环境深度。我记得有一次调试AR应用,虚拟杯子总是“飘”在桌面上方,后来发现是深度图边缘有毛刺。这个坑,你们以后也会遇到。

1.4 课程整体路线图:我们要学什么

这门课一共30章,我把它分成四个阶段:

阶段 章节 核心内容
基础篇 1-8章 相机模型、标定、极线几何、立体校正
核心算法篇 9-18章 立体匹配(SGM、PatchMatch、深度学习)、视差优化
实战篇 19-25章 OpenCV实现、CUDA加速、嵌入式部署
进阶篇 26-30章 多目视觉、与IMU融合、SLAM中的应用

说白了,就是从原理到代码,从理论到落地。每一章我都会给出可运行的代码示例,也会分享我踩过的坑。

学习建议:别急着跑代码。先把相机模型和极线几何搞明白。我见过太多人上来就调SGM参数,结果调了一周都不知道为什么效果差——其实就是没理解极线约束。

1.5 本章知识体系

下面这张图,是我自己画的本章知识结构。你可以把它当作一个“地图”,知道这一章讲了什么,以及各部分之间的关系。

立体视觉概述 人眼立体视觉 双眼视差原理 大脑深度感知 计算机双目视觉 图像采集 → 立体校正 立体匹配 → 视差计算 深度恢复 应用场景 自动驾驶 机器人 AR/VR 课程路线:基础 → 核心算法 → 实战 → 进阶 图1-1 本章知识结构图

注意:这张图只是帮你建立整体认知。后面每一章都会深入细节。别指望现在全看懂,先有个印象就行。

1.6 写在开头的话

做双目视觉这些年,我最大的感受是:理论不难,落地才难。很多论文里的算法,跑在实验室数据上效果很好,一到真实场景就崩了。为什么?光照变化、噪声、遮挡、纹理缺失……现实世界远比数据集复杂。

所以这门课,我会尽量多讲“坑”,多讲“为什么”。不光是告诉你怎么做,更想让你知道为什么这么做,以及什么时候不能这么做

好了,第一章就到这里。下一章我们开始讲相机模型——这是所有立体视觉的基础。别跳过,真的重要。


专注资料整理