Un algorithm d’upscaling pour les linearts en pixel art

Algorithme
1-Points de connexion
Pour chaque pixel, on assigne des points de connexion sur les angles.


2-Relier les points de connexion adjacente
On relie tous les points de connexion adjacente (rouge) appartenant à la même ligne horizontale ou verticale.
3-Relier les points de connexion d’angle
On relie tous les points de connexion adjacente (vert) au point suivant (vert ou rouge) tant qu’il appartient à la même ligne.
4-Remplir les trous
On remplis les trous délimités par les points de connexion.
Demonstration
Voici une application de l’algorithme sur un sprite de pokémon.

Linéart x1 d’un sprite de Chenipan
On assigne les points de connexion.

On relie les points de connexion adjacente.

On relie les points de connexion d’angle.

On remplis les trous.


Résultat final avec un upscaling de 4x
Exemples
Voici quelques exemples d’upscale utilisant une légère variante de l’algorithme.
Upscaling 2x de chenipan.
Clean du 2x puis upscaling 2x à nouveau.

On remarquera que le rendu est beaucoup plus propre que faire un upscaling 4x directement.
Limitations
Cette version de l’algorithme souffre de quelques limitations. Par exemple les croix qui ne sont pas en diagonale vont être transformées en point si elles ne sont pas reliées. Cependant ce problème est assez simple à régler en ajoutant une nouvelle règle adaptée qui ajoutera un point de connexion supplémentaire sur certaines extrémités.