« Analyse et segmentation d’images aériennes de haute-résolution
du département de Haute Savoie »

>> Rapport de stage

>> Images résultats



Durée du stage : du 5 juin 2006 au 13 juillet 2006

Lieu : Laboratoire MAP ARIA, école d'architecture de Lyon

École d'architecture de Lyon
3, rue Maurice-Audin, BP 170, 69512 Vaulx-en-Velin Cedex
téléphone : 04 78 79 50 85, télécopieur : 04 78 80 40 68
mail :
xavier.marsault@aria.archi.fr



Auteur : Matthieu Aubry (matthieu.aubry@gmail.com)

Maître de stage : Xavier MARSAULT, docteur-ingénieur des TPE, enseignant-chercheur permanent à MAP-ARIA (xavier.marsault@aria.archi.fr )



Rapport

Préambule

Mon stage au laboratoire MAP ARIA de l'école d'architecture de Lyon s'est déroulé du 5 juin au 13 juillet 2006, soit une période de 6 semaines. Le stage intervient dans le cadre de la 3ème année de mes études à l'INSA de Lyon, dans le département informatique.

Il m'a été confié un travail précis sur un sujet délimité, mais ouvert à l'expérimentation et à la recherche de nouvelles solutions. Ce sujet avait été travaillé par un stagiaire (Jean Fortin) pendant 2 mois durant l'été 2005. Je devais donc continuer son travail et essayer d'arriver à des résultats probants et intéressants. Ce travail se déroule dans le cadre d'un projet de la région Rhone-Alpes intitulé DEREVE (Développement d’un Environnement de Réalité Virtuelle Elaboré) qui associe un certain nombre de laboratoires : le LIRIS, l’INRIA, MAP-ARIA, entre autres. Le sujet de mon stage est « Analyse d’images aériennes de haute-résolution du département de Haute Savoie »

Description du projet global du laboratoire

Citation décrivant le projet global

« Des travaux de recherche en cours à MAP-ARIA concernent l’habillage procédural et le rendu en temps réel de grands terrains. La modélisation procédurale est probablement la seule approche permettant l’enrichissement de bases de données limitées, avec un nombre élevé de niveaux de détails à différentes échelles, exploitant au mieux la redondance des éléments d’un paysage. La stratégie que nous proposons est une approche dite d’« amplification », ajoutant à la volée, aux zones proches du point de vue, de la géométrie texturée plausible, réaliste et efficace en termes de temps de génération et de rendu.


Le champ d’expérimentation choisi est le département de Haute Savoie, pour lequel on dispose d’une couverture aérienne et d’un modèle numérique de terrain (MNT) de forte résolution (un point au sol tous les 5 mètres, et 1 pixel tous les 50 centimètres) sur ses 4388 km2 d’étendue.

Malgré leur forte résolution et leur qualité, ces photographies offrent un réalisme limité dès que l'observateur se rapproche du sol. Il devient alors nécessaire de les enrichir et d’ajouter des éléments habillant le terrain. Comme on a 100 fois plus de pixels que de points de terrain, c’est l’information de texture qui va guider l’amplification du sol, car elle donne accès à la connaissance précise de sa nature, en plus de la connaissance morphologique déduite de sa géométrie. »

Description de mon sujet de stage

Dans le cadre du projet d'amplification du sol, il est absolument nécessaire d’analyser les images aériennes, dans le but d’obtenir un classification zonale de la nature du terrain.


L’idée est de s’inspirer des méthodes utilisées par les travaux existants pour compléter la panoplie des paramètres utiles pouvant servir à une bonne classification des clusters de pixels de ces images.

Une remarque s’impose : le travail demandé n’est pas la reconnaissance automatique de motifs de textures dans une bibliothèque d’images aériennes, ce qui est très difficile, même à l’heure actuelle. Il s’agit de réaliser une classification semi-automatique (avec apprentissage) et de définir des classes dans une banque d’images très similaires, qui seront ensuite nommées par un opérateur (donc reconnues visuellement).


L'objectif global est donc le problème classique de segmentation de textures. Comment, pour une

photo donnée, associer automatiquement à chaque pixel le type de terrain auquel il correspond ?

Pour parvenir à cet objectif, nous avons à notre disposition un algorithme développé par l'INRIA permettant de faire l'apprentissage de patterns et la classification en utilisant la technique probabilistique des champs de markov cachés.


Problématique

La littérature est très riche en ce qui concerne le problème de la reconnaissance de similarité entre différentes textures. Dans ce cas il est très intéressant d'utiliser des propriétés spatiales classiques car on s'intéresse à la globalité de l'image. La classification des pixels (segmentation) à partir de motifs connus est un problème moins traité et difficile. Du fait de l'utilisation de l'algorithme des champs de markov cachés, une grande partie du travail peut se résumer à la question : comment caractériser un motif connu (ce qui passe par la caractérisation de chacun de ses pixels) de la manière la plus pertinente et précise possible ?


L'objectif est de trouver les features (propriétés) de texture qui sont le plus significatives pour l'analyse et la classification. Ces features en chaque pixel de l'image sont la seule information dont dispose l'algorithme d'apprentissage et de classification ; ils doivent être savamment choisis.


L'utilisation de la technique des champs de Markov a une conséquence directe sur ces features : elles doivent être décorrélées. Nous en aurons donc un nombre limité, car il est difficile de trouver de nombreuses propriétés sur des pixels qui soient décorrélées et significatives. Par exemple on ne peut pas enregistrer dans le vecteur de features les 3 composantes R, G, B ainsi que la moyenne (niveau de gris) (R+G+B) / 3, car cette valeur est corrélé avec R, G, et B : cela fausserait la classification.


