Thanks a ton people!!!
ExtremelyRandomizedTrees.jl: Might be really good, but errored a lot on version 4.
ApproXD.jl: Very cool, I'll come back to that later, but for now: "What Lininterp cannot do: Multidimensional extrapolation" which I need (and accept is prone to silliness). Plus, according to the examples, the known xdata needs to be on a grid. My x,y,z are not equally spaced that way, they are scattered.
compute the distances: I started with that, and in light of these results I might fall back to doing just that.
Polyharmonic Splines: does exactly what I want, but not faster than just distances (but probably a lot more accurate).
CHull.jl: might be awesome for this, but I didn't quickly see how I can use it to interpolate and extrapolate.
I feel like I owe you guys some background: I have some color-map functions that take a value, let's call it X (for some 0<X<1 and for some -pi/2<X<pi/2) and return an RGB. I need to use these to convert images that have colors that are similar (but not always identical) to the RGB values from these color-maps back to the value (X) that would have resulted in said RGB (so it's like the inverse of those color-map functions). After much trial and error, I think that since the images I want to convert this way are all 8-bit, the fastest way would be to construct a lookup table for all 2^(8*3) possible RGB combinations. This table (Dict) will take any RGB value from those images I need to convert and return X. This makes sense because I have only 4 such color-map functions, and potentially endless amounts of images to convert (currently a couple of tera).
So I think I'll use simple distances, run that once, save those lookup tables and use them again and again on new images.