I would not compare a fancy NN algorithm to Bicubic interpolation, even as an example. Bicubic sucks. If someone really wants to get a decent high-res upscale of an image via "conventional" means (like GIMP) they would probably use something like Lanczos algorithm for upscaling -> Anthropomorphic smoothing for denoise -> unnsharp mask for clarity. And that's a simple pipeline, you can go even fanciers with masks, layers and edge-detection kernels.
and "SRCNN" C. Dong, C. C. Loy, K. He, and X. Tang, “Learning a deep convolutional network for image super-resolution” https://arxiv.org/abs/1501.00092
Their result seems not to score as well in quantitative metrics (signal to noise ratio), but is faster. (And seems to have good qualitative results, in my opinion.)
I'm speaking about the pictures on the website OP links to. They even say "As you can see in the example below, the upsampled image looks blurry – one would hesitate to call it enhanced." It's blurry, because they use an algorithm that produces blurry images. Lanczos, for example, would produce a much sharper picture at the expense of some minor artefacts.
They don't show A+ results anywhere in the blog-post at all.
This is obviously something where machine learning is a great tool, knowing about the way images usually look, it's easy to imagine deep learning methods doing a great job at this.
However, an obvious application of this will be to apply these methods to security image footages, in order to improve the recognizability of the people shot. You know like in Hollywood movies where the detective asks the geek "can you improve the details of that picture?" But the general public (and by this I mean cops, lawyers and jury people) will not understand that the details are actually made up. The person in the security footage may be unrecognizable before treatment, but after, it would look as "the most likely person to have been there."
Are there any machine-learning approaches to superresolution which take context into account? By that I mean filling in details that can only be guessed by context.
For example, when the algorithm detects that the image is of a field of grass (but individual blades of grass not discernible), then in the superresolution output it paints in these blades.
Some of the deeper - and wider - convolutional neural network-based SR methods do this, implicitly. We have a few papers, like SRGAN (https://arxiv.org/abs/1609.04802) or AffGAN (https://arxiv.org/abs/1610.04490) that generate pretty interesting context-aware textures.
Sophisticated hallucination of missing details comes at a cost: As one would expect, in some cases the algorithm guesses incorrectly. See for example Figure 5 of AffGAN paper, column 3: when superresolving an image of a snake, the algorithm mistakenly thought it's a body of water, and produces textures accordingly.
Overall we found that most people find the results of GAN-based approaches superior to other ML-based techniques.
The best methods for this, using Generative Adversarial Networks, do in fact fabricate new realistic-looking information.
I think it would be great to input a blurry version of a cityscape, and have it add numbers to mailboxes, litter to the streets, cracks to the sidewalk, etc.
I was thinking of perfect restorations of old classical music recordings. If we decode the sound of a violin, we could re-synthesize it in studio quality.
From a qualitative glance at the images, I believe I could come close to the same results with some basic filtering, like a gussian blur followed by a quantization to a smaller number of colors, then a little bit of blur.
The image of the horse head statue looks like an "oilify" effect.
Mind you, a pretty good oilify effect.
This filter is clearly useful independently of what it achieves in relation to what it "says on the box".
In creative image processing, I just have to like what it does, whatever that is (and I do).