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 视觉,最该先记哪三件事?
-
深度
先理解“离相机多远”。 -
点云
先理解 3D 世界可以表示成很多空间点。 -
视差
先理解多视角为什么能恢复空间距离。
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 项目时,最稳的默认顺序
更稳的顺序通常是:
- 先选一个单目标的小场景
- 先理解深度和视差
- 先把二维点和三维点的对应关系看懂
- 再进入点云或多视角几何
- 最后再看更复杂的重建或 3D 检测
这样会比一开始就直接读复杂 3D 网络更容易稳住。
这节最正确的学习预期
这一节不是要把你立刻带到复杂三维重建,
而是先让你真正意识到:
- 3D 视觉比 2D 视觉多出的是空间几何问题
- 这会影响数据、建模、评估和调试的难度
小结
这节最重要的是建立一个判断:
3D 视觉的核心价值,是把图像理解从平面提升到空间结构,而这也让它天然比 2D 视觉多出一层几何难度。