The usual implementation is as a convolution filter based on the premise that the underlying data is regularly sampled.
The pain in the arse occassional reality is missing data and|or present but glitched|spiked data .. both of which require a "sensible infill" to continue with a convolution.
This is a nice implementation and a potentially useful bit of kit- the elephant in the room (from my PoV) is "how come the application domain is irregularly sampled data"?
Generally (engineering, geophysics, etc) great lengths are taken to clock data samples like a metronome (in time and|or space (as required most)).
I'm assuming that your gridded GeoTIFF data field is regularly sampled in both the X and Y axis?