structured_light: GreyCodePattern 16-bit support and performance improvements #3992
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.
This PR aims to greatly improve performance of the GreyCodePattern algorithm in the StructuredLight module. It does so by caching and pre-calculating a bunch of stuff needed for the computation and instead of doing manual looping and indexing over the matrices it leverages built-in opencv functions to automatically parallelize work (as well as doing some manual parallelization). Additionally, thanks to the fact that it is using opencv functions, it gains the ability to correctly process 16-bit images, which is a plus.
Work done in more detail:
Manual testing was done to ensure that the calculated results are correct, both for generation of the patterns and for decoding, in both Debug and Release mode, using real world data.
Pull Request Readiness Checklist
See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request
Patch to opencv_extra has the same branch name.