基于体素的三维重建的核心思想——A Volumetric Method for Building Complex Models from Range Images 阅读笔记

前言

基于体素的三维重建方法,在重建效果,鲁棒性等都有自己的优势,也被很多热门的三维重建方法所使用,如BundleFusion、KinectFusion等。这篇于1996年发表的论文《A Volumetric Method for Building Complex Models from Range Images》,可以说是这一领域的“鼻祖论文”了,想从算法层面好好理解基于体素的三维重建,一定绕不开对这篇论文的学习。

基于体素的三维重建的核心思想——A Volumetric Method for Building Complex Models from Range Images 阅读笔记_第1张图片(更多示例见BundleFusion官网)

关键词:Cumulative Weighted Signed Distance Function,Isosurface

1. Introduction

这里提到了一个range image的概念,其实就可以理解为depth map深度图。

我们可以通过range image和三角测量去获取到被探测物体的range surface,这个词我没有找到合适的中文翻译,但是看对应的图,指的就是一个物体的三角面片形式。不过这种方法的重建效果一般,参考《视觉SLAM十四讲第二版》的7.6.2节,可以得到一些解释。

一个理想的表面重建算法应该有如下特点:

  1. 能够表达深度的不确定性,即合理地表达噪声
  2. 充分利用所有深度数据
  3. 无序增量式,也就是说我随时可以新增一张任意位姿的深度图,也能重建进去
  4. 快且不吃内存
  5. 鲁棒
  6. 不限重建物体的形状
  7. 可以填补空洞

本文使用的方法,具有上述所有特点。

2. Previous Work

3. Volumetric Integration

3.1 基本定义

  1. 定义 x x x为每一个voxel的位置, x ∈ R 3 x\in R^3 xR3

  2. 对于每一张深度图,使用sdf函数 d ( x ) d(x) d(x)和权重函数 w ( x ) w(x) w(x)表示;

  3. sdf函数的定义为:

signed distance of each point x to the nearest range surface along the line of sight to the sensor.

这其中的sdf到底是什么呢?参考这篇文章中的一张图片:
基于体素的三维重建的核心思想——A Volumetric Method for Building Complex Models from Range Images 阅读笔记_第2张图片不妨把一个体素看成一个点A,光心为O,射线OA与等值面的交点为B,AB的长度就是sdf,如果A在等值面外,则sdf为正,反之为负。

  1. 对于整体的场景,使用累积sdf函数 D ( x ) D(x) D(x)和累积权重函数 W ( x ) W(x) W(x)表示,整体场景和所有深度图的关系是:

(公式省略)

  1. 基于算法增量式的特点,整体场景与新增的第i张深度图的关系是

(公式省略)

3.2 分维度的讨论

3.3 等值面

最终我们解方程 D ( x ) = 0 D(x)=0 D(x)=0,得到的解 x x x即为物体的表面。

5. Implementation

5.2.3

最终,需要使用Marching Cubes算法来生成mesh的结果,这个方法的学习见我的另一篇笔记基于体素的三维重建的最终结果——Marching Cubes算法学习笔记。

你可能感兴趣的:(BundleFusion)