isl-org / isl-org/Open3D

Algorithm documentation for Point-to-plane ICP

Open
#6,392 6 comments 0 reactions 0 assignees View on GitHub
question
Dominant language
C++
Stars
14k
Forks
2.6k
Avg merge
5d 18h
Merged PRs (30d)
6

Description

### Checklist

- [X] I have searched for [similar issues](https://github.com/isl-org/Open3D/issues).
- [X] For Python issues, I have tested with the [latest development wheel](http://www.open3d.org/docs/latest/getting_started.html#development-version-pip).
- [X] I have checked the [release documentation](http://www.open3d.org/docs/release/) and the [latest documentation](http://www.open3d.org/docs/latest/) (for `master` branch).

### My Question

I was trying to understand the approach used in Open3D to optimise the Point-to-plane ICP objective:
http://www.open3d.org/docs/release/tutorial/pipelines/icp_registration.html#Point-to-plane-ICP

The documentation points only to [[ChenAndMedioni1992]](https://doi.org/10.1016/0262-8856(92)90066-C) and [[Rusinkiewicz2001]](https://doi.org/10.1109/IM.2001.924423). In both references, the choice of optimiser (given a set of correspondences), seems to be left to the discretion of the reader. Non-linear optimisation with Levenberg-Marquardt is mentioned as an option and so is a single step linearised problem solution.

In OpenCV, it looks like a Gauss-Newton optimiser is used:
https://docs.opencv.org/4.x/d7/dbe/kinfu_icp.html

In Open3D, after reading through the code, it seems that a one-step linearised problem is solved:
https://github.com/isl-org/Open3D/blob/f1a0f3edd6b6a7d96352f43f83844111e8e9ea35/cpp/open3d/pipelines/registration/TransformationEstimation.cpp#L59-L90

I guess this is the same as a single step of Gauss-Newton but this wasn't entirely clear to me.

It would be great if additional information would be provided on the matter, either in the overall documentation or directly as comments in the source code for this function.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.