English version

Le Coin du Traitement d'Image


Algorithme rapide de segmentation hiérarchique en régions
Précédent 

Hiérarchique ?

Nous avons vu que le problème majeur de la segmentation en région est la difficulté d'obtenir le bon nombre de régions. En effet, chaque objet possède sa propre échelle. Dans l'image "maison" 512x512 pixels ci-dessous du projet MOVI de l'INRIA, les lettres sur le sol ont une taille d'environ 50 pixels, les fenêtres de 500 pixels et la facade avant de 10000 pixels.
En posant la contrainte de régions de taille supérieure à 5000 pixels, la facade de la maison est bien extraite comme une région mais les petites lettres ont disparues. Inversement, autoriser des régions de 50 pixels engendre beaucoup de petite régions sur la facade qui perd alors son aspect global :

=> Tout objet possède sa propre échelle

Click to enlarge. Click to kill. Click to enlarge. Click to kill. Click to enlarge. Click to kill. Click to enlarge. Click to kill.
Image initialeTaille min=50px
(320 régions)
Echelle des lettres
Taille min=500px
(98 régions)
Echelle des fenêtres
Taille min=5000px
(21 régions)
Echelle de la façade

C'est pourquoi une image des régions n'est pas un résultat suffisant pour être exploitable : il faudrait dans l'idéal une image des régions pour chaque échelle. D'où le terme "hiérarchique".


Présentation de l'algorithme

Le principe de l'algorithme utilisé est similaire à celui d'un algorithme de fusion :

L'aspect hiérarchique de l'algorithme s'obtient en bouclant sur les tailles minimales croissantes spécifiées et en sauvant les résultats pour chacune. Le processus repartant du résultat de la taille minimale précédente, le traitement d'une échelle supplémentaire est non seulement très rapide, mais il assure aussi que les nouvelles régions seront un assemblage d'une ou plusieurs régions de l'échelle précédente.
Cette propriété est très importante, car elle permet une mise en forme du résultat en pyramide de région.

Les informations de sortie sont différentes de celles d'un algorithme classique :

Note : Une phase de débruitage de l'image (similaire à un filtre alterné séquentiel mais en plus rapide) a été incorporée avant la phase de fusion pour améliorer la robustesse au bruit.

Note : L'algorithme utilise l'information de couleur quand elle est disponible.


Temps de calcul

L'objection à venir est la suivante : appliquer cet algorithme tel quel entraîne des temps de calcul prohibitifs (O(N²) en nombre de pixels de l'image).
Quelques approximations mineures, notamment celle du recalcul du "gradient entre régions", et une implémentation efficace du tri par ordre croissant de gradient des voisinages de régions en viennent à bout.

Pour donner un ordre d'idée, le résultat précédents sur l'image "maison", de taille 512x512 pixels, a été obtenu en 0.35 secondes (0.31 s pour les deux premières échelles (50 et 500) et 0.28 s pour la première seule (50)).

L'algorithme a été implémenté en C++ (compilé avec GNU g++ 3.2.2 option -O2 sous Linux, sur un processeur AMD 1800+).


Autres exemples de résultats

La première ligne affiche les images avec des couleurs particulière pour faire ressortir les contrastes. La couleur des régions est la couleur moyenne.
La seconde ligne affiche les images avec des couleurs aléatoires par zones.

Paramètres de l'algorithme :


Image 640x480 de la grue du site Microsoft de Cambridge, traitée en 0.39 s

Click to enlarge. Click to kill.
Image initiale
Click to enlarge. Click to kill. Click to enlarge. Click to kill. Click to enlarge. Click to kill. Click to enlarge. Click to kill.
Click to enlarge. Click to kill. Click to enlarge. Click to kill. Click to enlarge. Click to kill. Click to enlarge. Click to kill.
Image initialeTaille min=40px
(697 régions)
Taille min=300px
(172 régions)
Taille min=2000px
(31 régions)

Image 768x576 du chateau de Leuven, traitée en 0.63 s

Click to enlarge. Click to kill.
Image initiale
Click to enlarge. Click to kill. Click to enlarge. Click to kill. Click to enlarge. Click to kill. Click to enlarge. Click to kill.
Click to enlarge. Click to kill. Click to enlarge. Click to kill. Click to enlarge. Click to kill. Click to enlarge. Click to kill.
Image initialeTaille min=100px
(969 régions)
Taille min=400px
(260 régions)
Taille min=2500px
(58 régions)

Précédent 

visiteurs
Généré avec l'outil webSitePP.py
Dernières modifications le 20 octobre 2004