PROJETS DE MÉMOIRE MASTER 1
2004-05









Outils pour l'extraction de contours d'une image

Contacts

Responsable du projet : Achille Braquelaire
Adresse : LaBRI, bureau 113
Téléphone : 05.4000.60.91
E-mail : Achille.Braquelaire@labri.fr

Sujet

Problématique

Lex contours d'une image sont les points séparant des zones homogènes ou des textures. Le but de ce projet est de coder sous forme d'une bibliothèque les outils des principales méthodes d'extraction de contour.

Principes généraux

Les méthodes pour détecter ces contours consistent à faire passer dans l'image des opérateurs assimilables à des calculs de dérivées premières ou secondes. L'extraction des contours consiste alors à rechercher des maximas locaux, ou des lieux de passages par zéro dans les images résultant de ces transformations.

On peut voir sur l'exemple suivant les étapes typiques permettant de passer d'une image à un ensemble de contours. Pour obtenir la seconde image à partir de la première on calcule l'image de la dérivé partielle de l'image originale par rapport à chaque axe et on combine ces deux images pour produire l'image de la norme du gradient. Les valeurs élevées correspondent aux variations rapides dans l'image, et sont donc assimilables à des contours. Elles sont en clair sur l'image.

L'image 3 est obtenue par seuillage de l'image et extraction des contours à partir des maximas locaux de l'image 2, et l'image 4 est le résultat d'un vectorisation de l'image 3.

Outils pour Bibliothèque d'extraction de contours

Ce projet consitera à implémenter les principaux outils intervenant dans les méthodes d'extraction de contour : Enfin, on pourra enfin développer des versions pixels et inter-pixels de ces outils (voir sujet suivant).

Travail demandé

Moyens nécessaires

Environnement de développement GNU/Linux.






Pré-segmentation d'image

Contacts

Responsable du projet : Achille Braquelaire
Adresse : LaBRI, bureau 113
Téléphone : 05.4000.60.91
E-mail : Achille.Braquelaire@labri.fr

Sujet(s)

Problématique

L'extraction des caractéristique d'une image 2D repose sur deux grandes familles de traitement : Ces deux méthodes sont complémentaires, les unes privilégiant la détection des objets de l'image et les autres celle des discontinuités corespondant à des bords d'objets. Il est donc intéressant de pouvoir faire collaborer ces deux types de méthodes, mais ce n'est malheureusement pas simple. Le but de ce travail est de contruire une segmentation de l'image qui prennent en compte à la fois des informations contour et des informations région.

Extraction de contours

Il y a deux manières différentes de définir des contours d'une image : Les premiers sont des contours pixel et les seconds des contours inter-pixel. Sur l'exemple suivant, on peut voir en orange les points d'un contour pixel correspondant à la transition entre la région bleue et la région verte, et en jaune un contour inter-pixel correspondant à la frontière séparant les deux régions.

Les méthodes pour détecter ces contours consistent à faire passer dans l'image des opérateurs assimilables à des calculs de dérivées premières ou secondes. L'extraction des contours consiste alors à rechercher des maximas locaux, ou des lieux de passages par zéro dans les images résultant de ces transformations. On notera qu'alors que les frontières des régions sont toujours des courbes fermées, les contours associés à des transitions peuvent être des chemins ouverts.

La première étape du travail consistera à implémenter une méthode d'extraction de contours permettant d'obtenir des frontières inter-pixel.

Triangulation contrainte par les contours

La seconde étape du travail consiste à produire une segmentation de l'images en régions dont les frontières sont compatibles avec les contours issus de la première étape. On va en fait produire une sur-segmentation, c'est-à-dire une décomposition de l'image en un nombre trop élevé de petites régions. Ce résultat constitue donc une étape de pré-segmentation qu'il conviendra ensuitre d'affiner.

La méthode utilisée est une méthode de triangulation appelée triangulation de Delaunay contrainte. L'image suivante montre un exemple de triangulation de Delaunay non contrainte d'un ensemble de 14 points.

