BUG: #2046 Add an epsilon margin to compute the m_ReachableOutputRegion
The application Superimpose crashed with a segmentation fault during
resampling. Investigation revealed that the interpolated index was out
of image bounds. The application uses the PHR mode and resamples the XS
image with a
otb::GridResampleImageFilter. This filter doesn't check
explicitly that input indexes are in the input buffered region. It
m_ReachableOutputRegion to crop the output region
processed. The problem appears because an output pixel is right on the
border of the input image extent, and when someone uses a nearest neighbor
interpolator, this one converts the continuous index to an
The solution was to introduce an epsilon margin to compute the
Closes #2046 (closed)
Classes and files
otbGridResampleImageFilter: Add new attribute
m_InterpolationMargin with corresponding get/set. Set it's default value to 0.0. Use it in processing.
Superimpose: Set the margin to 1e-9 when using nearest neighbor interpolation.
Added a new test for the Superimpose application with PHR images and nearest neighbor interpolation.
The copyright owner is CNES 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 -ion latest changes and commit