基本概念
三维重建是计算机视觉的一个重要研究方向,其目的是从二维图像中恢复出三维空间中的几何信息。
三维重建技术在许多领域都有广泛的应用,如计算机图形学、机器人视觉、虚拟现实、医学图像处理等。
三维重建的发展
- Multi-View Stereo (MVS) 多视角视觉重建
- Structure from Motion (SfM) 运动推断结构
- GANs (2017)
- NeRF (2020)
- Diffusion Model (2022)
- Gaussian Splatting (2023)
NeRF 神经辐射场
前序知识
- 3D 数据表示方式
- Voxel: 体素,三维空间中的一个立方体,每个立方体包含一个颜色值。
- Point Cloud: 点云,三维空间中的一个点,每个点包含一个颜色值。
- Mesh: 网格,三维空间中的一个三角形,每个三角形包含三个顶点。
- 3D 表达方式分类
- Explicit Representation: 显式表达,通过把光打在看得到的模型上,跟踪反射的光,完成最终成像。
- Implicit Representation: 隐式表达,通过神经网络,输入一个点,输出这个点是否在模型上。
- 3D 渲染方式
- Ray tracing 光线追踪
- 对物体的每个象素发射光,通过计算反射回镜头的光的信息,来渲染画面
- 优点:质量上限高,真实(反射折射阴影材质)
- 缺点:慢,难以预览,复杂
- Rasterization 光栅化
- 把镜头前的的物体从近到远投影(splat,溅射)到镜头
- 优点:快,预览视觉化简单
- 缺点:不真实,缺少(反射折射阴影材质)
神经辐射场定义
是一种能从一堆 2D 图片中,利用光线追踪,通过神经网络学到该场景的隐式表示法。
优势:
- 表达能力更强
- NeRF能够更好地处理复杂的光照效果,如半透明物体、反射和折射
- 可以精确捕捉细微的表面细节和材质特性
- 能够处理复杂的遮挡关系和视角依赖的外观变化
- 连续性表达
- 传统方法通常使用离散的几何表示(如网格、点云),而NeRF使用连续的神经隐式表达
- 这种连续表达使得渲染任意视角都能获得平滑的结果,不会出现离散采样带来的锯齿等问题
- 更少的存储空间
- 相比存储完整的几何和纹理信息,NeRF只需要存储神经网络的权重
- 对于复杂场景,这种表达方式通常更加紧凑
- 渲染质量
- 能产生更加真实的渲染效果,特别是在处理复杂光照和材质时
- 视角转换更加自然,没有传统重建中常见的伪影
- 简化的采集流程
- 只需要多视角的2D图像作为输入
- 不需要复杂的几何重建和材质获取过程
- 不需要专门的扫描设备,普通相机即可
缺点:
- 训练时间长
- 需要大量多视角的2D图像作为输入
- 需要高精度的相机位姿
- 需要处理遮挡问题
Gaussian Splatting
什么是高斯
- 高斯分布,又叫正态分布。
- 每个高斯点(Gaussian)可以理解为3D空间中的一个概率分布。
- 几何直观理解:可以将每个高斯想象成空间中的一个”软球体”或”椭球体”
渲染原理:
- 每个高斯被投影到2D图像平面时会形成一个2D高斯分布
- 多个高斯的贡献通过alpha合成进行混合
- 渲染过程类似于”泼点”(splatting),每个高斯对最终图像都有一定贡献
相比NeRF的优势:
- 稀疏表示:场景用离散的3D高斯点表示,而不是密集的神经网络
- 渲染速度快:可以实现实时渲染
- 训练效率高:训练时间显著shorter than NeRF
缺点:
- 表达能力有限,不如NeRF
- 需要大量高斯点来表示复杂场景
- 渲染质量受高斯点分布影响