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
Image initiale | Taille 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
Image initiale | Taille 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
Image initiale | Taille min=100px (969 régions) | Taille min=400px (260 régions) | Taille min=2500px (58 régions) |
|