The software/algorithms which Tofu found, are pretty real and will most likely do a great job. However, you need to read carefully - it will
not do the CSI trick.
The magic word here is SCALING, which does NOT happen with that software.
The software does something in the field of "compression and data reconstruction", like what we all use as mp3 for audio data.
It is perfectly possible to calculate noise away and to reproduce "sharp" data out of fragments.
The fragments, however, is the important thing. They need to be "sharp" (from a sharp source, that is). If you have fragments from noise, the software will generate noise, no sharp data.
In my example below you will maybe see the point. The data of 16 pixels can generate completely different results - it depends solely on what you start with.