On contraint le résultat de la triangulation en forçant certaines arêtes. Il existe différentes méthodes pour obtenir ce résultat.

Dans ce projet, il s'agira de construire une triangulation de Delaunay contrainte par les contours issus de l'étape d'extraction de contours. Le résultat sera produit dans un format compatible avec un logiciel de segmentation d'images développé au LaBRI, et la segmentation pourra ensuite être rafiné au moyen de ce logiciel.

Travail demandé


Moyens nécessaires

Environnement de développement GNU/Linux.







Organisation d'un répertoire d'images : deux projets indépendants

Il s'agit de deux projets pouvant être conduits séparément, et le cas échéant assemblés à la fin.

Contacts

Responsable du projet : Achille Braquelaire
Adresse : LaBRI, bureau 113
Téléphone : 05.4000.60.91
E-mail : Achille.Braquelaire@labri.fr


Sujet

Problématique

Lorsqu'on dispose d'un ensemble d'image de grande taille, il devient vite difficile, voire impossible de naviguer de manière cohérente au sein de cet ensemble. Il s'avère alors nécessaire d'organiser ces images, par exemple en les regroupant ou en les hiérarchisant en sous-répertoires.

Le but de ce projet est de permettre de gérer cette organisation sous Unix, d'abord manuellement, puis avec une assitance semi-automatique, sans avoir à renommer ou à déplacer les fichiers, et le cas échéant de pouvoir faire coexister plusieurs organisations.

Ce travail peut donner lieu à deux projets séparés, pouvant être conduits indépendamment l'un de l'autre, et le cas échéant assemblés ensemble à la fin en un projet plus gros, si les deux sujets sont choisis.

Première partie : organisation manuelle

Sous Unix, les fichiers peuvent être listés selon des critères de base comme le nom ou la date de modification. Si l'on veut réordonner les fichiers il est nécessaire de le renommer, par exemple en concaténant devant le nom un numéro d'ordre.

Une alternative consiste à créer un répertoire ne contenant que des liens symboliques vers les fichiers à ordonner, et dont les noms sont les numéros d'ordre des fichiers. Les avantages sont de ne pas modifier les noms originaux et de pouvoir faire coexister plusieurs tris. En revanche, cela s'avère pénible à gérer manuellement.

La première partie de ce projet consiste donc à développer un petit outil graphique de présentation du contenu d'un répertoire paramétré par un second répertoire, jouant le rôle de répertoire d'index, et uniquement composé de liens symboliques. Ce répertoire pourra être construit de différente manières~:

L'outil de visualisation devra permettre de visualiser les noms des liens symboliques ou les noms des fichiers pointés par ces liens, et de visualiser les images sous forme d'icône. Les autres fichiers seront simplement listés, sans effet graphique spécifique au type du fichier. Une dernière fonctionnalité intéressante est de déplacer un groupe de fichier dans un autre répertoire en maintenant l'ordre des deux sous-listes.

Deuxième partie : organisation semi-automatique

