SFM/MVS_NERF_3DGAUSS三维重建

发布于:2025-04-13 ⋅ 阅读:(19) ⋅ 点赞:(0)

一、SFM/MVS

colmap是一种经典的SFM/MVS开源框架,Correspondence Search时,首先对所有图片进行特征提取Feature Extraction,然后进行特征匹配match,匹配分为暴力两两匹配和按序列匹配等的多种方式,最后进行几何校验Geometric Verification,通过对极几何等约束删除异常匹配
Incremental Reconstruction时,首先选取匹配较好两帧进行初始化nitialization(选取策略优化),类似ORBSLAM根据F/H比值选取分解F或H矩阵进行初始化;再不断(增量式)选取较好的下一帧(选取策略优化)使用PNP(3D-2D)估计下一帧位姿注册mage Registration和三角化Triangulation;然后不断地进行捆集优化Bundle Adjustment(优化过程中也会不断三角化)和剔除异常值Outlier Filtering
在这里插入图片描述

二、nerf

隐式表达:输入位置x=(x,y,z)和光线入射角度d=( θ , Φ \theta,\Phi θ,Φ),输出光线(r(t)=o+td)方向离散N个点的RGB颜色和密度σ,颜色是关于位置和入射角的函数,密度是关于位置的函数。颜色的真实从图片上得到,理论计算公式如下:
在这里插入图片描述

离散化
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后,由图像像素作为观测、离散N个点的RGB颜色和密度σ计算估计值,构建误差函数
在这里插入图片描述
在这里插入图片描述

获取三维点时,通过每束光线得到N个离散密度,密度最高的认为是三维点,所以它是一种隐式表达
缺点:

  • query过程需要大量的采样,渲染方法成本很高
  • 用了大型多层MLP,运算量大,占用内存高
  • 不容易编辑
  • 不能显式对三维空间几何建模
  • 导致遗忘问题

三、3D gauss

流程如下图,基于SFM(如colmap)得到3D点云地图,初始化Initialization为3D Gauss地图,即每个点用如下公式表示(scaling matrix 𝑆 and rotation matrix 𝑅);然后将3D点投影Projection到2D图像,对于同一条线束上点使用Nerf渲染rasterize方式计算颜色,不同的是对不同Tile进行渲染Differentiable Tile Rasterizer,然后与图像构建残差,反向传播优化3D Gauss地图,使用Adaptive Control of Gaussians策略膨胀under-reconstructed区域和腐蚀over-reconstructed

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

优点

  • 快速渲染和丰富的优化:高达400FPS的速度渲染,可视化和优化速度更快
  • 有明确空间范围的建图:
  • 显式地图:

四、深度估计

DUST3R

框架如下图,推理流程类似深度估计,帧间通过information sharing构建约束,推理输出第1帧下点云,训练时根据真值点云构建
在这里插入图片描述

推理:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
训练:
loss:
3D Regression loss:X为真值点云,可通过激光雷达获得
在这里插入图片描述
在这里插入图片描述

Confidence-aware loss:
在这里插入图片描述
应用:
Point matching:
使用最近邻方法进行匹配:
在这里插入图片描述
Recovering intrinsics:
恢复内参
在这里插入图片描述
Relative pose estimation
通过类似ICP方法得到帧间相对位姿
在这里插入图片描述
Absolute pose estimation:
方法1:使用3D-2D PnP方法估计
方法2:根据估计的相对位姿推算并恢复其尺度

深度估计+SFM/MVS

单帧进行深度估计,即监督学习;使用SFM/MVS计算位姿,构建帧间自监督

参考文献

  1. Structure-from-Motion Revisited
  2. NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
  3. 3D Gaussian Splatting for Real-Time Radiance Field Rendering
  4. DUSt3R: Geometric 3D Vision Made Easy