# Most natural interpolation to simulate increasing distance?

Background: I'm generating multiple datasets with varying scales of resolution to simulate taking pictures from varying distances and then comparing image classification performances. For example original images at 32x32, then downsampling to 16x16 and measuring the decrease in classification performance.

I'm using Matlab's imresize function to accomplish this. The docs say by default that it uses bicubic interpolation. Now I'm not sure if my following question even makes sense, but what I'm wondering is, is there a type of interpolation method that best mimics the decrease in resolution of an object that would happen naturally if you moved a camera farther away from said object? There's many different choices for the interpolation method parameter, and I'm wondering if I should choose a different one. Thanks!

• What sort of features do you use? – A_A Feb 24 '18 at 8:08
• Just the pixels of the image itself – Austin Feb 25 '18 at 4:34

One typically interpolates going up, 16 $\times$16 to 32 $\times$ 32. Going down is low pass filtering (anti aliasing) and decimation. As you have acknowledged, this isn’t the same as the effect of distance. As long you understand that your original image was captured with a camera with a specific MTF, and sensor resolution, and are going to neglect scattering (which would require something like MODTRAN), your original image has been acquired with some angular resolution, $\theta_0$, your image has a linear spatial resolution $\Delta_0$ such that $$\Delta_0 = r_0 \theta_0$$ where $r_0$ is the distance that the image was acquired at. At some greater distance $r_g$, $\theta_0$ can be considered the same so, $$\Delta_g= \theta_0 r_g.$$ Given some coordinate system associated with the original system, you could use something like a Gaussian blur with a standard deviation related to $\Delta_g$, and resample. This doesn’t really help with a large depth of field.