学习笔记之——视觉三维重建

本博文为本人学习三维重建的学习笔记,本博文的大部分内容来源于网络各类教程博客,本博文仅供本人学习记录用

理论学习

视觉三维重建=定位定姿+稠密重建+surface reconstruction/mesh+纹理贴图

 SLAM与三维重建的区别(SLAM和三维重建有什么区别? - 知乎):

  1. sfm对应是无序的图像,而SLAM一般是有序的
  2. sfm不需要标定,而SLAM一般要
  3. sfm是offline,SLAM是online的

三维重建的应用场景

 colmap是目前state-of-the-art的sfm与mvs框架。本博文介绍的三维重建主要是colmap框架

前端

shift特征检测与描述

后端

sfm实战

MVS算法

三维重建实战colmap结合opoenmvs

TSDF (truncated signed distance function)

假如获得以下信息:

  1. 原始图片 (多视角)
  2. 对应的深度信息
  3. 相机的位姿
  4. camera内参

TSDF的更新与组合的过程,一步一步计算各个体素(voxel)的TSDF值,再把他们拼接起来。

而所谓的体素(voxel)就是一个一个的小方块,最终可以拼成3D重建的结果。如下图所示。三维重建的结果会放到一个立方体当中,而这个立方体就是由voxel组成的。步骤如下:

  • 创建一个大的空白区域(volume)
  • 这个区域由很多个小区域组成,每个叫voxel
  • 需要计算每个voxel的TSDF值及其权重

如下图所示。T就是截断的意思,太远或者太近都设置为定值。而一个体素的SDF值就是它到最近的表面的距离。设某个点X,为其中一个体素,而绿色线是离它的最近的一个平面,而P点则是平面上离X最近的一个点,他们之间的距离就是SDF。

而对于截断T,越接近0就是越近,越接近正负1就是越远。正负为面的前后

深度可以通过深度图或者深度相机获取。

 

参考资料

3D视觉工坊

GitHub - hku-mars/r3live: A Robust, Real-time, RGB-colored, LiDAR-Inertial-Visual tightly-coupled state Estimation and mapping package

GitHub - cdcseacave/openMVS: open Multi-View Stereo reconstruction library

GitHub - colmap/colmap: COLMAP - Structure-from-Motion and Multi-View Stereo

COLMAP — COLMAP 3.8 documentation

【三维重建基础与算法】2022最新首发!唐宇迪大佬全面讲解三维重建基础与算法,草履虫都能学会!可做毕设,能写简历-人工智能、机器学习、深度学习、项目实战_哔哩哔哩_bilibili

不错的一些开源工作

开源工作的总结:

https://github.com/wuxiaolang/Visual_SLAM_Related_Research

https://github.com/tum-vision/lsd_slam

https://link.springer.com/content/pdf/10.1007/978-3-319-10605-2_54.pdf

https://github.com/alejocb/dpptam

https://arxiv.org/pdf/1909.04250.pdf

https://github.com/HKUST-Aerial-Robotics/DenseSurfelMapping

https://wang-kx.github.io/pdf/quadtree_mapping.pdf

https://github.com/HKUST-Aerial-Robotics/open_quadtree_mapping

猜你喜欢

转载自blog.csdn.net/gwplovekimi/article/details/127407736