When I last left you, the jury was out on the issue of whether the bilinear interpolation downsizing algorithm in Photoshop was the same as the one in Matlab. The jury is back.
“Mr. Foreman, have the jury reached a verdict?”
“We have, your honor.”
“May I hear it?”
“The algorithms are wildly different, as indicated by the spectra and rms value of downsampled noise images.”
“I thank and excuse you all.”
Here’s a graph that says a lot (the noise was measured in a space with the same nonlinearity as it the one in which it was originally generated):
There’s good news; below 50%, the noise is pretty much in line with where photographic equivalency says it should be. At ratios near 100%, there’s less noise than we’d think, and at numbers between 50.1% and about 75%, there’s more noise than we’d think.
There is a discontinuity in the curve at 50%. I’ve plotted noise measurements for 49.9%, 50%, and 50.1% magnification. 50% and 49.9% are just about on top of one another, but 50.1% is substantially noisier.
We can learn something by looking at the spectra of some of the images.
There’s quite a bit of high frequency rolloff at 95% magnification:
Less at 90%:
Less at 80%:
Hardly any at 70%:
And flat at 50%:
The curves stay flat below that.
From the rms noise and spectral curves, it appears that neither Matlab nor Photoshop are just picking the four points in the input image nearest to the required point in the output image, Matlab seems to do that if power-of-two reduction ratios aren’t used, but also seems to ignore points in the input image that are right over points in the output image. If they didn’t, for reduction ratios that consisted entirely of those points, there would be no noise reduction at all.
What’s Photoshop doing? Anybody who knows, please sing out. I’m sure they’re not lying when they say they are using bilinear interpolation, but, from the low noise at high reduction ratios, they’re using a lot more than four points at those ratios.
Next up: Photoshop’s Bicubic Sharper.