Les moyens à notre disposition (algorithme de l'INRIA) sont complexes et plusieurs configurations (jeu de paramètres) sont possibles. On peut notamment choisir entre différents algorithmes icm/gsf, choisir un nombre d'itérations maximum si la convergence n'est pas atteinte, il faut choisir les patterns (motifs utilisés pour l'apprentissage d'une texture donnée) qui seront utilisés pour la segmentation...


La problématique est de trouver l'association de paramètres la plus efficace (en terme de qualité et en temps de calcul) pour la segmentation des images de la base de données. Ces paramètres sont principalement les features en chaque pixel, les patterns utilisés pour la classification, l'algorithme et le nombre max d'itérations utilisé par le programme de l'INRIA.

Développement

Le principal problème est le choix des features. L'idée est de traduire avec des nombres

en chaque pixel de l'image.


Caractérisation locale


La caractéristaion locale est limitée. Sur un pixel donné nous avons seulement les informations relatives à la « couleur », traduite par défaut dans l'espace RGB classique.

Il existe alors différents espaces de couleurs : RGB, YUV, HSV, L1L2L3, niveau de gris.

Il faut que les paramètre obtenus traduisent le mieux et de manière décorrélées la couleur et la luminosité en un point. Il faut également pouvoir gérer le problème de l'ombre.

Après quelques tests, il s'avère que l'espace de couleur HSV est le plus efficace ; il traduit de manière pertinente avec 3 paramètres décorrélés la couleur, la luminosité, la saturation en un point.

Par contre, le problème de l'ombre n'est pas solvable avec cette technique de caractérisation d'un pixel (très peu voire aucun point commun entre une même texture éclairée ou à l'ombre) : il est donc nécessaire d'inclure des motifs à apprendre... à l'ombre.


Caractéristaion spatiale


La caractérisation spatiale est beaucoup plus vaste et permet de mettre en oeuvre des calculs plus complexes. Le problème qui vient alors rapidement à l'esprit est la véracité de ces calculs : peut on vraiment caractériser une certaine spatialité en un pixel donné de manière pertinente ? La spatialité n'est t'elle pas plutôt une caractéristique d'un motif (par exemple, 100*100 pixels) ? A quoi correspond le calcul en un point donné de telle ou telle transformée (est ce vraiment pertinent...) ?


Différents calculs sont envisageables :


Après quelques rapides tests qui se sont révélés peu probants sur la dimension fractale, sur l'espace KLT, sur les filtres de Gabor (je n'ai pas testé les critères d'haralick, mais je ne suis guère confiants sur leur intérêt à caractériser un pixel), j'ai expérimenté les gradients sur les composantes HSV.

Le gradient sur H caractérisant la différence de couleur en un point donnée, il était trop sensible au moindre changement de teinte. Le gradient sur la luminosité (très proche du gradient sur la saturation), s'avère lui beaucoup mieux représenter la notion de « granularité » ou « rugosité ».

Questions sans réponses à propos du code de l'INRIA

A la fin du stage, j'ai regroupé mes interrogations restées sans réponses. Il est important de trouver une réponse à ces questions car elles peuvent influencer de manière positive les résultats obtenus.




Limites & Problèmes de la technique des champs de Markov cachés

L'algorithme d'apprentissage / segmentation par champs de Markov cachés propose des résultats intéressants. Néanmoins il a des limites :

Conclusion

Durant les phases de test, je suis resté sur l'idée d'utiliser l'espace de couleur HSV, et de traduire la rugosité par le gradient sur S. Les résultats obtenus sont relativement probants. J'ai noté que la différence entre les algorithmes GSF et ICM étaient bien trop faibles pour mériter des tests approfondis.

Enfin, pour obtenir des résultats encore meilleurs, il faut lancer des batterie de tests (en utilisant l'outil de génération de scripts de tests) afin de regarder le comportement de la classification sur plusieurs types d'images, en changeant les patterns utilisés pour la classification, en changeant les features, etc.

Il faut également tester les différentes valeurs d'itérations max, et de trouver le nombre optimal qui minimise le temps de calcul et qui garde une bonne qualité de segmentation.

Références

Voici la liste des documents que j'ai utilisés

Images résultats

Comment interpréter une image résultat ?

Chaque image résultat est composée de

Ainsi sur la première image résultat ci dessous nous avons en entrée : le premier pattern "foret" qui a un nombre de sous classes (rentrée à la main donc) de 2, le pattern "roche" qui a un nombre de sous classes de 3, et le pattern "prairie" qui a un nombre de sous classes de 2. On effectue ensuite le calcul de segmentation par champ de markov cachés basées sur les features H et S et V de l'espace de couleur HSV. On colorie sur l'image résultat, l'image "after classification", chaque pixel par la couleur de la sous classe qui a été détectée (cette couleur est légendée par le petit carré à droite de l'image du pattern).



Features = HSV

Features = HSV

Features = HSV + GRAD H

Features = HSV

Features = HSV

Features = HSV

Features = HSV

Features = HSV + GRAD V

Features = HSV + GRAD V

Features = HSV + GRAD V

Features = HSV + GRAD V

Features = HSV + GRAD V

Features = HSV + GRAD V

Features = HSV + GRAD V