Académique Documents
Professionnel Documents
Culture Documents
CHAPITRE III
Résumé
L’objectif de ce chapitre est de présenter les différentes méthodes de segmentation d’images par
croissance de région. Le but est de fournir une représentation pertinente de l’image avec des primitives de
type Régions uniformes au sens des niveaux de gris.
Dans ce chapitre nous présentons les algorithmes de croissance de régions
Mots clefs : Croissance de région, Croissance isotrope, Utilisation d’une pile FIFO pour la croissance,
croissance simple germe.
La méthode de croissance de régions est une méthode ascendante qui, partant de la représentation
de l’image comme un ensemble de pixels, les regroupe selon un double critère d’homogénéité et
d’adjacence. Cette méthode est conduite par l’utilisation d’un mode de contrôle définie a priori et
appelé prédicat. Le prédicat, notée PRED par la suite, permet d’identifier une contrainte que
doivent satisfaire les régions, par exemple le prédicat pour une région R peut être :
Ø La variance des niveaux de gris de l’image associés aux points de la région R est
inférieure à un seuil préfixé.
► Définition d’un prédicat PRED(Rc, Pc) pour mesurer le degré de similarité du pixel
examiné Pc avec la région en cours de formation Rc. (Rc : Région courante, Pc : Pixel courant).
-49-
TECHNIQUES DE SEGMENTATION D’IMAGES PAR CROISSANCE DE REGIONS
CHAPITRE III
1. Si toutes les régions ont été formées est il n’existe plus de pixel candidat, ou de
régions noyau.
2. Si le prédicat n’est plus vérifié pour tous les pixels voisins à la région en cours de
formation.
Pc : Pixel courant.
Pv : Pixel voisin au pixel courant au sens de la 8-connéxité.
Rc : Région en cours de formation.
G : Noyau de la région en cours de formation.
/* Algorithme GR_01 */
Pour tous les points de l’image source Faire
Tant qu’il existe des pixels candidats
G ß Pc ; // Pc est un nouveau noyau
Rc ß G ; // Initialise la région courante
Pc ß MARQUE ; // Marque le pixel courant
COWING_AREA(Rc, G) ; //Procédure de croissance
Fin tant que
Fin Pour
/* Algorithme GR_02 */
PROCEDURE GROWIN_AREA(REGION Reg, PIXEEL Pxl)
{
Pour tous les voisins de Pxl Faire
Si PRED(Pv, Pxl) est vrai Alors
Reg ß Pv ;
GROWIN_AREA(Reg, Pv) ;
Fin Si
Fin Pour
}
-50-
TECHNIQUES DE SEGMENTATION D’IMAGES PAR CROISSANCE DE REGIONS
CHAPITRE III
La fonction qui calcul le prédicat fait la différence entre le niveau de gris du noyau de la région et
le pixel candidat, pour faire fusionné le pixel courant avec la région en cours de formation il faut
que le résultat soit inférieur à un seuil (noté SEUIL), si non on passe a un autre candidat,
l’algorithme est la suivant :
/* Algorithme GR_03 */
FUNCTION PRED(PIXEL P1, PIXEEL P2)
{
Si VALEUR_ABSOLUE(P1-P2) < SEUIL Alors
RETURN VRAIS ;
Sinon Alors
RETURN FAUX ;
Fin Si
}
GROWIN_AREA(Reg, P2) ; qui est une fonction récursive (la fonction appelle elle-même), puis
le processus ce répète un certain nombre de fois, parfois jusqu’à l’épuisement de la pile.
-51-
TECHNIQUES DE SEGMENTATION D’IMAGES PAR CROISSANCE DE REGIONS
CHAPITRE III
/* Algorithme GR_02 */
PROCEDURE GROWIN_AREA(REGION Reg, PIXEEL Pxl)
{
Pour tous les voisins de Pxl Faire
Si PRED(Pv, Pxl) est vrai Alors
Px = Le voisin qui vérifie PRED(Pv, Pxl) soit optimal ;
Reg ß Px ;
GROWIN_AREA(Reg, Pv) ;
Fin Si
Fin Pour
}
Dans ce cas, la formation de la région n’est pas conditionnée par une direction donnée,
mais dépend uniquement des données. Toutefois, ce type de croissance s’avère inefficace lorsque
le noyau qui caractérise la région n’est pas fiable car dans ce cas l’algorithme converge vers la
meilleure région au sens de la ressemblance au noyau.
La croissance de régions est non homogène dans le sens où des points éloignés du noyau seront
tester et éventuellement annexés alors que des points plus proche n’auront pas été testés.
Pour remédier au premier problème (priorité entre les pixels à examiner), un contrôle sur
le choix des voisins du pixel courant est introduit de manière à tenir compte de l’éloignement du
pixel testé par rapport au noyau.
Cette idée sera implémentée en mémorisant les frontières de la région en cours de formation dans
une pile de type FIFO (Figure III.3) (First In First Out, ou Queue : le premier entré le premier
sorti), les points de frontière sont traités séquentiellement, lorsqu’un nouveau point est annexé, la
frontière est mise à jour, les nouveaux points de celle-ci sont placés à la fin dans la pile et sont
donc traités après les points de l’ancienne frontière.
Le fait d’ajouter des pixels à la pile, ceci repose sur une certaine direction de priorité sur les pixels
voisins. Nous présentons dans ce qui suit (Figure III.1) l’ordre de priorité entre les pixels voisins :
-52-
TECHNIQUES DE SEGMENTATION D’IMAGES PAR CROISSANCE DE REGIONS
CHAPITRE III
Le processus du déroulement de la croissance de régions isotrope est illustré par la (Figure III.2) :
Pixel courant.
Pixels de l’image originale.
Pixel germe, ou région-noyau.
Pixels de la région en cours de formation.
Pixels voisin au pixel courant, ou pixel candidat.
S0 S1 S2 Sn
Taille de la pile
STACKS -> PUSH()
Pointeur de pile
-53-
TECHNIQUES DE SEGMENTATION D’IMAGES PAR CROISSANCE DE REGIONS
CHAPITRE III
PIXEL SEED
SEARCH_SEED(&SEED) ;
STACK_FIFO PILE ;
Mat_SEED(n) = 0 : n=0èTaille de l’image.
PILE -> Empty() ;
PILE -> PUSH(&SEED) ;
PILE -> PUSH(&Tous les VOISINS DE SEED) ;
FAIRE
PILE -> POP(&SEED) ;
/* TESTE SI LE NOUVEAU GERME N'A PAS ETAIS PRIS AU PARAVENT */
Si (Mat_SEED(SEED) != SEED_STACKS_LABEL) Alors
/* ON LE MARQUE COMME GERME DEJA UTILISER */
Mat_SEED(SEED) = SEED_STACKS_LABEL ;
Pour tous les voisins de SEED Faire
Si Mat_SEED(VOISIN) != SEED_STACKS_LABEL &&
Mat_SEED(VOISIN) != SEED_REGION_LABEL &&
SEED != VOISIN Alors
Mat_SEED(VOISIN) != SEED_REGION_LABEL ;
Si PRED(VOISIN) = vrai Alors
PILE -> PUSH(&VOISIN) ;
REGION ß VOISIN ;
Fin Si
Fin Si
Fin Pour
Fin Si
Tant Que( !PILE -> Empty())
► Mat_SEED(PIXEL) : Matrice qui sera utilisée pour identifier les pixels de l’image source, Si sa
valeur est égale à SEED_REGION_LABEL alors le pixel appartient déjà à une région, si sa valeur
égale à SEED_STACKS_LABEL le pixel à été déjà pris comme germe.
► SEARCH_SEED(&PIXEL) : Est une procédure qui cherche le germe initiale selon un critère
déterminer, par exemple : le germe initiale est le pixel qui a le niveau de gris le plus grand.
L'image est supposée partiellement segmentée : l'algorithme a déjà déterminé (i-1) régions Rk,
k=1..i-1. La région suivante Ri est construite dans l'ensemble non segmenté S0 :
i =1
S0 = S − UR k (III . 1 )
k =1
-54-
TECHNIQUES DE SEGMENTATION D’IMAGES PAR CROISSANCE DE REGIONS
CHAPITRE III
Le germe Ri(0) de la nouvelle région Ri est le site de niveau de gris maximal dans la région S0.
Puis la région Ri croît par agrégations successives de pixels. Soit Ri(q) l'évaluation de Ri
obtenue après la qème étape de construction. Ri(q+1) est alors définie par:
Ri (q + 1) = Ri (q ) U {s ∈ S (q + 1) s ℜ1 Ri (q ) et s ℜ 2 Ri (q )} (III .2 )
Où S(q+1)=S(q) - Ri(q) : c'est-à-dire que les points rajoutés à Ri(q) pour former Ri(q+1) n'ont pas
déjà été classés.
ℜ1 : Est une relation de connexité entre un point et une région : on rajoute des points à
Ri(q) de manière à ce que Ri(q+1) reste connexe.
ℜ 2 : Est une relation de similarité radiométrique entre un point et une région : on rajoute à
Ri(q) des points suffisamment proches d'une caractéristique moyenne de Ri(q) définie par
l'utilisateur: moyenne, dynamique, contraste ... Ainsi, il est possible de choisir la caractéristique à
examiner en fonction de l'image à segmenter.
i=1;
/* a- initialisation de la région Ri(0)*/
k=0;
Si i = 1 Alors
S(0) = S ;
Si non
i −1
S(0) = S - U Rj
j =1
;
Fin Si
Si PRED(Ri(k+1)) Alors
Si S(k+1) = ∅ Alors
Arrêt ; // Toutes les régions vérifient le prédicat
Si non
Ri = Ri(k+1) ;
i++ ;
Aller en a-
-55-
TECHNIQUES DE SEGMENTATION D’IMAGES PAR CROISSANCE DE REGIONS
CHAPITRE III
Fin si
Si non
Si S(k+1) = ∅ Alors
Arrêt ; // i-1 régions vérifient le prédicat
Si non
k++ ;
Aller en b- // Poursuite de la croissance
Fin si
Fin si
-56-
TECHNIQUES DE SEGMENTATION D’IMAGES PAR CROISSANCE DE REGIONS
CHAPITRE III
-57-