Voici un petit historique de ce modeste projet. À l'origine, il y a près de 2 ans (en 2019), je découvre, un peu par hasard sur twitter, ce travail de Marian Eerens. Sans être spécialement fan de Tintin ou d'Hergé, je suis pourtant immédiatement séduit par cette étude abstraite du maître de la ligne clair. J'ajoute cette page à mes signets et ça en reste là, un marque-page de plus dans la poche !
Toujours, par hasard, je retombe sur cette page, et cette fois c'est parti, je me lance dans l'écriture d'un petit programme pour essayer de générer une carte chromatique à partir des couvertures de Tintin, et pourquoi pas d'autres séries...
C'est le début de cette errance chromatique qui m'occupe à mon temps perdu...
En toute naïveté, je me lance dans l'écriture d'un programme destiné à trier les pixels d'une image. À priori, c'est très simple il suffit de trouver un algorithme de comparaison de couleurs et de réorganiser les pixels de l'image d'origine. La difficulté apparait immédiatement : comment comparer deux couleurs usuellement codée en RGB ?
L'utilisation de la distance euclidienne est assez simple à mettre en oeuvre à partir des composantes (r,g,b) on obtient :
D2(Px1, Px2) = (r1-r2)2+(g1-g2)2+(b1-b2)2
Avec cette première mesure de distance, on peut trier les pixels en fonctions de leur distance à une couleur de départ, on prendra le noir et on sonservera le carré de la distance pour éviter d'abuser inutilement du processeur :
D2(Px1, (0,0,0)) = r12+g12+b12
Pour tester, je prends comme couverture de référence Le crabe au pinces d'Or qui présente quelques avantages immédiats : peu de couleurs et contrastes élevés
Voici le résultat à comparer avec la couverture originale et
le résultat obtenu par Marian Eerens :
Le résultat est assez probant mais on peut observer que l'organisation des couleurs est surprenante dans les tons sombres où apparaissent plusieurs segments rouges au sein des zone ocres et brunes.
Ce phénomène peut s'expliquer de plusieurs façons : comparer des couleurs en fonction de leur distance au noir n'est pas idéal : des couleurs totalement différentes se situent à des distances identiques ou très proches du noir, ainsi le rouge saturé (#ff0000) est situé à la même distance que le vert (#00ff00) ou le bleu (#0000ff). L'algorithme de tri peut donc rassembler des pixels vraiment différents.
Ce défaut est encore plus flagrant si on opère de la même façon sur des couvertures présentant de nombreuses couleurs comme Les cigares du Pharaon ou Tintin et les Picaros :
![]() |
![]() |
![]() |
Toujours dans une démarche élémentaire, je lisse le résultat obtenu en remplaçant chaque ligne des images obtenus par la moyenne des couleurs présentes :
![]() |
![]() |
![]() |
Pour changer un peu d'approche, j'applique un nouvel algorithme qui décompose les couleurs en centiles et construit la mosaique associée
![]() |
![]() |
![]() |
Ces premiers essais m'ont quelque peu éloigné du modèle initial, mais le résultat obtenu présente rendu graphique qui ne me déplait pas. Je passe donc à la déclinaison de l'opération sur l'ensemble des albums de Tintin et j'opère de même avec ceux de Blake et Mortimer, histoire de rester dans la ligne claire.
Il faut préciser également que j'ai également testé d'autres mesures de distances et d'autres représentations de couleur (HSV et cie) sans différences majeures dans les résultats (quelques exemples plus tards)
La prochaine étape ? revenir à l'idée de l'algorithme employé par M. Eerens qui mets en oeuvre du clustering à l'aide de kmeans via la bibliothèque de L. Jegou.