Courbes

Courbes et automates

Un automate cellulaire est un petit programme qui va changer la nature d’un pixel de noir vers blanc ou de blanc vers noir selon la configuration de son voisinage. Un célèbre système d’automates est le jeu de la vie du mathématicien Conway.

Alors que le jeu de la vie ne prend en compte que le nombre de pixel d’un certain état dans le voisinage pour changer l’état du pixel central, d’autres systèmes s’occupent des motifs de voisinage, et l’emplacement des voisins a alors son importance. Dans cette configuration ils peuvent servir à des manipulations d’images, tel que enlever du bruit, boucher des trous, faire apparaître le squelette des formes, enlever des protubérances, adoucir les contours, opérer des translations, ajouter du bruit, créer des artefacts sur les contours et d’autres choses encore.

Les processus de cette nature sont itératifs, ce qui signifie qu’une opération doit parcourir toute l’image et vérifier les voisinages de chaque pixel. Certaines opérations nécessitent un seul passage sur l’image, comme calculer le négatif de l’image, d’autres, nécessitent plusieurs passages, comme les translations. Pour une translation, un passage sur l’image entière va permettre de bouger l’image d’un seul pixel, il faudra répéter l’opération autant de fois qu’il y aura de pixel à bouger. C’est en cela que l’opération est itérative. Pour arriver à l’image finale, on va enchaîner des automates différents et les répéter autant de fois que nécessaire. On enchaîne ainsi modifications sur modifications, jusqu’à la fin du processus. Certaines opérations étant de nature complexes, il est impossible de connaître l’état du résultat final.

Le cœur du programme sera donc une succession de ce type d’opérations, où l’image sera modifiée un peu à chaque fois. Cependant exécuter un programme de ce type, ne nous donnera qu’une seule image finale pour une image d’entrée. L’idée est de tirer parti des changements successifs et d’insérer dans le processus des opérations de transformation de l’image binaire en courbe. Ces opérations sont de nature diverses (voir projet remplissage) et elles vont enregistrer sous forme de courbes certains des états de transformation de l’image de départ.

Les courbes s’ajoutant les unes aux autres, on obtiendra par transparence des effets de matières et des textures variées. L’image étant modifiée dans son ensemble le processus opère sur l’intégralité de l’image. Cela est fascinant à voir évoluer, mais on se rend vite compte que, de cette manière, on va difficilement obtenir des régions de l’image qui seront fondamentalement différentes du reste de l’image. Pour palier à ce petit problème, on introduit d’autres opérations comme des scripts qui permettent de sélectionner ou de modifier les courbes obtenus, les adoucir, les découper, etc. on a à notre disposition tout le vocabulaire du programme manipulant les courbes. Une autre manière de réaliser ce genre de composition est de sélectionner une partie de l’image binaire et de relancer un processus sur cette sélection, quitte à revenir ensuite à l’état précédent l’opération de sélection. Cette dernière possibilité introduit la possibilité d’utiliser des sous-programmes.

L’élaboration d’une composition avec ce processus n’est pas un procédé usuel. Il existe deux parties fondamentales, d’une part le programme, et d’autre part l’image de départ, que l’on peut considérer comme une sorte de graine. Les automates étant très sensibles aux configurations locales, les résultats, bien que constants dans l’ensemble, peuvent être très variés suivant quelques cas de figures. Ainsi, certaines images répondront mal à certains programmes. On distingue des caractéristiques d’images particulièrement sensibles à certains automates, comme des textures, des lignes noires ou blanches, des formes à 45 degrés, verticales ou horizontales, des contours, etc. Suivant si l’image comporte certains de ces composés, les automates à utiliser seront sans doute différents. Cependant, les deux parties restent tout de même indépendantes et appliquer les mêmes programmes sur une collection d’images résulte, en fin de processus, en un ensemble d’images qui partagent certaines similarités stylistiques.

Conclusion

La création d’un programme pour une image donnée sera une succession d’essais et d’erreurs. Et, à force d’utilisations on commence à trouver certaines figures de styles dans des programmes et on développe une sorte de vocabulaire, ainsi que des nouveaux automates.

Les automates cellulaires sont ici utilisés en boucle dans un processus itératif lourd et long, destinée à penser la création d’image par une progression de modifications successifs avec des enregistrements de temps en temps. Dans d’autres parties du programme ils servent d’outils puissants pour créer, sur des sélections d’images binaires, des motifs ou des textures, ou modifier localement l’image : épaissir un trait, retirer ou ajouter du bruit. Etc. mais il n’est pas alors question de courbes, juste de pixel noir ou blanc.

télécharger le livre en PDF :  Automates et courbes.