В конце концов, это кажется довольно простым:
def interpolate_image(rgbd, method='linear'):
locs = np.where(~np.isnan(rgbd))
vals = rgbd[~np.isnan(rgbd)]
grid = np.mgrid[0:rgbd.shape[0],0:rgbd.shape[1]]
return griddata(locs, vals, grid.T, method='linear')
Одно предостережение в том, что экстраполяция не работает, поэтому вблизи границ могут существовать постоянные NaN.