跳到主要内容

3D 视觉入门【选修】

本节定位

2D 视觉主要在平面图像里理解内容。
3D 视觉再往前走一步:

不仅要知道图里是什么,还想知道它在空间里离我们多远、朝向如何、结构怎样。

这也是它和普通 CV 最大的不同。

学习目标

  • 理解深度、点云和多视角几何的基本直觉
  • 理解 3D 视觉为什么比 2D 更难
  • 通过可运行示例建立深度估计最小直觉
  • 知道 3D 视觉常见应用场景

先建立一张地图

3D 视觉最适合新人的理解方式不是“多了一维”,而是先看问题升级在哪里:

所以这节真正想帮你建立的是:

  • 平面理解和空间理解的差别
  • 深度、点云、多视角几何分别在解决什么问题

一个更适合新人的总类比

你可以把 2D 和 3D 的差别理解成:

  • 2D 像看一张旅游照片
  • 3D 像真的站在现场,想知道人离你多远、桌子有多高、车在你左前方还是右前方

也就是说,3D 视觉真正新增的不是“多一列数字”,而是:

  • 你开始关心空间关系本身

一、3D 视觉最核心的新问题是什么?

在 2D 图像里,很多时候只关心:

  • 类别
  • 位置

3D 视觉还会进一步关心:

  • 距离
  • 体积
  • 空间结构

一个类比

2D 更像看地图截图。
3D 更像真的站在场景里,想知道:

  • 这个物体离我多远

二、几个最常见的 3D 视觉概念

2.1 深度(Depth)

每个点离相机有多远。

2.2 点云(Point Cloud)

把场景表示成很多带三维坐标的点。

2.3 多视角几何

通过多个视角之间的对应关系,恢复三维结构。


三、先看一个最小深度直觉示例

def estimate_depth(focal_length, baseline, disparity):
if disparity == 0:
return float("inf")
return focal_length * baseline / disparity


focal_length = 800
baseline = 0.12

for disparity in [40, 20, 10]:
depth = estimate_depth(focal_length, baseline, disparity)
print({"disparity": disparity, "depth": round(depth, 4)})

3.1 这个例子最想表达什么?

它抓住了立体视觉最核心的一层直觉:

  • 视差越大,通常越近
  • 视差越小,通常越远

3.2 为什么这很重要?

因为它让“图像里的点”第一次和真实三维空间联系起来。

3.3 新人第一次学 3D 视觉,最该先记哪三件事?

  1. 深度
    先理解“离相机多远”。

  2. 点云
    先理解 3D 世界可以表示成很多空间点。

  3. 视差
    先理解多视角为什么能恢复空间距离。

3.4 再看一个最小“由深度恢复点”的示例

pixels = [
{"u": 10, "v": 20, "z": 2.0},
{"u": 12, "v": 21, "z": 2.5},
]


def to_point(pixel):
return (pixel["u"] * pixel["z"], pixel["v"] * pixel["z"], pixel["z"])


points = [to_point(pixel) for pixel in pixels]
print(points)

这个示例不是严格相机模型,只是帮助新人先建立一个直觉:

  • 当你已经知道深度时
  • 图像里的点就可以被重新想象成空间里的点

这正是“点云感”最容易入门的地方。


四、3D 视觉为什么更难?

4.1 数据更难拿

2D 图片很好收集,
3D 标注和深度数据通常更贵。

4.2 几何关系更复杂

你不只是处理外观,
还要处理:

  • 相机参数
  • 视角变化
  • 空间一致性

4.3 可视化和调试也更难

二维图像错误很直观,
三维结构错误往往更难肉眼看懂。


五、最常见误区

5.1 误区一:3D 视觉只是“多一个维度”

不止。
它带来的是新的几何问题。

5.2 误区二:2D 做好了自然就能做 3D

有帮助,但仍然要补空间几何直觉。

5.3 误区三:一开始就直接上复杂 3D 网络

更稳妥的方式通常是先把:

  • 深度
  • 视差
  • 点云

这些基础直觉立住。

5.4 第一次做 3D 项目时,最稳的默认顺序

更稳的顺序通常是:

  1. 先选一个单目标的小场景
  2. 先理解深度和视差
  3. 先把二维点和三维点的对应关系看懂
  4. 再进入点云或多视角几何
  5. 最后再看更复杂的重建或 3D 检测

这样会比一开始就直接读复杂 3D 网络更容易稳住。

这节最正确的学习预期

这一节不是要把你立刻带到复杂三维重建,
而是先让你真正意识到:

  • 3D 视觉比 2D 视觉多出的是空间几何问题
  • 这会影响数据、建模、评估和调试的难度

小结

这节最重要的是建立一个判断:

3D 视觉的核心价值,是把图像理解从平面提升到空间结构,而这也让它天然比 2D 视觉多出一层几何难度。

这节最该带走什么

  • 3D 视觉不是“多一个维度”那么简单
  • 深度、视差、点云是最值得先立住的三层直觉
  • 先学空间感,再看复杂模型,会更稳很多

如果把它做成项目,最值得展示什么

  • 一个小型深度估计或双目示例
  • 深度图和原图的对照
  • 从图像点到空间点的最小可视化
  • 一组“近处 / 远处”判断的错误案例

这样会比只说“我做了 3D 视觉”更有说服力。


练习

  1. 改一改 disparity,观察深度变化趋势。
  2. 为什么说 3D 视觉比 2D 视觉更依赖几何直觉?
  3. 点云为什么是一种很自然的 3D 表示?
  4. 想一想:哪些应用特别依赖 3D 视觉,而不是只要 2D 检测就够了?