[gdal-dev] GDALFillNodata() changing pixels outside valid image boundary

Frederico Liporace liporace at gmail.com
Sat Nov 6 15:28:33 PDT 2021


Even,

Checked the code and it seems that the criteria for a nodata (ND)
pixel to be interpolated is that its distance to a valid pixel to be
less than dfMaxSearchDist (rasterfill.cpp:803)

This means that a ND pixel outside the valid image boundary will be
marked to be interpolated if it is close enough to the valid image
area. The current value for dfMaxSearchDist in the geolocation array
backmap is hard-coded to 3 pixels, which creates the "border" effect I
mentioned in issue #4707.

I could try for instance removing the pixel from the filling mask if
in the last scanned line a direct pixel neighbors' LastY is nNoDataVal
but I'm not sure that will be a general solution.

Fred

PS. I submitted a DRAFT PR with the WIP changes in the backmap
implementation and had no idea that this would start all CI workflows.
Please let me know if this is a problem, I may delete the PR and
submit a new one when finished.


More information about the gdal-dev mailing list