Vous êtes sur la page 1sur 9

TECHNIQUES DE SEGMENTATION D’IMAGES PAR CROISSANCE DE REGIONS

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.

N ous avons vu (CHAPITRE I) que la formation de régions peut être


réalisée suivant plusieurs manières, principalement par division et/ou
fusion d’ensemble de points fondée sur des critères globaux, ou par
agrégation de points basée sur des critères de similarité locaux.
L’approche par croissance de régions est l’agrégation de points, en utilisant des critères qui
tiennent compte à la fois du contexte local et des informations sur la région formée, a donc été
retenue. Cette approche permet une meilleure efficacité quand à la rapidité et à la taille de mémoire
nécessaire à la structure des données relatives aux régions et leurs attributs.

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é.

Ø La différence entre le niveau de gris de la région en cours de formation et le niveau de


gris du le pixel candidat (pour l’implémentation nous utilisons ce prédicat).

Ø La différence entre la moyenne des niveaux de gris de la région en cours de formation


et le niveau de gris du pixel candidat.

III.1 Algorithme généralisé de la croissance de régions

Les algorithmes de croissance de régions reposent sur des principes de fonctionnement


identiques :

► 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).

► Initialisation de la région et de son modèle par un ensemble de pixels, noté G et appelé


noyau ou région-noyau (germe).

-49-
TECHNIQUES DE SEGMENTATION D’IMAGES PAR CROISSANCE DE REGIONS
CHAPITRE III

► Croissance de la région en respectant la connexité des pixels avec la région et en


examinant la possibilité d’appartenance à la région en cours de formation.

► Le processus s’arrête selon deux conditions :

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.

III.2 Algorithme récursif de la croissance de régions

Soit la notations suivante :

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.

L’algorithme principal (d’appel) est le suivant :

ALG III.1 : ALGORITHME DE LA CROISSANCE DE REGION GENERALISEE

/* 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

La procédure récursive qui assure la croissance d’une région est la suivante :

ALG III.2 : ALGORITHME DE LA PROCEDURE DE CROISSANCE

/* 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 :

ALG III.3 : ALGORITHME DU PREDICAT DE LA CROISSANCE

/* Algorithme GR_03 */
FUNCTION PRED(PIXEL P1, PIXEEL P2)
{
Si VALEUR_ABSOLUE(P1-P2) < SEUIL Alors
RETURN VRAIS ;
Sinon Alors
RETURN FAUX ;
Fin Si
}

Le principal avantage de la récursivité réside dans sa simplicité d’implémentation, sa vitesse


d’exécution est rapide, mais il présente plusieurs inconvénients :

1. Un algorithme de croissance récursive ne tien compte d’aucune hiérarchie dans l’appartenance


des points examinés. Les points ayant un fort degré d’appartenance à la région en cours de
formation sont traités de la même façon que les autres points. En fait il se peut que des points
éloignés du noyau peuvent lui être associés avant que d’autres points plus proches ne soient
examinés. Ce problème peut être évité en effectuant un test sur les voisins prioritaires, la priorité
d’annexion est donnée au point voisin qui vérifie le sens d’évolution de la région (voir croissance
isotrope à la suite).

2. A cause de la récursivité de l’algorithme il arrive parfois que cette simplicité rencontre un


problème majeur au niveau de la gestion de la mémoire, et la gestion de la pile, car la fonction de
récursivité appel elle-même, alors à chaque appel l’adresse actuelle de l’appel est stockée dans la
pile, ce problème apparaît lorsque l’appel de la fonction est très profonde. Le facteur essentiel qui
cause ce problème de dépassement de la capacité de la pile est situé dans l’instruction suivante :

Si VALEUR_ABSOLUE(P1-P2) < SEUIL Alors ...


Lorsqu’on choisi SEUIL très grand, le pixel P2 sera affecté à la région en cours de formation,
puis on exécute l’instruction suivante :

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.

III.3 Algorithme optimal de croissance de régions récursive


optimale
La procédure de croissance récursive est modifiée de la manière suivante :

-51-
TECHNIQUES DE SEGMENTATION D’IMAGES PAR CROISSANCE DE REGIONS
CHAPITRE III

ALG III.4 : ALGORITHME DE LA PROCEDURE DE CROISSANCE OPTIMALE

/* 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.

III.4 Algorithme isotrope de la croissance de régions

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 :

Pixel courant (examiné).

1er Pixel à inspecter.

2éme Pixel à inspecter.

3éme Pixel à inspecter.

1éme Pixel à inspecter.

Figure III.1 : Ordre de priorité des voisins pour le pixel examiné.

-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.

Figure III.2 : Déroulement d’une segmentation par croissance de régions isotrope

S0 S1 S2 Sn
Taille de la pile
STACKS -> PUSH()
Pointeur de pile

STACKS -> POP() Contenu de l’adresse Adresse de la variable


Mémoire

Figure III.3 :Schéma synoptique d’une pile FIFO.

-53-
TECHNIQUES DE SEGMENTATION D’IMAGES PAR CROISSANCE DE REGIONS
CHAPITRE III

ALG III.5 ALGORITHME DE LA CROISSANCE DE REGION ISOTROPE

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.

► STACKS -> PUSH(&PIXEL) : Procédure qui insère un pixel à la fin(queue) de la pile.

► STACKS -> POP(&PIXEL) : Procédure qui extrait un pixel du haut de la pile.

III.5 Algorithme de COCQUEREZ pour la croissance de régions

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

Où S désigne l'ensemble des pixels de l'image.

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.

ALG III.6 : ALGORITHME DE CROISSANCE DE REGIONS DE COCQUEREZ

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

/* b- Phase itérative : construction des itérés Ri(k) */


S(k+1)= S(k) -Ri(k) ;

Construction des Ri(k+1) à partir de Ri(k) et S(k+1) ;

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

III.6 Résultats pratiques

Figure III.4 : Images de test, à gauche Bureau.bmp et droite Cameraman.bmp

Figure III.5 : Images de résultat, à gauche BureauIso.bmp et droite CameramanIso.bmp

-56-
TECHNIQUES DE SEGMENTATION D’IMAGES PAR CROISSANCE DE REGIONS
CHAPITRE III

Figure III.6 : Images de résultat, à gauche BureauRec.bmp et droite CameramanRec.bmp

Figure III.7 : Images de résultat, à gauche BureauCoc.bmp et droite CameramanCoc.bmp

Le tableau suivant récapitule les résultats avec les différents paramètres :

Nom de l’image Type de croissance Seuil Seuil de fusion Nbr de régions


BureauRec.bmp Récursive 42 3 254
BureauIso.bmp Isotrope 42 3 256
CameramanRec.bmp Récursive 42 3 256
CameramanIso.bmp Isotrope 58 3 256
CameramanCoc.bmp Cocquerez 42 3 256

CameramanCoc.bmp Cocquerez 58 3 256

-57-

Vous aimerez peut-être aussi