lundi 23 février 2009

Bout de code #4 : IArtist

Une problématique vue maintes et maintes fois : concevoir une intelligence artificielle ayant la capacité de peindre, en fonction de ses goûts.

Très tôt (informatiquement parlant) des artistes et des chercheurs se sont penchés sur la question de savoir si un ordinateur pouvait faire son entrée dans le monde de l'art, non plus comme outil, mais comme créateur. Citons notamment le robot AARON, en constante évolution depuis sa création en 1973 par Harold Cohen, qui à la capacité de créer des peintures, aussi bien abstraites que figuratives.

Le problème de AARON, c'est qu'il ne peut pas apprendre tout seul de nouveaux styles, à moins que Harold ne "mette les mains dans le cambouis" et lui code directement la façon de faire le nouveau style voulu.

Je me suis penché sur le problème, aidé par Xavier Gouchet (qui m'a proposé l'algorithme de conception) et Adrien Herubel (qui m'a codé les scripts de téléchargement d'images Flickr et Google Image). Le programme que nous avons conçu, IArtist, marche de la façon suivante :
  1. Acquisition des données : on fourni deux choses en entrées à IArtist : un sujet et un style. Ils peuvent être proposés de différentes façons, que ce soit par une ou plusieurs images, ou par des mots. Dans le dernier cas, IArtist ira comme un grand chercher par lui-même sur internet des images en rapport avec les mots donnés.
  2. Analyse du style : une fois qu'IArtist a à sa disposition un ensemble d'images correspondant au style donné, il va se servir de ces images pour analyser le style (on ne peut donner plus de détails pour le moment, les travaux n'étant pas encore publiés) et nous fournir un critique de ce style, capable de dire si oui ou non, une image appartient à ce style.
  3. Reproduction du style : à partir du moment où IArtist à son sens critique pour le style, il va pouvoir commencer à "peindre" : en partant de l'image sujet, il va appliquer des traitements de façon aléatoire, et soumettre à chaque fois le résultat au critique. Si le critique lui dit que c'est plus proche du style qu'avant, IArtist recommence en partant du dernier résultat. Dans le cas contraire, il reviendra au résultat précédent. IArtist s'arrête quand le critique lui dit que l'image obtenue appartient au style.
On peut également ne donner à IArtist que quelques critères de goûts et le laisser peindre à sa guise, donnant ainsi des images plus conceptuelles.




mercredi 21 janvier 2009

Bout de code #3 : Motion Painting

En partant de l'idée de Cam Graffiti, je me suis dit qu'il serait intéressant de trouver d'autres outil qu'une couleur marqueur pour jouer le rôle de pinceau. Ayant précedemment travailler sur la détection d'objets en mouvements, j'ai tout de suite penser à utiliser les variations de couleur de l'image comme pinceau.

Ce pinceau est donc obtenu en faisant la différence de couleurs entre deux images consécutives, puis de peindre aux endroits où cette diffférence est élevée.

On peut ensuite ajouter différents effets, de manière optionnelle :
  • ne garder dans le pinceau que les contours des objets (grâce au filtre de Canny)
  • appliquer un filtre après l'ajout de la couleur, que ce soit un filtre gaussien, qui donne un effet bombe de peinture, où un filtre médian, qui donne des "taches" de couleurs aux formes plus arrondies
  • superposer la "peinture" à l'image en niveaux de gris

samedi 10 janvier 2009

Peinture #2 : captiver l'attention par le detail


Un autre de mes centres d'intérêt en peinture est de comprendre ce qui permet de captiver l'attention. Durant les cours d'arts plastiques de terminale, ma prof m'avait montrer les oeuvres d'un peintre, dont je ne me rappelle malheureusement plus le nom, qui attirait l'attention en détaillant de façon beaucoup plus précise la zone d'intérêt.

Cette peinture reprend la même idée, en utilisant deux méthodes distinctes :
  • les yeux sont mis en valeur par la plus grande précision de la forme
  • la bouche est mise en valeur par le passage du gris à la couleur
Le procédé principal est toujours le même que pour la peinture #1, utilisant les quadtrees.

PS : peinture sur toile 116*81cm, acrylique

dimanche 4 janvier 2009

Bout de code #2 : Cam Graffiti

Un petit bout de code rigolo, qui à déjà été fait par beaucoup de personnes je pense : faire de la peinture par caméra.


L'idée est d'utiliser une couleur "marqueur" comme pinceau : ici la couleur bleue. Il suffit alors, à chaque image, d'ajouter de la couleur à l'endroit où apparait la couleur "marqueur". Pour obtenir l'effet bombe de peinture, il suffit d'appliquer un filtre gaussien à cet endroit, étalant ainsi la couleur, avec un estompement.

J'éspère dans un futur proche pouvoir porter ce concept en 3D, en utilisant un ensemble de caméras et une méthode de triangulation. On pourra alors se balader à l'intérieur du graffiti, qui ne sera plus contenu dans un plan, mais dans l'espace.

PS : ce code à été réalisé en C/C++, avec la librairie OpenCV.

samedi 3 janvier 2009

Bout de code #1 : [Alkwarel] Shape Creator

Dans le cadre d'Alkwarel (voir le blog de Xavier Gouchet), programme de conception artistique des algoristes, je suis en train de concevoir un créateur de formes, d'après l'idée de Stephane Trois Carrés.
L'idée est de pouvoir créer de façon intuitive et facile une forme, en se servant uniquement de la souris. On part d'un simple point, que l'on peut étirer en une ligne, qui est ensuite transformable en un polygone. On doit pouvoir également pouvoir gerer facilement des courbes, ainsi que concevoir des formes géométriques simples, comme des triangles équilatéraux, des cercles, des carrés, etc...
J'ai donc conçu cette première ébauche en Java (langage utilisé pour concevoir Alkwarel, pour son aspect multiplatformes).

Chaque bouton de la souris à un rôle bien spécifique : le gauche sert à utiliser l'action seléctionnée, le droit à ouvrir le menu de choix de l'affichage du polygone et des courbes de bezier associées, ainsi que les trois modes d'utilisations, et la molette a choisir parmis les actions de chaque mode.

Le mode le plus classique est le mode Transformation : il permet de tourner, d'agrandir et de déplacer la forme dans la fenêtre.

Pour pour manipuler notre forme, on utilise le mode Dessin : on peut ajouter un point sur un segment et le déplacer, déplacer un point déjà créé, et supprimer un point ou un ensemble de points. La selection se fait dans le premier cas sur le point le plus proche du segment le plus proche du point cliqué, sur le plus proche point du point cliqué pour le second cas et pour la suppression d'un point simple.

Enfin, pour créer des formes élémentaires (et bien plus encore !), j'ai conçu le mode Géométrie, comprenant deux actions :
  • l'action Régulier permet de créer un polygone régulier de n cotés, avec pour coté, le segment le plus proche du point cliqué, et orienté vers le point cliqué. On peut donc avoir un triangle équilatéral avec Régulier 3, un carré avec Régulier 4, un pentagone avec Régulier 5, etc...
  • l'action Demi Cercle permet, comme son nom l'indique, de créer un demi cercle, dont le diamètre est le segment est le plus proche du point cliqué, et orienté vers ce point. Cela permet, en l'utilisant des deux cotés d'un segment, d'obtenir un cercle.


vendredi 2 janvier 2009

Peinture #1 : segmentation de couleur inspiration quadtree.


Un de mes centres d'intérêts en peinture, est de comprendre ce qui permet la reconnaissance d'un sujet : est-ce sa forme, donc ses contours visibles ? la façon dont s'assemblent les couleurs pour le définir ? Peut- on reconnaitre un sujet sans avoir aucune notion de sa forme? Bref, plein de questions, plus techniques qu'autre chose.

Tout ça pour dire, qu'en fait, un de mes jeux favoris, en peinture, est d'essayer de dissocier la couleur de la forme, en fixant des contraintes bien précises :

Ici, seuls les traits principaux ont étés préservés, dans le seul but de permettre une reconnaissance aisée du sujet.

La couleur est ajoutée en s'inspirant des quadtrees : pour faire simple, les quadtrees sont une structure de données utilisée en informatique pour la compression d'image, par exemple. On part d'une grande zone carrée de l'image, que l'on va diviser en quatre sous-parties, tant que la couleur de la partie n'a pas une couleur uniforme ( à une certaine nuance près) et que sa taille est supérieure à un pixel.
Il en résulte que de grandes zones de couleur uniforme peuvent être représentées par un seul grand carré, plutôt qu'en plein de petits, ce qui prendrait plus de place en mémoire.

PS : cette peinture est réalisée sur toile 116*81cm, en acrylique

mardi 23 décembre 2008

Présentation

Bonjour, je m'appelle Benjamin Raynal, je suis actuellement en 2ème année de doctorat en informatique, spécialité Vision par Ordinateur, à l'université Paris-Est, Marne La Vallée. Je suis également, depuis peu, membre des algoristes (http://les-algoristes.over-blog.com/).

Je me décide à tenir ce blog, afin de partager mes travaux liés à l'art, qui sont de deux types :
1 - des peintures, pas forcement géniales, mais qui me permettent de tester certaines idées, en m'inspirant d'algorithmes informatiques
2 - des programmes, souvent à l'état de simple bouts de code, la encore uniquement fait pour tester une idée, et en voir les débouchés possibles.

Mes sources d'inspirations sont variées, allant des courants artistiques du XXeme siecle au graffiti (qui d'ailleurs est aussi un courant artistique), en passant par la symbolique des tatouages japonais traditionnels ou oldschool. Et bien entendu, en bon "geek", je puise aussi dans la culture japonaise, l'informatique (et la science en générale) et la science fiction.