Un algorithm d’upscaling pour les linearts en pixel art


T-Rex Image

Algorithme

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

On assigne un point de connexion adjacente (rouge) dans une direction si le pixel n’est relié que part cette diagonale à un autre pixel.
T-Rex Image
On assigne un point de connexion d’angle (vert) a tous les coins interieurs.
T-Rex Image

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.

T-Rex Image
Linéart x1 d’un sprite de Chenipan

On assigne les points de connexion.
T-Rex Image

On relie les points de connexion adjacente.
T-Rex Image

On relie les points de connexion d’angle.
T-Rex Image

On remplis les trous.
T-Rex Image

T-Rex Image
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.
T-Rex Image

Clean du 2x puis upscaling 2x à nouveau.
T-Rex Image

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.