Add CorrespondenceCheckerBasedOnRotation for orientation-constrained RANSAC#7461
Open
jGiltinan wants to merge 5 commits intoisl-org:mainfrom
Open
Add CorrespondenceCheckerBasedOnRotation for orientation-constrained RANSAC#7461jGiltinan wants to merge 5 commits intoisl-org:mainfrom
jGiltinan wants to merge 5 commits intoisl-org:mainfrom
Conversation
|
Thanks for submitting this pull request! The maintainers of this repository would appreciate if you could update the CHANGELOG.md based on your changes. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Type
Motivation and Context
In structured environments, such as an overhead laser profiler mounted on an X-Y gantry or fixed above a conveyor belt, objects rest on an approximately flat surface. Their rotation about the Z-axis is unknown, but their orientation about the X and Y axes is physically constrained to within a small tolerance by gravity and the surface they rest on.
Existing Open3D correspondence checkers operate purely on local point geometry (edge lengths, point-to-point distance, surface normals). They have no mechanism to encode this kind of global orientation prior. As a result, RANSAC wastes iterations validating physically impossible, tilted or inverted orientations, and can become trapped in catastrophically wrong local minima, producing correct-looking local geometry fits that are globally flipped or upside-down which causes ICP to diverge.
Checklist:
python util/check_style.py --applyto apply Open3D code styleto my code.
updated accordingly.
results (e.g. screenshots or numbers) here.
Description
This PR introduces CorrespondenceCheckerBasedOnRotation, a new correspondence checker that allows developers to independently constrain the allowed rotation of a RANSAC hypothesis about any of the three Cartesian axes (X, Y, Z). Each axis is configured with a tolerance in radians. A value of -1 (the default) disables the check for that axis, making the checker flexible for a wide variety of structured scanning applications.
Example use:
The motivating case, along with sample results is summarized in a video: https://youtu.be/VuRbrNXATr8
For the benchmark results, the checker was tested on 3DBenchy registered against a synthetic laser scan, over 5 deterministic random seeds, single-threaded for determinism.
Key observations:
The code for the benchmark results is located at: https://github.com/jGiltinan/Open3D-Demonstrations