Implementation of Iterative Closest Point and Laplacian Mesh Editing in Python.
Iterative closest point algorithm is used in point cloud registration to merge multiple point clouds together. It works by finding out pairwise corrospondences between source and target point cloud and finding out the transformation such that
| # Points | SVD | Point to Point | Point to Plane | |||
|---|---|---|---|---|---|---|
| Time | w/o KD-Tree | w/ KD-Tree | w/o KD-Tree | w/ KD-Tree | w/o KD-Tree | w/ KD-Tree |
| 100 | 0.005 | 0.004 | 1.42 | 1.46 | 0.054 | 0.056 |
| 1000 | 0.179 | 0.029 | 8.245 | 8.091 | 0.453 | 0.060 |
| 10000 | 24.18 | 0.768 | 171.0 | 224.5 | 21.48 | 5.535 |
The benchmarks above are only run for a single point cloud. Ideally they should be run on a large number of point clouds to better understand the runtime and limitation of different methods.
❯ python icp.py --help
usage: icp.py [-h] [--file FILE] [--kd_tree] [--algorithm {svd,lsqr_point,lsqr_plane}] [--iters ITERS]
options:
-h, --help show this help message and exit
--file FILE
--kd_tree
--algorithm {svd,lsqr_point,lsqr_plane}
--iters ITERSLaplacian mesh editing is a commonly used method for deforming meshes naturaly by defining regions of interest and moving a handle to transfrom all the vertices in the ROI.
❯ python laplacian_mesh_editing.py --help
usage: laplacian_mesh_editing.py [-h] [--file FILE] [--boundary_file BOUNDARY_FILE] [--handle_idx HANDLE_IDX] [--handle_delta HANDLE_DELTA HANDLE_DELTA HANDLE_DELTA]
options:
-h, --help show this help message and exit
--file FILE
--boundary_file BOUNDARY_FILE
--handle_idx HANDLE_IDX
--handle_delta HANDLE_DELTA HANDLE_DELTA HANDLE_DELTAThe Spot cow model was taken from Keenan Crane's 3D model repository

