Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No need for tolerance check for radial distortion #464

Merged
merged 2 commits into from
Nov 8, 2023

Conversation

oleg-alexandrov
Copy link
Collaborator

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:

This work is free and unencumbered software released into the public domain. In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain.

  • [ x] I dedicate any and all copyright interest in this software to the public domain. I make this dedication for the benefit of the public at large and to the detriment of my heirs and successors. I intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law.

Copy link
Collaborator

@acpaquette acpaquette left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall looks good, a couple formatting changes need and one potential concern from test changes

src/Distortion.cpp Outdated Show resolved Hide resolved
src/Distortion.cpp Outdated Show resolved Hide resolved
tests/DistortionTests.cpp Show resolved Hide resolved
@acpaquette acpaquette merged commit 4c8ce70 into DOI-USGS:main Nov 8, 2023
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants