There are many available upscaling (interpolation) techniques in mpv, of which this article aims to provide some comparison screenshots.
Each of the screenshots was obtained like this:
mpv --no-config --pause rose.png --geometry=560x368 -vo opengl-hq:dither-depth=8:scale=SCALER:cscale=SCALER
The resulting output was captured using imagemagick:
import -depth 8 SCALER.png
All of this is automated using a script, as can be found here.
Some of the upscalers support antiringing, which is a naive technique that attempts to reduce ringing in some cases, but can also introduce artifacts. The antiringing algorithm in mpv is not very sophisticated. The rose test pattern includes a few examples.
There are also ways to upscale images other than by using the scale option, such as using a vapoursynth script (eg. NNEDI3). The rose test pattern includes this as an example.
Click on an image to see the upscaled versions.
Tuning the window function can have different results as well. All of these tests were performed by modifying scale-window, with scale=jinc:scale-radius=3.2383154841662362.