No need for tolerance check for radial distortion #464
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 is a proposed fix to #461.
The issue here is that with the unmodified code the radial distortion and undistortion operations are not being applied when the pixel value is very close to the origin.
Ironically, this is when distortion and undistortion is most likely to converge well, as, radial distortion this is just some multiplications and additions. Radial undistortion is about the same thing.
There is no division by a number close to zero anywhere where one should need to ensure a tolerance must be respected.
I modified the unit test to make it more realistic, by using non-zero distortion coefficients. Before the proposed fix, the test will fail, as distortion and undistortion are not true inverse of each other. That is because, before the fix, the distortion operation was applied, since the pixel value is above the tolerance, but the undistortion operation is not applied, since then the pixel value is below the tolerance.
With this fix, the distortion and undistortion are consistently applied close to the origin and this unit test passes.
Licensing
This project is mostly composed of free and unencumbered software released into the public domain, and we are unlikely to accept contributions that are not also released into the public domain. Somewhere near the top of each file should have these words: