This program can improve resolution of your images without loss of quality (almost). Simple and convenient GUI, several useful options will helps you in this.
The image is represented as three arrays (red, green, blue) that contain the color values of each pixel. Elements of arrays are used as knots for constructing bicubic splines. After that, values of additional pixels are calculated. Resulting arrays transforms to image.
Multithreading allows program to use all available cores.
Splitting by threshold allows you to take into account contents of the image and use one function for interpolation on a monotone section. But this option is cause of slow working of program during processing big images.
Testing on quad-core processor with turned off "Splitting by threshold" option.
On x-axis - amount of pixels.
On y-axis - time in seconds.