ARTIS Home Page Recherche Equipe Publications Intranet
English version



Création et manipulation d'images en utilisant Processing

image Roxame image Roxame image Roxame

Cadre du projet

Encadrant : Joelle Thollot (Joelle . Thollot (at) imag.fr)

Nombre d'étudiants : 1 ou 2 équipes

Lieu : Ensimag, salle D200 ou équivalente

Contexte

L'association les algoristes regroupe des artistes intéressés par les outils numériques pour la création artistique. Plus spécifiquement ses membres explorent l'utilisation d'algorithmes comme outils de création en tant que tels, se rapprochant ainsi des méthodes procédurales utilisées en synthèse d'image pour générer du contenu.

Le but de ce projet est de leur fournir des algorithmes de manipulation et traitement d'images pour enrichir leur boite à outil. La particularité de ce projet est l'utilisation d'un outil de programmation particulier : Processing qui permet de tester des idées facilement et a le mérite d'être multi-plateforme.

Pierre Berger, membre des algoristes, sera notre contact pour suivre le déroulement du projet, aider à la prise en main de Processing et nous faire des retours sur les besoins de l'association.

 

Travail demandé

Le projet commencera par la prise en main de Processing.

A partir de là, le but sera de produire divers algorithmes de traitement, création et manipulation d'images. Les données à produire sont des images (PNG ou JPEG). Selon les algorithmes les données d'entrée sont une ou plusieurs images ou bien des paramètres dans le cas d'algorithmes procéduraux.

Une première liste indicative d'algorithmes est listée ensuite. Cette liste n'est pas exhaustive et sera à préciser en fonction des compétences et envies des élèves qui choisiront ce sujet.

Filtres d'images

Un filtre est un algorithme qui prends une image en entrée et la transforme en effectuant divers traitements par pixel. Généralement un filtre modifie la couleur d'un pixel en fonction de son voisinage (support du filtre).

De nombreux filtres classiques existent et seront à implémentter en priorité. Par exemple des filtres de lissage (flou gaussien), moyennage (filtre médian), régularisation des couleurs ou intensités (histogramme, contraste,...), extraction de contours (difference de gaussiennes), filtre morphologiques (érosion, dilatation)...

Des filtres plus complexes pourront être ajoutés ensuite. Gimp ou Photoshop peuvent servir de source d'inspiration pour choisir les filtres que vous souhaitez tester.

Transformations géométriques

L'image d'entrée peut être transformée de diverses façon en modifiant la position de ses pixels. Les transformations les plus simples sont les transformations affines (mise à l'échelle, translation, rotation).

On peut imaginer ensuite des transformations plus complexes avec des déformation non linéraires (vagues, distortions,...) ou des découpages et mélanges des pixels de l'image (pixelisation ou autre).

Création procédurale

Les algorithmes procéduraux visent à créer du contenu à partir de quelques paramètres. Le champ à explorer est extrêmement vaste. L'idée ici est la création automatique de formes. On pourra commencer par générer des formes géométriques simples puis étendre à des objets complexes.

Techniquement ce type de problème peut être traité en utilisant des grammaires de forme (rappelez-vous votre cours de TL...). La question est alors de trouver les règles de grammaire qui décrivent la bonne classe d'objets. Un exemple donné par Pierre Berger: générateurs d'objets usuels, de manière minimaliste (table, chaise, assiette, couteau...).

 

 

Evaluation

L'évaluation se fait sous forme de soutenance orale, le dernier jour du projet : 20 minutes de présentation (avec des transparents) et de démonstration + 10 minutes de questions. Je demande également de réaliser une page web présentant le sujet, la démarche suivie et les résultats. Lors de la présentation comme sur la page web, je demande d'expliquer brièvement ce qui a été fait, les résultats obtenus, de faire un bilan critique de ce qui fonctionne et ce qui ne fonctionne pas, et vos impressions sur le projet. Chaque groupe doit également me rendre son code source (commenté !). Il doit être utilisable en l'état (donc ne pas oublier d'inclure le Makefile).