This blog post is my learning notes for learning 3D reconstruction. Most of the content of this blog post comes from various tutorial blogs on the Internet. This blog post is only for my own learning records.
theoretical study
Visual 3D reconstruction = positioning and pose + dense reconstruction + surface reconstruction/mesh + texture map
The difference between SLAM and 3D reconstruction ( What is the difference between SLAM and 3D reconstruction? - Know ):
- sfm corresponds to an unordered image, while SLAM is generally ordered
- sfm does not require calibration, while SLAM generally requires
- sfm is offline, SLAM is online
Application Scenarios of 3D Reconstruction
colmap is the current state-of-the-art sfm and mvs framework. The 3D reconstruction introduced in this blog post is mainly the colmap framework
front end
shift feature detection and description
rear end
sfm combat
MVS algorithm
3D reconstruction actual combat colmap combined with opoenmvs
TSDF (truncated signed distance function)
If you get the following information:
- Original picture (multi-view)
- Corresponding depth information
- camera pose
- camera internal reference
The process of updating and combining TSDF calculates the TSDF value of each voxel step by step, and then stitches them together.
The so-called voxels are small squares one by one, which can eventually be combined into a 3D reconstruction result. As shown below. The result of 3D reconstruction will be put into a cube, and this cube is composed of voxels. Proceed as follows:
- Create a large empty area (volume)
- This area consists of many small areas, each called voxel
- Need to calculate the TSDF value of each voxel and its weight
As shown below. T is the meaning of truncation, which is set to a fixed value if it is too far or too close. The SDF value of a voxel is its distance to the nearest surface. Let a certain point X be one of the voxels, and the green line is the closest plane to it, and point P is the closest point to X on the plane, and the distance between them is SDF.
For truncated T, the closer to 0, the closer, and the closer to plus or minus 1, the farther away. positive and negative front and rear
Depth can be obtained through a depth map or a depth camera.
References
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
nice open source work
Summary of open source work:
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