Un manière d'organiser les images d'un répertoire et de les regrouper par similarité. De nombreuses méthodes sont actuellement développées pour tenter de mesurer la similarité (ou la dissimilarité) entre deux images. Ces techniques sont notamment importantes dans le contexte de la recherche automatique d'image et de l'indexation d'un ensemble d'images. Les critères utilisés pour comparer deux images peuvent par exemple être statistiques (le plus simple étant la moyenne de toutes les couleurs de l'image) ou structurels (par extraction de caractéristiques géométriques et topologiques).

On utilisera de tels critères pour trier une liste d'images de manière à ce que deux images proches dans la liste triée soient également proches d'un point de vue visuel, puis d'utiliser ces tri pour organiser des ensemble d'images de manière à faciliter la navigation au sein de ces ensembles.

Une première difficulté est évidemment de disposer de bons critères de similarité. Mais même si l'on dispose d'un tel critère, cela ne fournit pas pour autant un ordre total sur les images. On devra se contenter d'organiser les images relativement à une image de référence. Par conséquent, même si l'on dispose d'un bon critère de similarité, et que l'on ordonne l'ensemble d'images par rapport à l'une d'entre elles, les images qui se trouveront en fin de liste seront les plus dissemblables de l'image de référence, mais ne seront pas pour autant nécessairement visuellement proches les unes des autres. Par exemple, si on trie les valeurs de 1 à 9 suivant leur distance à la valeur 5, on obtiendra une liste de la forme 5, 4, 6, 3, 7, 2, 8, 1, 9. On voit que les valeurs en fin de listes peuvent être très distantes les unes des autres, comme 1 et 9, ou 1 et 8.

On s'orientera donc vers des heuristiques, par exemple en choisissant des stratégies de partitionnement de l'ensemble des images, ou en réinitialisant l'image de référence chaque fois qu'une image s'en éloigne trop. L'objectif n'est évidemment pas d'obtenir le meilleur tri, puisqu'il n'existe pas nécessairement de critère pour cela, mais un tri qui améliore la présentation de l'ensemble d'images.

Le principe que l'on retiendra sera de précalculer pour chaque image un ensemble de critères utilisés pour calculer l'écart entre deux images. On pourra ensuite ordonner les images en choisissant une ou plusieurs images de référence, et en sélectionnant un critère, ou le cas échéant en fusionnant plusieurs critères. On pourra tester facilement le résultat des méthodes proposées en créant, pour chaque tri, un répertoire de liens symboliques pointant vers les images à trier et respectant l'ordre produit par la méthode de tri. Le résultat pourra alors êtr visualisé au moyen de n'importe quel outil disposant d'une présentation visuelle d'un répertoire d'images.

Connexion entre les deux projets

Si les deux projets sont retenus, il s'agira en fin de projet d'interfacer les deux logiciels, par exemple :

Travail demandé


Moyens nécessaires

Environnement de développement GNU/Linux.





Calibrage couleur d'une chaîne de traitement d'image (2) : imprimantes

Contacts

Responsables du projet : Achille Braquelaire
Téléphone : 05.4000.60.91
E-mail : Achille.Braquelaire@labri.fr

Sujet

Problématique

Le problème auquel on s'intéresse dans ce travail est celui de garantir la constance des couleurs d'une image tout au long d'une chaîne de traitement, et plus précisément lors de l'enchaînement des trois étapes suivantes : Une première partie de ce travail a déjà été réalisée l'an dernier dans le cadre d'un mémoire de programmation de master portant sur le calibrage de scanner, c'est-à-dire de correction automatique des couleurs des images numérisées de manière à s'approcher le plus possible des couleurs des images originale.

Il s'agit ici de réutiliser ce travail pour réaliser la seconde étape de la chaîne, le calibrage d'imprimante.

Couleurs fiables : calibrage

Les couleurs d'une image numérique sont le plus souvent exprimées au moyen de triplets de coordonnées Rouge, Vert, Bleu (on parle dans ce cas de représentation dans l'espace de couleur RGB, ou de modèle RGB). Le modèle RGB correspond au codage des couleurs dans la mémoire graphique d'un ordinateur. Chaque couleur est définie par un triplet (r, g, b) codant une intensité de rouge, de vert et de bleu. On peut supposer que chaque coordonnée est un entier entre 0 et 255. Par exemple un rouge pur est codé par (255, 0, 0). L'affichage de cette couleur sur un écran vidéo est obtenu avec une excitation maximale des photophores rouges tandis que les photophores verts et bleus demeures inactifs. L'avantage de ce modèle est sa simplicité et son adéquation avec le format des images couleurs en machine. Son inconvénient majeur est d'être dépendant des caractéristiques chromatiques du périphérique utilisé. Ainsi l'apparence visuelle de la couleur rouge de coordonnées (255, 0, 0) sera celle des photophores rouges de l'écran sur laquelle elle est affichée. Sur un écran d'un autre type, cette couleur différera sensiblement. La différence sera encore plus importante lorsqu'on change de type de périphérique, par exemple lorsqu'on affiche sur un écran une image numérique produite par un scanner.

