Chapitre VI : Les images binaires

Transcription

Chapitre VI : Les images binaires
Les images binaires
Chapitre VI : Les images binaires
Une image binaire est une image pour laquelle chaque pixel ne peut avoir pour valeur que 0
ou 1. La manipulation de telles images regorge d'outils spécialisés ainsi que de théories
mathématiques pour plusieurs raisons :
•
•
Les débuts du traitement des images numériques ne permettaient pas le traitement
d'images complexes (problème de temps de calcul, d'espace mémoire disponible et
qualité des périphériques de sortie). De plus, les premières applications
(reconnaissance de caractères, analyse de traces laissées dans les chambres à bulles par
des particules) vers 1950 s'adaptaient bien à ce type d'images.
Les images binaires sont un contexte simple permettant une formalisation
mathématique des problèmes par des outils tels que la topologie.
Dans le domaine de la vision industrielle (détection de défauts, contrôle qualité, mesure, ...)
on considère souvent l'image binaire comme un passage obligé, suivant en général la phase de
segmentation.
Deux catégories d'outils sont alors nécessaires pour d'une part le codage efficace (et
éventuellement la compression) et d'autre part pour le traitement (analyse et description des
formes).
V.1 – Quelques notions
Il existe un ensemble de notions propres aux images binaires. La plupart des notions exposées
ici relèvent d'un domaine particulier de l'analyse d'image : la géométrie discrète. Soit I une
image binaire et I(i,j) la valeur du pixel m de coordonnées (i,j) dans I.
V.1.a : Le fond et … la forme
Les deux classes forme et fond constituent une partition de l'image I telle que :
•
Forme = { m ∈ I tels que I(m) = 1}
1
Les images binaires
• Fond = {m ∈ I tels que I(m) = 0}
La forme peut représenter plusieurs objets (notion de composante connexe); certaines
composantes du fond peuvent représenter des trous dans les objets.
V.1.b : Segment
On appelle segment de l'image I, le quadruplet :
s = (g,d,l,v) vérifiant : ∀ i ∈ [g,d], I(l,i) = v avec bien sûr v = 0 ou 1
Un segment est donc une suite continue de pixels de même valeur sur une ligne donnée.
Chaque élément du quadruplet porte un nom :
•
•
•
•
g : gauche de s
d : droite de s
l : ligne de s
v : valeur de s
Bien sûr, cette décomposition de l'image en segments n'est pas unique car elle privilégie une
analyse ligne à ligne. Une analyse colonne à colonne est tout aussi envisageable. Les éléments
du quadruplet porteraient alors les noms haut, bas, colonne et valeur.
Soit S(i,x) l'ensemble des segments de la ligne i ayant pour valeur x :
S(i,x) = { s tels que : l(s) = i et v(s) = x}
L'ensemble S des segments de l'image I est défini par : S =US(i, x)
i, x
V.1.c : Connexité
On appelle relation de connexité et l'on note C0(s,s'), la relation définie sur S de la manière
suivante:
C0(s,s') ⇔ s dans S(i,x) et s' dans S(i-1,x) et g(s') < d(s)+1 ou g(s) < d(s')+1.
On dit alors que s est connecté avec s' ou que s et s' sont connexes.
C0(s,s') ⇔ C0(s',s)
La décomposition ligne à ligne est donc indépendante du choix de la ligne de départ. On note
C0* la fermeture transitive de C0. La figure 1 illustre cette relation de connexité entre les
segments.
2
Les images binaires
Connexité
Pas de connexité
Pas de connexité
Figure 1 : Relation de connexité entre des segments
V.1.d : Distance
Tout pixel d'une image est caractérisé par un couple de coordonnées (x,y). On peut donc
calculer des distances entre pixels. Les distances les plus courantes sont (pour deux pixels
P(xp,yp) et Q(xq,yq)):
Distance de Manathan : d1(P,Q)=|xp - xq| + |yp - yq|
Distance Euclidienne : d2(P,Q)=
(x p − xq )2 +( y p − yq )2
Distance de l'Echiquier : dinf(P,Q)=Max(|xp - xq| , |yp - yq|)
Ces distances sont reliées par la propriété :
dinf(P,Q) ≤ d2(P,Q) ≤ d1(P,Q)
Il existe des distances pour tous les éléments d'une image. Pour les distances entre pixels,
nous reporterons donc aux définitions précédentes. On notera par la suite d(p,q) la distance
entre deux pixels.
V.1.e : Voisinage d'un objet et connexité
On appelle voisinage d'ordre k du pixel P et l'on note Vk(P) l'ensemble des pixels Q définit
par:
Vk(P) = { Q tels que : 0 < d(P,Q) ≤ k }
Par extension, on définit le voisinage de tout composant A de I par l'union de tous les
voisinages des pixels de A.
On peut définir un objet par la relation de voisinage. On dit que deux points P et Q son
connectés si il existe un chemin connexe (suite de points P=P0, P1, ... , Pn-1, Pn=Q telle que Pi
est voisin de Pi-1) entre P et Q de points ayant la même valeur. Cette relation est une relation
d'équivalence, dont chaque classe définit un objet de l'image. Le type de voisinage utilisé
influe bien sûr sur les objets résultants. Des algorithmes très efficaces permettent d'étiqueter
les différents objets d'une image.
3
Les images binaires
La notion de connexité dérive de la notion de voisinage. Il existe principalement deux ordres
de connexité : 4 et 8. Ce nombre correspond à la taille du plus petit voisinage non vide d'un
pixel. Un pixel a 4 voisins directs si l'on choisit la distance d1, il en a 8 avec la distance dinf
Connexité d'ordre 8
Connexité d'ordre 4
Figure 2 : Connexité et voisinage
V.1.f : Courbe, arc
Une courbe est un chemin connexe dont tous les points possèdent exactement deux voisins.
Un arc est une courbe pour laquelle les deux points extrémités n'ont qu'un seul voisin.
V.1.g : Prédécesseurs
Il est nécessaire de définir cette notion dans le cadre du traitement des images binaires. Soit P
un pixel d'une image. Dans le schéma suivant, les pixels indiqués a sont les prédécesseurs du
pixel P dans un balayage avant, les pixels indiqués b sont les prédécesseurs de P dans un
balayage arrière.
j
i
a a a
a P b
b b b
Figure 3 : Désignation des prédécesseurs d'un pixel (en fonction du sens de balayage)
V.2 – Les composantes connexes
V.2.a : Introduction
Partant d'une image binaire, on souhaite souvent faire des mesures sur les ensembles de points
connexes qui la composent. Ces éléments sont appelés les composantes connexes de l'image.
L'étiquetage des composantes connexes d'une image binaire consiste à attribuer un label,
étiquette ou numéro différent pour chaque composante connexe et identique pour tous les
pixels d'un même composante. Il existe de nombreux algorithmes réalisant cette fonction. Ils
4
Les images binaires
dépendent de la connexité considérée et se différencient aussi par leur approche séquentielle
ou parallèle..
Une composante connexe peut alors être extraite par l'intermédiaire de son étiquette pour faire
un traitement spécifique. L'image des étiquettes est une formulation implicite des
composantes connexes; l'extraction aura pour but la transformation de cette formulation
implicite en une formulation explicite (liste des composantes connexes avec des attributs par
exemple).
V.2.b : Etiquetage séquentiel itératif
Il s'agit d'un algorithme purement séquentiel et qui ne nécessite que la structure image et un
compteur d'étiquettes comme structure de données. Le contenu de la matrice image est
modifié de manière itérative en alternant des parcours avant (indices des lignes et colonnes
croissants) et des parcours arrières (indices des lignes et colonnes décroissants) jusqu'à
stabilisation. Lors de ces parcours, le traitement suivant est appliqué en chaque point P :
Si P est un point objet (i.e. I(P) = 255)
Alors
Si P a des prédécesseurs points objets
Alors P prend pour valeur l'étiquette minimale de ses prédécesseurs
Sinon P prend pour valeur une nouvelle étiquette
Le nombre d'itérations dépend de la complexité des objets. Pour remédier à cela, on peut
définir un algorithme qui ne nécessite que deux parcours de l'image mais qui requiert en
contrepartie la gestion d'une table de correspondance.
V.2.c : Etiquetage séquentiel avec correspondance entre points
L'idée de l'algorithme est d'exploiter l'étiquetage effectué lors du premier parcours pour une
affectation finale des étiquettes ne demandant ainsi qu'un seul parcours supplémentaire. Une
table de correspondance T est créée et initialisée par T(i) = i. Le premier balayage séquentiel
de l'image est défini par le traitement suivant appliqué en tout point P
Si Tous les prédécesseurs de P appartiennent au fond
Alors Affecter une nouvelle étiquette à P
Sinon
Si Tous les prédécesseurs de P qui sont objet ont une même étiquette
Alors Attribuer cette étiquette à P
Sinon
Rechercher la plus petite étiquette e ≠ 0 de ces prédécesseurs
Affecter T(e) à P
Mettre à jour la table T par
Pour chaque prédécesseur d'étiquette a telle que T(e) != T(a)
Faire
Tant que T(a) != a
Faire
k = T(a)
T(a) = T(e)
a = k
Fin Faire
Fin Pour
Fin Si
Fin Si
5
Les images binaires
A la fin de ce balayage de l'image, on actualise la table T de manière à ce qu'à tout indice
corresponde l'étiquette définitive de l'objet.
Pour i = 1 à nombre d'étiquettes utilisées
Faire
j = i
Tant que T(j) != j Faire j = T(j)
T(i) = j
Fin pour
Au terme de ce traitement, les points d'un même objet peuvent avoir des valeurs différentes
mais la table T permet de toutes les faire correspondre à une même étiquette.
Le second balayage sert à l'attribution définitive sur l'image d'une même étiquette pour tous
les points d'un même objet. Cet algorithme nécessite donc deux balayages et l'emploi d'une
table de correspondance. Il induit également la génération de nombreuses étiquettes
temporaires dans le cas d'un objet de forme complexe, ce qui implique la définition d'une
table T de grande taille. Ceci est dû à la vue uniquement locale de l'algorithme lors de
l'attribution des étiquettes.
La figure 4 illustre le résultat de cette recherche. Les pixels blancs (255=forme) de l'image de
gauche sont rassemblés par "paquets" (composantes) connexes et à chaque composante
connexe correspond une couleur (non noire) dans l'image de droite.
Figure 4 : Recherche de composantes connexes
V.2.d : Etiquetage parallèle
L'image à étiqueter étant codée par la matrice A de taille N x M, on construit la suite (Ai)
d'images (i=0 ,...; n) avec A0 = A (image initiale) et An = image étiquetée finale.
L'algorithme est le suivant:
6
Les images binaires
Pour Tous les points de A
Faire en parallèle
Si A(i,j) = 1
Alors A(i,j) = (i-1)*N + j
Fin si
Fin pour
k = 1
Répéter
Pour Tous les points de Ak-1
Faire en parallèle
Si Ak-1(i,j) != 0
Alors Ak(i,j) = minimum sur le voisinage immédiat de Ak-1(i,j)
Sinon Ak(i,j) = 0
Fin si
Fin pour
Jusqu'à Ak-1 = Ak
L'algorithme converge en au plus
comptage de points modifiés.
Max(N,M) itérations. Le test d'arrêt se ramène à un
V.3 – La morphologie mathématique
V.3.a : Introduction
Un des traitements les plus importants réalisés sur une image binaire consiste à filtrer et/ou
partitionner les objets dans un but de représentation ou de modélisation. Les méthodes de
partitionnement, généralement contraintes par les propriétés géométriques des éléments
résultants (triangles, polygones, spirales (une seule suite d'arêtes à sommets concaves), carrés,
rectangles), fournissent une partition qui n'est pas nécessairement en accord avec la
morphologie de la forme. C'est pourquoi on adopte plus volontiers les décompositions par
recouvrement qui sont plus souples et aussi plus anthropomorphiques, c'est à dire qui
coïncident davantage avec les essais humains de compréhension des formes par
décomposition.
La morphologie mathématique est une manière d'aborder ce problème. La théorie des
ensembles est l'un des fondements de cette discipline; son espace de travail est l'espace
discret. L'idée de base de la morphologie mathématique, introduite par J. Serra et G. Matheron
en 1975, est de comparer les objets que l'on veut analyser à un autre objet de forme, appelé
élément structurant. En quelque sorte, chaque élément structurant fait apparaître l'objet sous
un jour nouveau, tout l'art consistant à choisir le ou les bons éclairages.
V.3.b : Les transformations ensemblistes
Fondamentalement, le morphologie mathématique a un caractère ensembliste. Les éléments
structurants définissent des primitives de base dont on pourra confirmer ou infirmer la
7
Les images binaires
présence dans la forme étudiée, au moyen d'opérations ensemblistes. Ceci correspond à une
nouvelle démarche dont nous disposons pour analyser qualitativement une image.
La morphologie mathématique utilise des opérations ensemblistes pour transformer l'image.
Ces opérations peuvent être classées en deux catégories : les transformations ensemblistes
classiques et les transformations en tout ou rien utilisant un élément structurant. Nous allons
présenter successivement ces deux cas.
V.3.b : Les transformations ensemblistes classiques
Considérons deux ensembles X et Y. Les opérations classiques dont nous disposons sont :
•
L'union : X ∪Y
•
L'intersection : X ∩Y
•
La complémentation : (X c )z = X c∩Z
Rappel : Le complémentaire est ainsi défini : un point x appartient au
complémentaire de X (Xc) s'il n'appartient pas à X, c'est à dire :
x∈X c ⇔ x∉X
En supposant un ensemble X intersecté par un masque Z. L'opération de
complémentation correspondra donc à l'intersection du complémentaire Xc par
le masque de mesure Z, que l'on notera (X c )z = X c∩Z .
A ces opérations, on peut ajouter :
•
La différence symétrique : X /Y = X ∪Y − X ∩Y
La figure 5 résume ces transformations.
A
B
A∪B
A∩B
A|B
(Xc)Z
Figure 5 : Les transformations ensemblistes classiques
8
Les images binaires
V.3.c : Transformations en tout ou rien par un élément structurant
Considérons un objet bi ou tridimensionnel et appelons X l'ensemble des points du plan (ou de
l'espace) constituant cet objet. La structure de X est donnée par l'ensemble de toutes les
relations entre ces différents points. Les transformations en tout ou rien forment un moyen
systématique pour étudier ces relations. Elles ne donnent pas en fait un paramètre
caractérisant la structure de X mais un nouvel ensemble.
Toutefois, la mesure d'un ou plusieurs paramètres suit toujours une ou plusieurs
transformations. L'information structurale est cependant donnée non par la mesure, mais par
la transformation de l'image elle-même, la mesure ne constituant que la quantification de cette
information structurale.
Pour faire une transformation en tout ou rien, nous devons choisir un élément B, de géométrie
connue, appelé élément structurant. Ensuite, cet élément structurant est déplacé de façon à ce
que son origine passe par toutes les positions de l'espace. Pour chaque position, on pose une
question relative à l'union, à l'intersection ou à l'inclusion de B avec X ou dans X. La réponse
sera positive ou négative, d'où le nom de transformation en tout ou rien. L'image des points
correspondants à des réponses positives forme un nouvel ensemble qui constitue ce que l'on
appelle l'image transformée.
Les transformations en tout ou rien remplissent certaines conditions caractéristiques dites
euclidiennes:
Invariance par translation : la transformée de la translation par un vecteur k d'un ensemble X
est égale à la translation de la transformée de X : T(Trk(X)) = Trk(T(X)).
Compatibilité avec les homothétie : Si λX est un ensemble homothétique de X et Tλ une
transformation dépendant de λ (λ>0). La transformation Tλ est compatible avec les
homothéties s'il est équivalent d'appliquer T1 à X ou bien d'agrandir (ou de réduire) X dans le
rapport λ, lui appliquer la transformation Tλ puis réduire (ou augmenter) le résultat dans le
rapport λ. Ceci se traduit par la relation :
1 T (λX)=T (X)
1
λ λ
Principales propriétés des transformations tout ou rien
Propriétés algébriques
Croissance : Une transformation est dite croissante si ayant un ensemble X inclus dans un
ensemble Y, le transformé T(X) est lui aussi inclus dans T(Y). Ceci se traduit par :
X ⊂ Y ⇒ T(X) ⊂ T(Y)
Extensivité : Une transformation est dite extensive si l'ensemble X est inclus dans son propre
transformé T(X). En d'autres termes :
∀X, X ⊂T(X)
9
Les images binaires
Idempotence : Une transformation est dite idempotente si ayant fait subir une transformation
T à X, et ayant renouvelé cette transformation sur T(X), on obtient des ensembles T(X) et
T(T(X)) égaux.
Propriétés topologiques
Homotopie : Une transformation est dite homotopique si elle ne modifie pas le nombre de
connexité (c'est à dire le nombre de parties disjointes composant un ensemble donné)
Préservation de la connexité : Si X est connexe, alors T(X) est connexe.
V.3.d : Transformation par érosion
La transformation par érosion est la première transformation en tout ou rien qui ait été
utilisée. C'est d'ailleurs avec la dilatation celle qui est la plus importante.
Pour définir l'opération d'érosion, nous allons nous situer dans un espace R2 partiellement
occupé par un ensemble X. Prenons un élément structurant B représentant une figure
géométrique simple, par exemple un cercle. Cet élément Bx est repéré par son centre et placé
en x dans l'espace R2 (figure 6). Il est ensuite déplacé de telle sorte que son centre occupe
successivement toutes les positions x de l'espace.
Pour chaque position, on se pose la question suivante : est-ce que Bx est complètement inclus
dans X ?, c'est à dire en notation ensembliste :
Bx ⊂ X ?
B
x2
X
B
x1
B
x3
Figure 6 : Principe de l'érosion d'un ensemble X par un élément structurant B de forme
circulaire : Bx1 est inclus dans X alors que Bx2 et Bx3 ne le sont pas
L'ensemble des positions x correspondant à une réponse positive forme un nouvel ensemble Y
appelé érodé de X par B. Cet ensemble satisfait à l'équation :
Y ={x / Bx ⊂ X }
L'érosion Y d'un ensemble X par un élément structurant B est notée habituellement : Y=EB(X)
10
Les images binaires
La figure 7 présente une érosion de l'ensemble de la figure 6 par un élément structurant B de
forme circulaire.
Figure 7 : Erosion de l'ensemble X de la figure 6 par un élément structurant circulaire
V.3.e : Transformation par dilatation
L'opération de dilatation se définit de façon analogue à l'opération d'érosion.
En prenant le même élément structurant Bx, on se pose pour chaque point x de R2 de savoir si
Bx touche l'ensemble X, c'est à dire si Bx et X ont une intersection non vide :
Bx ∩X = ∅ ?
L'ensemble des points x de R2 correspondant aux réponses positives forme un nouvel
ensemble Y dont la frontière est le lieu des centres géométrique de Bx lorsque Bx touche X.
L'ensemble Y satisfait à l'équation :
Y ={x/ Bx ∩ X ≠∅}
La dilatation d'un ensemble X par un élément structurant Y est habituellement notée Y=DB(X).
On en trouve un exemple sur la figure 8
Figure 8 : Exemple d'une dilatation de l'ensemble X de la figure 6 par un élément structurant
de forme circulaire
11
Les images binaires
V.3.f : Quelques propriétés de la dilatation et de l'érosion
Il est assez important de connaître les principales propriétés algébriques et topologiques de
ces deux transformations.
•
Croissance : Erosion et dilatation sont des transformations croissantes, c'est à dire que
si X est inclus dans X', alors le dilaté (ou l'érodé) de X par un élément structurant B est
inclus dans le dilaté (ou l'érodé) de X' par le même élément structurant B. en d'autres
termes :
E B(X)⊂ EB(X')
X ⊂ X'⇒D
 B(X)⊂ DB(X')
•
L'érosion est une transformation anti-extensive alors que la dilatation est une
transformation extensive, ce qui se traduit par l'expression :
X ⊂ DB(X)
EB(X)⊂ X
•
L'érosion et la dilatation ne sont pas des transformations idempotentes. Ceci est dû au
fait qu'il s'agit de transformations itératives
•
L'érosion et la dilatation ne sont pas des transformation homotopiques (préservation
du nombre de connexité). La figure 9 illustre cette propriété. L'érosion de l'ensemble
concave X par des éléments circulaires de taille croissante va d'abord augmenter le
nombre de connexité de 1 à 2. Celui-ci va ensuite diminuer à nouveau de 2 à 1 puis
deviendra nul. En suivant l'évolution du complémentaire XC, on voit que la dilatation
fait également varier le nombre de connexité N(XC).
•
On remarque également sur la même figure que lorsque l'ensemble X est connexe, la
dilatation préserve cette connexité si B est connexe. Par contre, de façon générale,
l'érosion ne préserve pas cette connexité même si B est connexe. Enfin, si l'ensemble X
est convexe, alors, l'érosion préservera sûrement la connexité et même la convexité
puisque l'érosion dans ce cas ne conduira qu'à l'intersection d'ensembles convexes.
V.3.g : Ouverture morphologique
L'ouverture est l'application de l'opérateur érosion puis de l'opérateur dilatation avec le même
élément structurant. On appelle ouverture d'un ensemble X par un élément structurant B et on
note OB(X) :
OB(X) = DB(EB(X))
En général, on ne retrouve pas l'ensemble de départ car une partie de la forme éliminée par
l'érosion ne peut être recrée par une dilatation. L'ensemble OB(X) est plus régulier (moins de
détails au niveau du contour) que l'ensemble initial X. En termes "géographiques" ou
morphologiques, on dit que l'ouverture adoucit les contours, coupe les isthmes étroits,
12
Les images binaires
supprime les petites îles et les caps étroits. On peut considérer que l'ouverture réalise une sorte
de filtrage morphologique de la forme de l'ensemble X. La figure 9 illustre ce comportement.
Figure 9 : Illustration de l'ouverture morphologique
V.3.h : Fermeture morphologique
La fermeture est l'opération "inverse" de l'ouverture, c'est à dire que l'on applique tout d'abord
une dilatation puis une érosion (toujours en gardant le même élément structurant):
FB(X) = EB(DB(X))
Un ensemble fermé est également moins riche en détail que l'ensemble initial. La
transformation par fermeture bouche les canaux étroits, supprime les petits lacs et les golfes
étroits (figure 10).
Figure 10 : Illustration de l'ouverture et de la fermeture morphologiques
sur des ensembles non connexes
Les deux opérations d'ouverture et de fermeture sont idempotentes, c'est à dire que le résultat
est invariant après itérations:
OB(X) = OB(OB(X))
FB(X) = FB(FB(X))
13
Les images binaires
Ces transformations ne sont pas homotopiques, i.e. elles ne préservent pas la connexité car
elles peuvent scinder une forme en deux (érosion) ou fusionner deux formes (dilatation). Elles
ne présentent donc pas de propriétés topologiques intéressantes. Ce ne sont que des
transformations d'aspect, de simplification ou de filtrage.
Il était donc utile de pouvoir disposer d'une transformation permettant de conserver les
propriétés topologiques des formes. C'est – entre autres – le but de la squelettisation.
V.4 – La squelettisation
V.4.a : Introduction
Le squelette est une représentation d'une forme très utilisée car il conserve les propriétés
topologiques de la forme qu'il représente. La notion de squelette est apparue pour l'étude des
objets minces. En effet, pour de telles figures, il est certains que c'est l'allure d'une
représentation filiforme qui est importante. La reconnaissance des caractères en constitue un
exemple typique.
La squelettisation est une étape essentielle de la reconnaissance de forme. Elle a pour but de
décrire chaque objet par un ensemble de lignes infiniment fines (analogues à une ossature de
l'objet), réduisant sensiblement le volume d'information à manipuler. Le squelette est
généralement défini comme étant l'ensemble des lignes médianes, c'est-à-dire l'ensemble des
points équidistants de deux points de la frontière. L'obtention du squelette des images
mosaïques binaires peut conduire à des erreurs de connexité
L'idée de squelettisation consiste à centrer dans la forme un squelette qui soit significatif de
l'élongation et des déformations de celle-ci. Typiquement, le squelette d'un cercle va alors être
son centre, celui d'une ellipse son grand axe, ... Malheureusement, le squelette, pour être
fidèle à la forme initiale, est très sensible au bruit (petite déformation du contour, présence
d'un trou, ...). Le calcul du squelette en morphologie mathématique est obtenu par une
transformation de voisinage décrite dans la suite.
V.4.b : Les transformations de voisinage
Une transformation de voisinage est une généralisation de l'approche tout ou rien utilisée pour
les opérateurs E (érosion) et D (dilatation). Elle est nécessaire pour définir le processus
d'obtention d'un squelette. Dans le cas d'un maillage hexagonal, un pixel a 6 voisins. On
définit une configuration de voisinage en attribuant à ces voisins l'une des trois valeurs
suivantes: 1, 0, 1 ou 0 (noté *).
Toutes les configurations identiques à une rotation près constituent une famille caractérisée
par une lettre de l'alphabet de Golay. La figure 11 présente l'alphabet de Golay en mode
hexagonal.
14
Les images binaires
Lettre Voisinage
Amincissement
Epaississement
Transformation tout ou
rien
Squelette
homotopique
Squelette par zone d'influence
.
Squelette
homotopique
Epaississement à partir de points
isolés
.
Marqueur
homotopique
Enveloppe quasi-convexe
.
.
Enveloppe fortement convexe
hexagonale
.
Squelette par zone d'influence
Points extrêmes du
squelette
.
Points isolés
.
Points triples
.
Points triples
.
Erosion, dilatation
Dilatation linéaire
.
_ 1 _ 1 _
L
* _ 1 _ *
_ 0 _ 0 _
_ 1 _ * _
M
1 _ 1 _ 0
_ 1 _ * _
_ 0 _ * _
D
0 _ 1 _ 1
_ 0 _ * _
_ 1 __
C
1 _ 0
_ 1 __
_ * _ * _
E
0 _ 1 _ 0 Ebarbulage
_ 0 _ 0 _
_ 0 _ 0 _
I
0 _ 1 _ 0 .
_ 0 _ 0 _
_ 1 _ 0 _
F
0 _ 1 _ 1 .
_ 1 _ 0 _
_ 1 _ 1 _
F'
* _ 1 _ * .
_ * _ * _
_ 1 _ 1 _
H
1 _ 1 _ 1 Contour
_ 1 _ 1 _
_ * _ * _
R
* _ 1 _ 0 Erosion linéaire
_ * _ * _
Figure 11 : Alphabet de Golay sur un maillage hexagonal
Par définition, une transformation de voisinage consiste à conserver les points centraux pour
lesquels le voisinage est en accord avec une configuration donnée. On note cette
transformation. Plus complexe que l'érosion et la dilatation, on peut ainsi définir
l'amincissement et l'épaississement. L'amincissement, noté «, consiste à enlever à un
ensemble X ses points correspondant à une configuration donnée C. L'épaississement, noté »,
consiste à rajouter des points à X. On a les relations suivantes:
15
Les images binaires
X « C = X ∪ X » C – X ∩ (X » C) = X / (X » C)
X » C = X ∪ (X « C)
où C est une configuration de voisinage.
On obtient le squelette par amincissement itératif jusqu'à idempotence X = X « C à l'aide de la
famille de voisinage L ou M.
Erodés ultimes :
La morphologie mathématique autorise également des procédés de décomposition, en
l'occurrence par recherche des érodés ultimes. L'objet initial est aminci jusqu'à ce que
plusieurs composants connexes apparaissent (érodés ultimes). La dilatation itérative avec
contrôle de l'inclusion dans l'objet initial définit les entités de la décomposition. Le procédé
peut ensuite être récursif sur les différentes entités, dans le cas d'un objet complexe.
Ces transformations se définissent également sur le maillage carré. Elles sont alors à la base
d'un algorithme effectivement utilisé pour réaliser la squelettisation.
V.4.c : L'algorithme d'épluchage/nettoyage
La première méthode permettant le calcul du squelette d'une image binaire est la méthode dite
des lignes de crêtes. Pour chaque point, on calcule la distance à la frontière : le squelette est
l'ensemble des points qui sont des maxima locaux de cette distance. Cette méthode,
finalement très intuitive, n'est pas forcément très aisée à mettre en œuvre, notamment vis à vis
de la caractérisation du voisinage.
Nous avons donc opté pour la présentation d'un algorithme plus "visuel" : l'algorithme
d'épluchage/nettoyage.
1ère phase : Epluchage
On considère que le pixel du fond est 0 et le pixel du motif 1. On balaye l'image avec les 16
masques 3x3 issus de la version "maillage rectangulaire" de l'alphabet de Golay. (Figure 12).
Si l'une des configurations est vérifiée, le pixel central est remplacé par 0. L'opération est
réitérée jusqu'à stabilité.
Les 16 masques à appliquer sont identifiés par le système de numération suivant :
Les 8 cases périphériques étant affectées à des puissances de 2 distinctes, chaque masque est
identifié de façon unique :
16
Les images binaires
Figure 12 : Les masques de l'épluchage
2ème phase : Nettoyage
Si les frontières de l'objet sont bruitées le squelette peut comporter beaucoup de barbules. Il
convient alors d'appliquer alors des post-traitements, également sous forme de masques,
représentant des transformations de voisinage. Ces masquages (au nombre de 8) suivent le
même principe que l'épluchage.
Fonctionnement
Sur la forme illustré à la figure 13, 5 étapes d'épluchage ont été nécessaire avant stabilité.
Après l'étape de nettoyage, on obtient le squelette désiré. La figure 14 présente une image
plus complexe.
17
Les images binaires
Figure 14 : Squelettisation (sans commentaire)
V.4.c : La vectorisation du squelette
Même ramenée à son squelette, une image binaire de 256x256 pixels occupe 8192 octets. La
vectorisation consiste à approximer le squelette (ou le contour) par une suite de segments de
droites (ou par des arcs de courbes). On y gagne en compacité et on se rapproche d'une
description géométrique des objets. La topologie (connexité) des objets doit être conservée au
cours de l'opération.
Un algorithme de base se décompose en :
Division
1. Considérer la liste des points du squelette (contour) comme une sous-liste unique ;
2. Pour chaque sous-liste, chercher le point le plus éloigné de chaque côté de la corde
joignant les extrémités de la sous-liste ;
3. Si toutes les sous-listes présentent un écart à la corde inférieur à un seuil donné, alors
fin de l'algorithme ; sinon diviser chaque sous-liste dont l'écart est supérieur au seuil
au point le plus éloigné et recommencer à 2.
Fusion
Les sous-listes sont chaînées pour reconstituer le squelette (contour) initial.
Le principe n'est pas particulièrement original : il s'agit d'un split and merge, non plus sur des
approches de type région mais sur des approches de type squelette.
La vectorisation peut ensuite être suivie d'un phase de modélisation dont l'objet est d'ajouter
une description mathématique à l'analyse d'image. On arrive alors dans le domaine de la
synthèse.
18