Can GIMP upscale a medium or small image?

On my Ubuntu PC (7.5 GB or RAM and the Nvidia GeForce GTX 1660 SUPER graphic card) the program runs fast and without any problem. The upscale output is quite good.

I remember from years ago this page: Nicolas Robidoux Resampling -- IM v6 Examples

I assume they are still valid. Generally using Gimp the NoHalo interpolation is good enough for me, but for that small text, scaling 250 pix → 800 pix this produces a cleaner result

magick in.png -colorspace RGB +sigmoidal-contrast 7.5 -define filter:window=Jinc -define filter:lobes=3 -resize widthxheight -sigmoidal-contrast 7.5 -colorspace sRGB out.png

Hello, I read that, but when starting the appimage from the command line with input image and output image i see several errors. Then the GUI shows up asking me to select an image. Even a 200x200px image produces an seemingly endless loop…

I guess the problem comes from my graphics card.

paul@graveyron:~/Downloads$ ./upscayl-2.0.1-linux.AppImage ~/Bureaublad/klein.jpg -o ~/Bureaublad/klein_upscayl_4x_realesrganx4plus.png
/tmp/.mount_upscayQwBXD3/resources/app.asar
🚀 ICON PATH:  /tmp/.mount_upscayQwBXD3/resources/app.asar/main/build/icon.png
🚀 UPSCAYL EXEC PATH:  /tmp/.mount_upscayQwBXD3/resources/bin/upscayl-
🚀 MODELS PATH:  /tmp/.mount_upscayQwBXD3/resources/models
🚀 FFMPEG PATH:  /tmp/.mount_upscayQwBXD3/resources/app.asar/node_modules/upscayl-ffmpeg/bin/linux/x64/ffmpeg
Checking for update
[21401:0212/112123.152470:ERROR:viz_main_impl.cc(186)] Exiting GPU process due to errors during initialization
[21428:0212/112123.601042:ERROR:viz_main_impl.cc(186)] Exiting GPU process due to errors during initialization
Update for version 2.0.1 is not available (latest version: 2.0.1, downgrade is disallowed).
🚀 => fileName klein
🚀 => fileExt .jpg
🆙 COMMAND:  -i /home/paul/Bureaublad/klein.jpg -o /home/paul/Bureaublad/klein_upscayl_4x_realesrgan-x4plus.png -s 4 -m /tmp/.mount_upscayQwBXD3/resources/models -n realesrgan-x4plus -g nvidia gt218 -f png
🚀 => upscayl.stderr.on => stderr.toString() [0 llvmpipe (LLVM 15.0.6, 256 bits)]  queueC=0[1]  queueG=0[1]  queueT=0[1]
🚀 => upscayl.stderr.on => stderr.toString() 
[0 llvmpipe (LLVM 15.0.6, 256 bits)]  bugsbn1=0  bugbilz=0  bugcopc=0  bugihfa=0
[0 llvmpipe (LLVM 15.0.6, 256 bits)]  fp16-p/s/a=1/1/1  int8-p/s/a=1/1/1
[0 llvmpipe (LLVM 15.0.6, 256 bits)]  subgroup=8  basic=1  vote=1  ballot=1  shuffle=1

Yes, still valid. I explore Robidoux resampling for photos at Resampling with halo minimization

For cartoons (areas of flat colours, such as black and white, or red and green) we get strips of antialiasing (shades of mixed colours such as gray or yellow/brown). Upsampling tends to widen these strips, giving a blurry appearance.

“-sigmoidal contrast” makes dark grays darker, and light grays lighter, so gray strips are not so obvious, which can increase subjective sharpness.

Another tool is sharpening with “unsharp masking” which actually narrows the antialiasing strips. However, it also creates halos. We can eliminate halos by ensuring that every new pixel is limited to the maximum and minimum pixels within a sliding window of the input.

Any sharpening technique to reduce antialiasing also (obviously) increases aliasing, ie the jaggedness of diagonal lines, so any solution is a compromise.

1 Like

BTW, the author of upscayls says in his GitHub page that "You’ll need a Vulkan compatible GPU to upscale images. Many CPU and iGPUs do not work but no harm in trying.
Here’s a list of Vulkan compatible GPU: https://vulkan.gpuinfo.org

1 Like

Hello, I noticed that as well (no idea what that means though, Vulkan compatible).

My NVidia card is not on that list though (and I’m not going to buy another one just to AI-upscale an image!). :wink:

I don’t think these are compatible… Yet? Scary if they are…

Yes, that is the question. But…

I guess there should be no problems if it’s just for better readability and original is also in the presentation.