En résumé, le modèle RGB est donc un système de représentation très simple à utiliser, mais qui est dépendant des caractéristiques de chaque périphérique d'affichage. Le modèle Cyan, Magenta, Jaune (modèle CMY) complémentaire du précédent, correspond au codage des couleurs obtenues par mélange de peintures ou d'encres, ce qui correspond au procédé d'affichage sur une imprimante. Il possède les même avantages (simplicité de mise en oeuvre) et inconvénients (aspect dépendant de chaque matériel) que le modèle RGB.

Pour résoudre le problème de la fiabilité des couleurs on utilise des espaces de représentation normalisés, qui sont indépendants de tout périphérique. Le modèle normalisé de référence est le modèle CIE-XYZ dans lequel chaque couleur est décrite par un triplet de coordonnées (X, Y, Z). Il a été construit en fonction des caractéristiques physiques de la lumière et des propriétés du système de vision humain. Il existe d'autres systèmes normalisés dérivant du modèles XYZ, comme le modèle CIE-L*a*b*.

Le problème de la représentation fiable des couleurs revient à connaître la transformation T permettant de passer d'un espace RGB à l'espace normalisé et sa transformation réciproque T-1. Supposons par exemple que TS (resp TM.) est la transformation permettant de passer de l'espace RGB d'un scanner S (resp. d'un moniteur M) dans l'espace normalisé. Pour afficher sur le moniteur M une couleur identique à celle lue par le scanner S, il suffit en théorie d'afficher la couleur

TM-1 ( TS ( c ) ).
De même, si TI est la transformation permettant de passer de l'espace CMY d'une imprimante I dans l'espace normalisé, pour imprimer de manière fiable la couleur, on enverra sur l'imprimante le résultat de la transformation TM est connue. On dispose d'une méthode pour estimer TS (projet de l'an dernier). Nous allons dans ce projet nous concentrer sur le codage d'une méthode pour estimer TI
TI-1 ( TS ( c ) ).
La principale difficulté est de construire la transformation T d'un périphérique donné. C'est ce que l'on apelle son calibrage.

On suppose ici que l'écran est calibré, et donc que la transformation

Calibrage couleur d'une imprimante

Pour calibrer une imprimante, il est nécessaire de comparer numériquement les couleurs à imprimer avec les couleurs produites par l'imprimante. On utilise par exemple une charte de couleurs obtenu en échantillonant le cube CMY

L'idéal pour mesurer les couleurs imprimées est d'utiliser un colorimètre, qui est un instrument précis mais coûteux. Une autre possibilité, moins fiable mais plus accessible, est d'utiliser un scanner calibré. C'est ce que nous allons faire ici en réutilisant la première partie du projet de calibrage. On construit ensuite une transformation entre les couleurs affichées sur l'imprimante (espace CMY) et l'expression de ce couleurs dans l'espace de référence CIE-L*a*b*. On triangule pour cela l'espace CMY et l'on décompose ainsi l'espace CMY en tétraèdres (pyramides) réguliers. À chaque tétraèdre régulier de l'espace CMY correspond un tétraèdre irégulier de l'espace CIE-L*a*b*.

Pour chaque couleur de l'espace de référence CIE-L*a*b* que l'on veut imprimer, on recherche le tétraèdre qui la contient et on calcule la couleur CMY correspondante par simple interpolation. (voir par exemple le papier de Hardeberg et Schmidt).

Travail demandé

  1. Étude et apprentissage du programme de calibrage de scanner déjà développé.
  2. Implémentation de la transformation de CIE-L*a*b* dans CMY et écrituer d'une fonction de cacul de calibrage.
  3. Écriture d'une fonction de correction d'image (application du calibrage)
  4. Mise en oeuvre ces fonctions (commandes, éventuellement plugin Gimp...)

Moyens nécessaires

Environnement de développement GNU/Linux. Scanner. Imprimante couleur.