I am trying to understand the concept of bilinear interpolation. For example in the case where bilinear interpolation is used to rotate an image (let's say by 45 degrees), and then we rotate it back by the same amount. Is the resulting image the same as the original? What about when an image is scaled up by a factor c, and then scaled down by the same factor c, is the resulting image the same as the original image?
1 Answers
In general, you will not get back the same values. I'll try and explain empirically...
Imagine a white rectangle on a black background, that will only have values of 255 (white) and 0 (black) in it. When you rotate it, the pixels on the edges of the rectangle will fall between pixels in the new image. At that point, you will end up interpolating between 0-255 and get some entirely new value, say 172. And now you immediately have a problem because bilinear interpolation has introduced a new value that wasn't in the original image and when you rotate back, you will end up interpolating between that new 172 and 255 or 0, which will give you yet another new value not present in the original image.
I hope that helps - it is the reason why you should use Nearest Neighbour interpolation when your pixels represent say classes in a Supervised Classification. You start off with water in class 0 and sand on the beach in class 17 beside it, and if you use Bilinear Interpolation to resize or geo-correct, you get a result of class 7 which might represent wheat - and you will rarely find wheat growing on a beach!

- 191,897
- 31
- 273
- 432