第 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 的局限
      • 需要严格的光照 / 纹理假设。

      • 精度通常低(cm 级);不适合工程级 3D 扫描。

      • 主要用于学术研究 / 单一场景的特殊应用。

      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 扫描的工程权衡
      • LiDAR:远(100m+);精度 cm 级;贵;自动驾驶必备。

      • 结构光:中(10m);精度 mm;适合室内 / 人脸;Kinect / iPhone Face ID。

      • TOF:近(5m);精度 mm-cm;手机后置 TOF;实时。

      • 立体:依赖纹理;无纹理场景失效。

      When:文物数字化;工业检测;自动驾驶;AR;人脸识别。

      Example*:Velodyne LiDAR;Azure KinectiPhone Face IDPolycam 手机 3D 扫描。

      2.3 表面表示(§13.3)

      What:用不同数据结构表示 3D 表面。

      Why:选对表示是后续处理(渲染 / 简化 / 配准)的关键。

      How

      表示对比(§13.3):

      • 点云:无序点集合;LiDAR / SfM 输出。

      • 网格(mesh):顶点 + 边 + 面;最常用。

      • 体素(voxel):规则 3D 网格;适合布尔运算。

      • 参数化:UV 贴图(纹理映射)。

      • 隐式函数f(x, y, z) = 0;NeRF / SDF。

      表示选择的影响
      • 点云:易获取;难渲染。

      • 网格:渲染友好;拓扑难改。

      • 体素:规则结构;CNN 友好;分辨率受限。

      • 隐式:拓扑自由;NeRF 渲染好;离散化慢。

      When:3D 建模;游戏 / 电影;3D 打印;机器人仿真。

      Example*:Open3D / trimesh(网格);pointcloud(点云);PyVista(可视化)。

      2.4 网格处理(§13.4)

      What:简化 / 平滑 / 重新网格化 / 参数化网格。

      Why:原始扫描网格噪声大、面数多;需要后处理。

      How

      网格处理(§13.4):

      • 简化:QEM(Quadric Error Metric)减少面数。

      • 平滑:拉普拉斯平滑 / 双边滤波。

      • 重新网格化:改善三角形质量。

      • 参数化:UV 映射(纹理贴图)。

      网格简化的工程意义
      • 原始扫描:数百万面 → GPU 渲染慢。

      • 简化到 1-10 万面:保留外观 + 实时渲染。

      • QEM 是工业标准(MeshLab / Blender)。

      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 网格
      • 点云:简单(点数组);无拓扑;难渲染。

      • 网格:含拓扑(边 / 面);易渲染;难获取。

      • 通常:点云 → 网格重建(Poisson Surface Reconstruction)。

      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 建模 / 游戏。

      体素的局限
      • 分辨率受限:256³ 体素已需 GB 内存。

      • 1024³ 体素需 TB 内存——不可行。

      • 通常用稀疏体素(Octree / VDB)节省空间。

      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。

      神经隐式的工程权衡
      • 优点:拓扑自由;细节自适应;照片级。

      • 缺点:训练慢;推理慢(NeRF 需多视角采样)。

      • 现代:Instant-NGP / 3DGS / NeuS 实时优化。

      When:高质量 3D 重建;照片级渲染;AR / VR 资产。

      Example*:nerfstudio / instant-ngpgaussian-splatting 仓库;Luma AI 手机 3D 扫描。

      三、关键图表

      视觉图表

      图 13-1
      Figure 1. 图 13-1:Shape from Shading
      图 13-2
      Figure 2. 图 13-2:3D 扫描流程
      图 13-3
      Figure 3. 图 13-3:网格简化(QEM)
      图 13-4
      Figure 4. 图 13-4:NeRF 渲染

      非可视化条目

      非可视化条目(表 / 算法)
      编号 内容摘要

      表 13.1

      3D 扫描技术对比(LiDAR / 结构光 / TOF / 立体)。

      表 13.2

      表面表示对比(点云 / 网格 / 体素 / 隐式)。

      式 13-1 至 13-12

      Shape from Shading / SDF / Poisson 公式。

      列表 13.1-13.x

      Open3D / trimesh / nerfstudio 示例代码。

      核心公式对照表

      核心公式对照表
      概念 公式

      Shape from Shading

      \(I = \rho \cdot (\mathbf{n} \cdot \mathbf{l})\)

      有符号距离函数 (SDF)

      \(\text{SDF}(\mathbf{x}) = \pm \text{距离到最近表面}\)

      NeRF 体密度

      \(\sigma(\mathbf{x}), \mathbf{c}(\mathbf{x}, \mathbf{d}) = \text{MLP}_\theta(\mathbf{x}, \mathbf{d})\)

      体渲染积分

      \(C(\mathbf{r}) = \int T(t) \sigma(\mathbf{r}(t)) \mathbf{c}(\mathbf{r}(t), \mathbf{d}) dt\)

      四、思维导图

      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 模型做新视角合成。