I have been performing digital image upscaling of pixel art in one of my hobby projects, and the two simplest upscaling algorithms are point sampling or bilinear upscaling.
Point sampling exhibits tricky aliasing/pixel column/row duplication effects if the upscaled image size is not an integer multiple of the source image size. For example, while upscaling a 200 pixels wide image to e.g. 800 pixels wide image is easy (just repeat each pixel four times), upscaling to a 850 pixels wide image will exhibit a repeating aliasing pattern, where columns of pixels periodically have to get "doubled", e.g. group of four consecutive source pixels a,b,c,d might upscale like this:
where the pixel c appears five times instead of four, which can cause an annoying observable visual effect.
If on the other hand, I bilinearly upscale the 200px wide image to 850 pixels, the above "duplicated pixel column" visual effect is hard to find, but then the result will look quite blurry, since three quarters of the output pixels were interpolated smoothly.
So something I thought then was to do the following: I take the source image WxH pixels, and first upscale it using point sampling by integer scale-up factors k and m to form the largest image Wk x Hm that is still smaller than the desired final output width and height of the image.
Then bilinearly upscale this intermediate image to generate the final desired image.
So e.g. when upscaling an image of 200x300 to, say, 850x1350, what I will do is first point sample upscale this image to 800x1200 by an integer factor of four in both dimensions, and then bilinearly upscale that image to the final resolution 850x1350.
This two-step "first point-sample, then bilinearly upsample" process seems to provide a nice balance between the two algorithms for my application, and is equally simple to implement.
So I was curious what this kind of upsampling method might be called? I'd like to know more about it, but wasn't able to come up with good search terms. The closest I found in spirit was "stairstep interpolation" ( https://en.wikipedia.org/wiki/Stairstep_interpolation ) which also does repeated upscaling, but the method is still different.
EDIT: let me add images to highlight the difference.
But first point upscaling from 320x200 to 1280x1000, and then bilinearly upscaling that to 1440x1080 gives pleasing results that preserve rasters on the walls and the eyes, without smoothing too much: