My First Idea!
Well, not really my first idea…
Problem
Bicubic interpolation always seems disappointing to me when trying to scale images to much larger sizes, going from screen resolutions to print resolutions for example.
Idea
Start with a large repository of high-quality photographic images (like all Flickr images). From thumbnails that are much smaller than the original images (say 25% or 12.5%), start gathering, for neighboring colors, statistical information about the colors that make up the pixels in the original image. In the images below, the letter ‘T’ is shown. First in its original state, than in a blown up version of the 25% scaled image. One can clearly see that the previously striking blacks have become various shades of gray. In the third image, I’ve taken the 25% scaled image and rescaled it back to the original size using bicubic interpolation — no more hard lines, which in this particular example looks pretty bad.
With enough information about these relationships from enough images it seems that one could do better. A human might say, a thin gray line between a dense black and dense white area should probably be divided up as segments of black and white, rather than blended with gray. Being able to do this programmatically is clearly going to be difficult, but shouldn’t require AI — I think.
Clearly, it is impossible to recover the lost information caused by resizing an image with 100% accuracy. However, the approach that bicubic interpolation takes is one of pure naïveté, which means there’s probably room for improvement.


