Enhancement of OpticalCalibration
Summary
This MR modifies OpticalCalibration application
Rationale
In the current implementation, the following is not right:
- The computation of the
atmo.pixsize
value (float) is not deterministic, which is a big issue when we want to reproduce things, - The "atmo" parameter group is used only when "level" is "toc", but the parameters group is always enabled.
We discovered that adding some tests in pyotb to cover the summarize()
method that enables to summarize OTB pipelines or applications in JSON format (see discussion here).
Implementation Details
Only the code of the application is changed (otbOpticalCalibration.cxx
).
Regarding the non-deterministic issue: we have removed vnl_rand
that was used to select the pixel of which to evaluate the pixel size, instead we use the next pixel after the center of the image.
Regarding the unused "atmo" parameter group, we just disable/mandatoryoff/clearvalue the "atmo.*" parameters in DoUpdateParameters()
Additional notes
We noticed that computing pixsize
from the central pixel leads to NaN
, probably because of the way GroundSpacingImageFunction
works. This is why we use the next pixel coordinate. We have tested the new implementation against images with odd pixel size and it works well. We think the old implementation has one chance to fail when the randomly-selected pixel was in the center (1 chance over N
, with N
the number of pixels in the image. But still!)
Copyright
The copyright owner is INRAE and has signed the ORFEO ToolBox Contributor License Agreement.
Check before merging:
- All discussions are resolved
- At least 2
👍 votes from core developers, no👎 vote. - The feature branch is (reasonably) up-to-date with the base branch
- Dashboard is green
- Copyright owner has signed the ORFEO ToolBox Contributor License Agreement
- Optionally, run
git diff develop... -U0 --no-color | clang-format-diff.py -p1 -i
on latest changes and commit