3D Reconstruction Based on NeRF

GAMES Webinar 292-几何专题-姚遥-基于神经辐射场的三维重建_哔哩哔哩_bilibili

photogrammetry pipeline

Untitled

几何重建

Classical MVS

计算匹配

  • 逐个像素点的匹配
    • matching cost: SSD, NCC
  • 密度匹配
    • cost regularization: semi-global matching, propagation

classical MVS的问题:textureless areas, thin structure

MVSNet (ECCV 2018 oral)

Real-time: ~5s

R-MVSNet

MVSNet的问题:3D CNNs is memory consuming,不能用于大场景

解决方法:sequential regularization

Vis-MVSNet

可见性:有的像素点在其他视角下不可见

解决方法:显式的匹配概率和可见性建模

手机端重建:https://ar.code.com

Differentiable Rendering

渲染:3D → 2D

逆向渲染:2D → 3D

Untitled

  • Volume Rendering: e.g. NeRF
  • Surface Rendering: e.g. IDR

Untitled

MVSDF

可微渲染的问题:geometry-appearance ambiguity (IDR):不正确的几何也可以渲染出看起来靠谱的渲染

解决方法:

  • 几何先验:用MVSNet的点云进行初始化
  • regularizations:MVSNet的depth map加进来作为regularization

RegSDF

idea来源于传统graphics中的smoothness function,应用到regularization中需要考虑representation从mesh换成了SDF或者NeRF

  • Minimum surface constraint
  • Hessian smoothness

材质重建

NelLF (ECCV 2022)

Untitled

Env map的假设是无限远的环境光,而室内场景不适合进行这种假设。

用NelLF模拟入射光和BRDF(材质):

  • 完全的5D入射光场
  • 任何静态场景的直接/间接光照
  • 不需要做ray tracing & bouncing

Untitled

NelLF++ (ICCV 2023)

通过PBRinter-reflection,把NeRF和NelLF合在一起:光场=出射光场(NeRF)+入射光场(NelLF)

Untitled

Untitled

Future Works

  • material & lighting estimation
  • dynamic 3D reconstruction
  • point-based differentiable rendering
    • 以前点云的问题是不好做渲染,now: gaussian splatting
    • 点云优点:容易做编辑

概念

SfM

SfM的输入是一段motion或者一段2D图像序列,不需要任何相机的信息,相对位姿是需要在重建之前计算的。然后通过2D图之间的匹配可以推断出相机的各项参数。Corresponding points可以用SIFT,SURF来匹配,也可以用最新的AKAZE(SIFT的改进版,2010)来匹配。而Corresponding points的跟踪则可以用Lucas-Kanede的 Optical Flow 来完成。

在SfM中,误匹配会造成较大的Error,所以要对匹配进行筛选,目前流行的方法是RANSAC(Random Sample Consensus)。2D的误匹配点可以应用3D的Geometric特征来进行排除。

参考文章

Optical Flow

参考文章

MVS

COLMAP

COLMAP 是一种通用的运动结构 (SfM) 和多视图立体 (MVS) 管道,具有图形和命令行界面。它为有序和无序图像集合的重建提供了广泛的功能。该软件是在新的 BSD 许可下获得许可的。最新的源代码可在GitHub上获得。COLMAP 建立在现有作品的基础上,在 COLMAP 中使用特定算法时,请同时引用源代码中指定的原始作者。

Marching cubes

Marching cubes 是一种重建算法,具体步骤如下:

  1. 将一个3D几何体划分为若干个小正方体(体素化)。
  2. 判断每一个体素的顶点是否在3D几何体内。
  3. 通过体素顶点可以进行重建。

在存储方面,可以按照栅格顶点的状态进行分类。

参考文章

SDF

SDF是一种表面几何的表达方式。

Differentiable Rendering

传统的渲染过程其实就是从3D空间到2D空间的一个过程。反过来,我们希望从一张图片,得到三维的场景信息(几何数据、相机参数、光照参数等),这个从2D到3D的过程被称为逆向渲染。可微渲染是逆向渲染的一种方法。

可微渲染初始需要以下两个资源:

  • 参考图片(Ground truth):二维目标图片。可微渲染的目标就是使得渲染的结果无限接近这张参考图片。
  • 初始场景参数:可以是一个大致接近于真实场景的粗略的三维场景,也可以是完全随机的三维场景。

可微渲染两个部分:

  • 前向渲染:这和我们传统的渲染流程是一样的,都是根据场景参数渲染出一张二维图片。
  • 反向传播:我们做完前向渲染之后,需要将渲染结果与Ground truth做比较得到loss,再将梯度反向传播到场景参数中,实现优化。

传统的渲染管线做不到反向传递梯度。

参考文章

欧拉角,轴角,四元数

参考文章

3DV

StyleNeRF (ICLR 2021) «
Prev «
» Vision Transformer
» Next