fragments
: local geometric surfaces
Make fragments
- Register RGBD image pairs
- For adjacent RGBD images, an identity matrix is used as the initialization.
- For non-adjacent RGBD images, wide baseline matching is used as the initialization.
- Multiway registration
- The process of aligning multiple pieces of geometry in a global space.
- The input is a set of geometries (e.g., point clouds or RGBD images) {𝐏𝑖}.
- The output is a set of rigid transformations {𝐓𝑖}
- So that the transformed point clouds {𝐓𝑖𝐏𝑖} are aligned in the global space.
- Make a fragment
- Once the poses are estimated, RGBD integration is used to reconstruct a colored fragment from each RGBD sequence.
- Open3D implements a scalable RGBD image integration algorithm.
- Make ScalableTSDFVolume and integrate it with series of rgbd
Register fragments
Once the fragments of the scene are created, then align them in a global space.
Input arguments: ["path_dataset"]
should have subfolders fragments
which stores fragments in .ply
files and a pose graph in a .json
file.
- Preprocess point cloud
- Downsamples a point cloud to make it sparser and regularly distributed.
- Normals and FPFH feature are precomputed.
- The FPFH feature is a 33-dimensional vector that describes the local geometric property of a point. A nearest neighbor query in the 33-dimensinal space can return points with similar local geometric structures. See [Rasu2009] for details.
- Compute initial registration
- Computes a rough alignment between two fragments.
- If the fragments are neighboring fragments, the rough alignment is determined by an aggregating RGBD odometry obtained from Make fragments.
- Otherwise,
register_point_cloud_fpfh
is called to perform global registration. Note that global registration is less reliable according to [Choi2015].
- Pairwise global registration
- Uses RANSAC or Fast global registration for pairwise global registration.
- With proper configuration, the accuracy of fast global registration is even comparable to ICP. Please refer to [Zhou2016] for more experimental results.
- Multiway registration
- Update_posegraph_for_scene
- Builds a pose graph for multiway registration of all fragments.
- Each graph node represents a fragment and its pose which transforms the geometry to the global space.
- Optimize_posegraph_for_scene
Refine registration
Perform pairwise registration on the pairs detected by Register fragments. and then perform multiway registration.
Input arguments: ["path_dataset"]
should have subfolders fragments
which stores fragments in .ply
files and a pose graph in a .json
file.
- Fine-grained registration
- Down-sampling and estimating normals
- ICP registration
- point_to_point
- point_to_plane
- color [recommended]
- Optimize a joint photometric and geometric objective that locks the alignment along both the normal direction and the tangent plane.
- Colored ICP is sensitive to threshold.
- Color information prevents drift
- generalized
- Multiway registration
- Do the same process of step 7 with the local refined registration
Integrate scene