Saturday, 28 March 2015

Pixel Scaling

I'm converting the maps from the amiga version of Super Skidmarks to work on mobile devices for Skidmarks 2015.

Normally when we scale an image, we treat it as a continuous tone image, like a photograph:
One option is to just leave the pixels as is. It gives it a retro feel, but doesn't really capture what computer monitors in the 90s used to look like. We used to call this mode "fatbits":


And yet a third way is to use a pixel-art rescaling algorithm, like xBRZ.

Click through on the images to see full res.

Which do you think I should use? Any other techniques I should consider?


  1. Pixel-art rescaling on dithered stuff looks quite horrible, IMHO. Why not trying some CRT emulation, ideally something really well made, not just lousy scanlines...

    One could write a quite accurate emulator of the CRT grid and distortion, run it at very high resolution and downscale, maybe, to get something that would look like a photo of a CRT screen...

  2. xBRZ looks really ugly in my view, it is as if the pixels were maimed and merged together.
    Ideally you would want an algorithm which would add information to the image without denaturing it. I would definitely look into training a neural network to do that. With a good framework this would not require too much work.

    I suppose that you must not have the original curves used to generate the maps otherwise obviously you could regenerate them with a higher resolution and/or different textures?

    I will keep thinking about it and will comment again if I get any idea. ;)

  3. Here is another idea which should be simpler than training a neural network. ;)

    There are many areas in the original Amiga images which contain dithering patterns. Ideally, these should be replaced with the same pattern but at the new high resolution.
    So an enhancement algorithm could look like this:
    - find all regions with a dithered pattern
    - rewrite these regions with a higher resolution pattern (with the same colors)

    This would address only the areas of the map which are dithered and would leave the others unchanged.
    Maybe xBRZ could be used for the remaining parts? Thus artificially increasing sharpness where it is useful to do so (areas with higher detail density).