第 13 章 3D 重建 (3D Reconstruction)
核心结论
-
Shape from X(§13.1):从阴影 / 纹理 / 焦点 / 散焦等单一线索恢复形状;学术方法。
-
3D 扫描(§13.2):激光扫描 / 结构光 / TOF;高精度但昂贵。
-
表面表示(§13.3):点云 / 网格 / 体素 / 隐式函数;选对表示是后续处理的关键。
-
网格处理(§13.4):简化 / 平滑 / 重新网格化 / 参数化。
-
点云处理(§13.5):配准 / 滤波 / 分割 / 特征。
-
体素表示(§13.6):规则网格;适合布尔运算 / 体素 CNN。
-
神经隐式表示(§13.7):NeRF / DeepSDF;新方向。
|
本章主旨
本章是"3D 重建章"——从各种输入(图像 / 激光 / TOF)重建 3D 模型。理解后才能做 3D 扫描 / 街景 / 文物数字化 / AR / 自动驾驶高精地图。 |
一、核心概念
本章围绕 7 个核心概念展开:Shape from X → 3D 扫描 → 表面表示 → 网格处理 → 点云处理 → 体素 → 神经隐式。
| 概念 | 定义 + 重要性 | 实现提示 |
|---|---|---|
Shape from X |
从阴影 / 纹理 / 焦点等线索恢复形状;学术方法。 |
§13.1;理解多线索融合。 |
3D 扫描 |
激光 / 结构光 / TOF;高精度(mm 级)。 |
§13.2;文物 / 工业 / 医疗。 |
表面表示 |
点云 / 网格 / 体素 / 隐式;选对表示是关键。 |
§13.3;后续处理的基础。 |
网格处理 |
简化(QEM)/ 平滑(拉普拉斯)/ 重新网格化。 |
§13.4;减少冗余 / 提高质量。 |
点云处理 |
配准(ICP)/ 滤波 / 分割 / 特征(FPFH)。 |
§13.5;LiDAR / SfM 输出。 |
体素表示 |
规则 3D 网格;适合布尔运算 / CNN。 |
§13.6;3D 打印 / 体素分类。 |
神经隐式 |
NeRF / DeepSDF;新方向。 |
§13.7;高质量重建 + 渲染。 |
二、详细笔记
2.1 Shape from X(§13.1)
What:从单一视觉线索(阴影 / 纹理 / 焦点 / 散焦)恢复 3D 形状。
Why:理解多线索融合;学术研究方向;某些场景(无纹理 / 单光源)特别有效。
How:
-
Shape from Shading(§13.1.1):单图 + 反射模型 → 表面法向量。
-
Shape from Texture(§13.1.2):纹理梯度(近大远小)→ 深度。
-
Shape from Focus(§13.1.3):不同焦距成像 → 深度。
-
Photometric Stereo(§13.1.1):多光源单相机 → 法向量场。
|
Shape from X 的局限
|
When:学术研究;单图 / 单光照的特殊场景。
Example*:OpenCV cv2.solvePnPRansac 估计光源方向 + 法向量。
2.2 3D 扫描(§13.2)
What:用专用硬件(激光 / 结构光 / TOF)获取高精度 3D 数据。
Why:文物 / 工业 / 医疗需要 mm 级精度;CV 方法通常只能 cm 级。
How:
扫描技术(§13.2):
-
激光扫描(LiDAR):飞行时间;远距离;自动驾驶。
-
结构光:投射已知图案;中距离;人脸扫描。
-
TOF 相机:飞行时间;近距离;手机后置 TOF。
-
立体相机:基于立体匹配;中近距离;Kinect。
点云配准(§13.5):多次扫描融合 → ICP(迭代最近点)。
|
3D 扫描的工程权衡
|
When:文物数字化;工业检测;自动驾驶;AR;人脸识别。
Example*:Velodyne LiDAR;Azure Kinect;iPhone Face ID;Polycam 手机 3D 扫描。
2.3 表面表示(§13.3)
What:用不同数据结构表示 3D 表面。
Why:选对表示是后续处理(渲染 / 简化 / 配准)的关键。
How:
表示对比(§13.3):
-
点云:无序点集合;LiDAR / SfM 输出。
-
网格(mesh):顶点 + 边 + 面;最常用。
-
体素(voxel):规则 3D 网格;适合布尔运算。
-
参数化:UV 贴图(纹理映射)。
-
隐式函数:
f(x, y, z) = 0;NeRF / SDF。
|
表示选择的影响
|
When:3D 建模;游戏 / 电影;3D 打印;机器人仿真。
Example*:Open3D / trimesh(网格);pointcloud(点云);PyVista(可视化)。
2.4 网格处理(§13.4)
What:简化 / 平滑 / 重新网格化 / 参数化网格。
Why:原始扫描网格噪声大、面数多;需要后处理。
How:
网格处理(§13.4):
-
简化:QEM(Quadric Error Metric)减少面数。
-
平滑:拉普拉斯平滑 / 双边滤波。
-
重新网格化:改善三角形质量。
-
参数化:UV 映射(纹理贴图)。
|
网格简化的工程意义
|
When:3D 扫描后处理;游戏 / 电影资产;3D 打印。
Example*:trimesh 库;MeshLab GUI;Blender 修模。
2.5 点云处理(§13.5)
What:点云的配准 / 滤波 / 分割 / 特征提取。
Why:LiDAR / SfM 输出是点云;处理后才能用。
How:
点云处理(§13.5):
-
ICP(Iterative Closest Point):点云配准(已知初始对齐)。
-
统计滤波 / 体素下采样:去噪 + 简化。
-
RANSAC 平面分割:检测地面 / 墙面。
-
FPFH 特征:点云局部特征;用于匹配 / 配准。
|
点云 vs 网格
|
When:LiDAR 处理;SfM 输出后处理;自动驾驶感知;机器人导航。
Example*:Open3D / pointcloud 库;PCL(Point Cloud Library);CloudCompare GUI。
2.6 体素表示(§13.6)
What:规则 3D 网格;每个体素是 1 个 0/1 或实数值。
Why:规则结构便于 CNN;布尔运算简单。
How:
体素应用(§13.6):
-
3D 打印:STL 体素模型。
-
体素 CNN(VoxNet / 3D U-Net):3D 分类 / 分割。
-
布尔运算(CSG):3D 建模 / 游戏。
|
体素的局限
|
When:3D 打印;医学影像;体素 CNN;游戏。
Example*:Open3D 体素;trimesh 网格 ↔ 体素;MinkowskiEngine 稀疏 3D CNN。
2.7 神经隐式表示(§13.7)
What:用神经网络表示 3D 表面 / 体密度;新方向。
Why:拓扑自由;细节自适应;NeRF 实现照片级渲染。
How:
神经隐式(§13.7):
-
NeRF(2020):MLP 输入 5D(位置 + 视角)→ 输出颜色 + 体密度。
-
DeepSDF(2019):MLP 表示有符号距离函数(SDF)。
-
Occupancy Networks(2019):MLP 表示占用率。
-
3D Gaussian Splatting(2023):高斯泼溅;实时渲染 SOTA。
|
神经隐式的工程权衡
|
When:高质量 3D 重建;照片级渲染;AR / VR 资产。
Example*:nerfstudio / instant-ngp;gaussian-splatting 仓库;Luma AI 手机 3D 扫描。
三、关键图表
视觉图表
非可视化条目
|
非可视化条目(表 / 算法)
|
核心公式对照表
|
核心公式对照表
|
四、思维导图
mindmap
root((第 13 章 3D 重建))
ShapeFromX
阴影纹理焦点
光度立体
3D扫描
LiDAR
结构光
TOF
表面表示
点云网格
体素隐式
网格处理
简化平滑
重新网格化
点云处理
ICP配准
滤波分割
体素
3DCNN
CSG
神经隐式
NeRF
DeepSDF
3DGS
五、重点与易错点
-
Shape from X 局限明显:工程级 3D 扫描需专用硬件(LiDAR / 结构光)。
-
LiDAR 是自动驾驶必备:远距离高精度;与相机融合是趋势。
-
点云 → 网格是标准流程:Poisson Surface Reconstruction 是经典算法。
-
网格简化保留外观:QEM 是工业标准。
-
体素分辨率受限:稀疏表示(Octree / VDB)节省内存。
-
NeRF 是 2020 后突破:照片级渲染;3DGS 进一步提速。
-
神经隐式 vs 传统:拓扑自由 vs 渲染快;选对场景。
-
跨章衔接:第 11 章 SfM 提供稀疏点云;第 12 章深度估计提供稠密深度;本章把它们转为 3D 模型;第 14 章 IBR 用 3D 模型做新视角合成。