Vous êtes sur la page 1sur 83

Reconnaissance de

motifs 2
Traitement d’images
Contenu
• Introduction aux outils d'analyse d'images • Recherche de primitives : Opérateurs
• Le modèle linéaire morpho mathématiques
• La Convolution • Éléments structurants
• Le modèle statistique • Dilatation
• L'histogramme • Érosion
• Normalisation de l’histogramme • Amincissement et squelettisation
• Seuillage de l’histogramme • Segmentation
• L’histogramme en Matlab • Approches régions
• Transformations d'histogramme • Seuillage (Thresholding)
• Information contenue dans une image • Croissance de régions (Region growing)
• L’entropie et le seuillage entropique • Division/fusion (Split-and-merge)
• Les filtres • Clustering (regroupement)
• Filtres passe-bas
• Filtres passe-haut
• Lissage par filtres non linéaires
• Détection Des Contours
Pourquoi traiter les images ?

• Le traitement d’image recouvre de nombreux champs:


◦ Transmission de données (codage, compression, steganography);
◦ Filtrage (améliorations, retrait du flou, effets spéciaux)
◦ Compréhension du contenu (segmentation, reconnaissance des formes,
intelligence artificielle).
• Aires d’application:
◦ Science (médicine, science des matériaux, biologie, astronomie, télédétection,
etc)
◦ Police (reconnaissance des visages, hyper-resolution)
◦ Arts (effets spéciaux, restauration de films, communications)
introduction aux outils d'analyse d'images numériques les plus courants:
1. Le modèle linéaire
Dans le modèle linéaire, la structure mathématique sous-jacente est l'Espace Vectoriel. Les
opérateurs fondamentaux sont ceux qui préservent la structure d'espace vectoriel, c'est-à-
dire les applications linéaires :

Pour les images, ces opérateurs correspondent aux convolutions :


La convolution :

C'est l'opérateur de base du traitement linéaire des images. Apparue très tôt dans les
premiers systèmes d'analyse d'images sous forme empirique et justifiée par des
considérations d'implantation, ce n'est que plus tard qu'on a fourni des justifications
physiques et fait le lien théorique avec les filtres et le traitement du signal.
La Convolution
Soit I une image numérique.
Soit h une fonction de [x1,x2]×[y1,y2] à valeurs réelles.
La convolution de I par h est définie par :

La fonction h est dite


noyau de convolution

Les nouvelles valeurs du pixel sont calculées par produit scalaire entre le noyau de convolution et le voisinage
correspondant du pixel.
La Convolution

Pour calculer une convolution, on


remplace la valeur de chaque pixel par
la valeur du produit scalaire entre les
valeurs du noyau de convolution et les
valeurs du voisinage du pixel
considéré (par rapport à l'origine (0,0)
du noyau de convolution).
Attention: implémentation «parallèle».
2. Le modèle statistique
L'histogramme :
Un histogramme est une courbe
Nombre
statistique indiquant la répartition des
de pixels
pixels selon leur valeur (niveau de gris).
ayant ce
L'histogramme est très utile pour
niveau de
contrôler l'exposition d'une image.
gris

Il indique pour chaque valeur entre le noir (0) et le blanc (255), combien il y a de pixels de cette valeur dans
l'image; en abscisse (axe x) : le niveau de gris (de 0 à 255); en ordonnée (axe y) : le nombre de pixels
Les pixels sombres apparaissent à gauche de l'histogramme, les pixels clairs à droite de l'histogramme et les
pixels gris au centre de l'histogramme.
L'histogramme :
C’est un outil de base pour l'étude de la dynamique d'une scène, il est utilisé par certains opérateurs d'analyse.
On retiendra cependant qu'il ne faut pas considérer l'histogramme comme une caractéristique fondamentale
de l'image dans la mesure où on peut le transformer radicalement sans changer significativement l'image.

chaque image f de taille N × M , on peut associer une distribution H des valeurs contenues dans cette image
par : H(x) = Card{0 ≤ i ≤ N − 1, 0 ≤ j ≤ M − 1 : f (i, j) = x} = nx
L'histogramme :
L'histogramme ne code pas d’information spatiale

Deux images différentes (en termes de contenu sémantique) peuvent aussi avoir le même histogramme
L'histogramme :
L’histogramme cumulé est donné par :
𝐻𝑐 𝑥 = ෍ 𝐻(𝑖)
𝑖≤𝑥

On présente dans la suite quelques traitement d'analyse


effectués uniquement à partir de l'histogramme.
• La normalisation d’histogramme : Exploitation de toute
la dynamique de codage
• L’égalisation d’histogramme : Équilibrer la dynamique
du codage et augmenter le contraste
• La segmentation d’histogramme, dont le célèbre
seuillage : Simplifier l’image en regroupant les pixels
selon leur valeur.
Normalisation de l’histogramme
La normalisation d'histogramme, ou expansion de dynamique, est une transformation affine du niveau de
gris des pixels de telle sorte que l'image utilise toute la dynamique de représentation.
Égalisation d’histogramme
L’égalisation d’histogramme consiste à harmoniser la répartition des niveaux de luminosité de l'image de
telle manière à tendre vers un même nombre de pixel pour chacun des niveaux de l'histogramme.
(Idéalement, on cherche à obtenir un histogramme plat)
La technique classique consiste à rendre « le plus linéaire possible »
l'histogramme cumulé de l'image en utilisant la transformation suivante :

• D : dynamique
• (w,h) : dimension de l'image
• HC(.) : histogramme cumulé
Seuillage de l’histogramme

Le seuillage binaire consiste à attribuer à chaque pixel la valeur 0 ou 1 en fonction de son intensité :

On appelle T le seuil, d’où le terme de seuillage

T=128 T=50
L’histogramme en Matlab
• L'histogramme d'une image donne la répartition de ses niveaux de gris.
• Ainsi pour une image qui possède 256 niveaux de gris, l'histogramme représente le niveau de
gris en fonction du nombre de pixels à ce niveau de gris dans l'image.
>> img = imread(‘Pingouin.tif');
>> figure; imshow(img);
>> im=rgb2gray(img);
>> imshow(im);
>> histo = imhist(im,256); 7000

>> figure; plot(histo); 6000

5000

4000

3000

2000

1000

0 50 100 150 200 250


Transformations d'histogramme
Table de conversion
• Encore appelée LUT ( Look Up Table), une table de conversion est une table qui à tout
niveau ( de 0 à 255) fait correspondre un autre niveau ( dans la plage 0-255). Il s'agit donc
d'une transformation de niveaux :
j = Transforme(i)

Exemple 1 :
• recadrage de dynamique. Pour des images
trop claires ou trop foncées, ou encore
d'images dont les pixels ont des niveaux
distribués sur une plage étroite, il s'agit de
redistribuer les niveaux sur l'ensemble de la
plage 0-255 .
Exemple 2 : mise en évidence de zones de
l'histogramme par binarisation.

Les traces grises peuvent être supprimé


à l'aide d'une LUT (les nuances de gris
pâle sont remplacées par du blanc).
Information contenue dans une image

• Étant donné une image codée sur N niveaux de couleur, on appelle quantité d'information
apportée par un niveau donné la grandeur suivante :
Qi = − log2(pi)
• où pi est la probabilité d'apparition du niveau i . Puisque la probabilité pi est comprise
entre 0 et 1, il s'ensuit que la quantité d'information Qi varie de 0 à l'infini:
pi = 0 ⇒ Qi = +∞
pi = 1 ⇒ Qi = 0

• On notera que plus le niveau est rare ( pi faible), plus la quantité d'information est
grande; en revanche, un niveau omniprésent apporte peu d'information.
• Dans la pratique, la probabilité pi est approchée par un comptage statistique, ce qui conduit évidemment à
des approximations de la quantité d'information.
• On peut, sur une image, calculer la quantité d'information moyenne en effectuant une moyenne
arithmétique pondérée des quantités d'information apportées par chaque niveau (avec des coefficients pi).
• Le résultat est appelé l'entropie de l'image :
𝑁−1 𝑁−1 𝑁−1

𝐸 = ෍ 𝐸𝑖 = ෍ 𝑝𝑖 𝑄𝑖 = − ෍ 𝑝𝑖 𝑙𝑜𝑔2 (𝑝𝑖 )
𝑖=0 𝑖=0 𝑖=0

• La figure ci-dessous explicite le calcul de l'entropie pour une


image 16 niveaux dont on connaît l'histogramme.

entropie
Exercice:
On considère l'image suivante en 4 couleurs
0 (noir), 1, 2, 3 (blanc) :

1. Tracer l'histogramme de cette image.


2. Déterminer son entropie.
3. On considère la LUT définie ci-contre
par j=f(i) où i est la couleur initiale et j
la couleur transformé correspondante.
Dessiner l'image résultant de cette
transformation.
4. Appliquer à l'image initiale, le filtre
linéaire défini par le masque 3x3
suivant:
1 1 1 1
ℎ= 1 1 1
9
1 1 1
Correction Histogramme
160
140
1. L’histogramme

Nombre de pixel
120
100
80
60
40
20
0
0 1 2 3
Niveau de gris

2. L’entropie : 1,74
nuances nb pixels pi qi=log2(pi) Si=pi.qi
0 48 0,19 2,42 0,45
1 46 0,18 2,48 0,44
2 28 0,11 3,19 0,35
3 134 0,52 0,93 0,49
256 1 1,74
L’entropie et le seuillage entropique:

• L'entropie est la mesure d'incertitude, elle est maximale quand toutes les
probabilités sont égales.
• L’entropie nous donne le nombre "idéal" de bits qu'il faut pour encoder
l'information. Pour des images quelconques avec 256 niveaux de gris, c'est
8 bits (Log2(256) = 8).
• Maintenant, si les images sont des scans d'articles de journaux, il y a en
proportion beaucoup de noir, beaucoup de blanc et plus rarement des gris
intermédiaires. On a donc au moins besoin de 1 bit (pour coder noir/blanc)
et "un peu plus" pour les niveaux de gris. Ce qui nous donnerait une
entropie du genre par exemple 1.657, bien loin des 8 bits du cas uniforme.
L’entropie et le seuillage entropique:

• La valeur de l'entropie est positive et le logarithme d'une probabilité est


toujours négatif car 0 ≤ p(x) ≤ 1, donc log( p(x) ) ≤0. Il faut donc
multiplier par −1 pour obtenir une valeur positive de l'entropie.
• L'entropie d'une image est un indicateur de sa complexité. Si l'image est
uniforme et ne possède qu'une couleur, son entropie est nulle. Plus
l'entropie est élevée, plus l'image est "aléatoire".
• L’entropie de Shannon est le nombre de bits nécessaires pour encoder le
signal. Donc 2entropie est le nombre de valeurs différentes dans le signal.
• La commande Matlab qui calcule l’entropie d’une image en niveau de gris
est: E = entropy(I)
I est une image en niveau de gris
L’entropie et le seuillage entropique:

Exemple :
Tirage aléatoire dans une urne
Considérons une urne contenant une boule rouge, une boule bleue, une
boule jaune et une boule verte. On tire une boule au hasard. Il s'agit de
communiquer la couleur tirée. Aucun tirage n'étant privilégié, l'entropie est
maximale, égale ici à Log2(4) = 2. Si on convient que les couleurs sont
codées respectivement 00, 01, 10, 11, l'information contenue dans le tirage
correspond effectivement à 2 bits.
L’entropie et le seuillage entropique:
Mais si une certaine couleur est plus représentée que les autres, alors l'entropie est
légèrement réduite. Supposons par exemple que l'urne contienne 4 boules rouges, 2 bleues,
1 jaune et 1 verte. L'entropie est alors de 7/4. En effet,

Si les couleurs sont codées respectivement 0 pour le rouge, 10 pour le bleu, 110 pour le
jaune et 111 pour le vert, alors l'information sur la couleur tirée occupe 1 bit une fois sur
deux, 2 bits une fois sur quatre et 3 bits une fois sur quatre, soit en moyenne 7/4 bits,
correspondant à l'entropie calculée.
L’entropie et le seuillage entropique:

Dans le seuillage, on crée 2 ensembles de valeurs


 E1 = les valeurs inférieures au seuil
 E2 = les valeurs supérieurs ou égales au seuil
Si le seuil est mal choisi, l'un des deux ensembles contient très peu de pixels différents
c'est-à-dire que son entropie est basse (proche de 0). L'information de toute l'image est
presque intégralement contenue dans l'autre ensemble.
Il faut donc trouver le seuil pour lequel l'information est équitablement répartie dans les 2
ensembles, ça signifier que chaque ensemble à une entropie élevée et par conséquence la
somme des 2 entropies est grande (propriété du log)
L’entropie et le seuillage entropique:
La technique du seuillage par maximum d'entropie consiste à trouver le meilleur seuil pour
une image, voilà un exemple en java :
// normalized histogram
double[] hist = histogramNormalized(glimg); // high-threshold entropy
double count_high = 1.0 - count_low;
// Cumulative distribution function if (count_high > 0) {
double[] cdf = new double[256]; for (int i = t + 1; i < 256; i++)
cdf[0] = hist[0]; if (hist[i] > 0) h_high[t] -= (hist[i]/count_high) *
for (int i = 1; i < 256; i++) Math.log(hist[i]/count_high);
cdf[i] = cdf[i-1] + hist[i]; }
}
// compute low and high entropy for each possible threshold value
double[] h_low = new double[256]; // Find threshold value with the maximum total entropy
double[] h_high = new double[256]; double h_max = h_low[0] + h_high[0];
for (int t = 0; t < 256; t++) { int best = 0;
for (int t = 1; t < 256; ++t) {
// low-threshold entropy double h = h_low[t] + h_high[t];
double count_low = cdf[t]; if (h > h_max) {
if (count_low > 0) { h_max = h;
for (int i = 0; i <= t; i++) best = t;
if (hist[i] > 0) h_low[t] -= (hist[i]/count_low) * }
Math.log(hist[i]/count_low); }
}
Les filtres

• Filtres passe-bas:
o linéaire comme le filtre Moyenne et gaussien
o non linéaire comme le filtre médian

Ces filtres ont généralement pour but de réduire les parasites (bruits de mesure). Ils agissent par moyenne
sur un voisinage et suppriment donc les détails

Filtres simples

Filtres pondérés
Les filtres

• Filtres passe-haut: Ces filtres ont pour but d'augmenter le contraste et de mettre en
évidence les contours.
• On définit un contour comme une discontinuité locale de l'intensité lumineuse.
• Les techniques permettant de détecter un contour sont basées sur l'utilisation:
o filtres gradients,
o filtres Laplaciens.

• Les contours sont les lignes de maximum locaux pour les filtres de gradient.
• Pour les filtres Laplaciens, les contours seront les suites de points à 0.
Filtres de gradients

Filtres Laplaciens

h1 =
1 1 1
1 -8 1
1 1 1
>> imfi=imfilter(image,h1);
>> imshow(imfi);
Image négative

Pour inverser les couleurs d’une image:

>> im=imread('c:/wave.jpeg');
>> i=imcomplement(im);
>> figure;imshow(i):
Lissage par filtres non linéaires
• Ce type de filtres sont non réalisables par une convolution, Leur résultat est souvent
une limitation intéressante du bruit tout en préservant les contours « nets ».

• Il y a par exemple le filtre médian et le filtre par le max. (« conservative smoothing »)

Filtrage médian
• Le filtre médian réalise un lissage de l’image un peu plus performant que le filtre
moyenne en ce qui concerne les détails dans l’image.

Méthode:
• Chaque pixel est traité en considérant ses voisins sur un voisinage donné.
• Le pixel lui même et ses voisins forment alors un ensemble dont on calcule la « médiane ».
• Le pixel sera alors remplacé par cette valeur médiane.
Exemple : voisinage 3 x 3 Intérêt du filtre médian:

• un pixel non représentatif dans le voisinage


affectera peu la valeur médiane.
• La valeur médiane choisie étant le niveau de gris
d’un des pixels considérés , on ne crée pas alors
de nouveaux niveaux de gris dans l’image.
• Ainsi lorsque le filtre passe sur un contour très
marqué il le préservera mieux .
I = rg b 2 g ray ( i m re a d ( ' P i n g o u i n . p n g ' ) ) ;
J = imnoise(I,'salt & pepper');
K = medfilt2(J);
subplot(1,2,1);imshow(J);
subplot(1,2,2);imshow(K);

Filtrage par le max. (« conservative smoothing »)

• Ce filtre de lissage supprime bien le bruit de type « poivre et sel » c’est à dire qu’il
« adoucit » les pixels isolés ayant un niveau de gris très différent des niveaux de gris de
leur voisinage et il a la particularité de bien préserver les contours très marqués.
• Ce filtre s’assure en fait que tout pixel a son niveau de gris placé dans la gamme de ses
voisins.
Méthode: exemple :
• On considère le niveau de gris du pixel à
traiter, et d’autre part tous ses voisins (à
l’exception de lui même) .
• Sur les voisins on calcule le niveau min
et le niveau max., si le niveau de gris du
pixel à traiter est compris entre le min et
le max. alors on le laisse inchangé sinon
on le remplace par le max.
Voisins : 78 122 124 125 132 132 143
min : 78 max : 143
Nouvelle valeur : 143
• Le but majeur de l’analyse d’image est d’obtenir une description synthétique des divers
éléments qui constituent l’image à partir de la masse énorme d’information qu’elle
contient à l’état brut,
• L’un des processus fondamentaux dans la chaine de reconnaissance de forme consiste à
démineur cette quantité d’information en ne gardant que les points essentiels de l’image,
• Les points de contour constituent en ce lieu une approche rationnelle,
• L’homme est capable de reconnaitre un objet par simple observation de ses contours.
Détection Des Contours
• Nous intéressons à La recherche des primitives dans une image car elle constitue l’étape
nécessaire pour détecter un objet dans une scène,
• La détection de primitives peut également servir à effectuer des mesures:
Décomposition d’une scène en plusieurs objets (robot footballeur qui cherche le
ballon sur le terrain)
Mesures de conformité de pièces en usine,
Mesures de volumes d’organe en imagerie médicale,
....
• Il existe plusieurs types de primitives:
Contours, Régions, Squelette, Points d’intérêt (coins), Lignes, Courbes .
Contours
L’une des bases les plus importantes en traitement d’images:
• Reconnaissance: l’information est souvent dans les éléments de contour,
• Amélioration de compression d’images: préserver les contours, lisser les régions,
évaluer la taille des régions.

La mise en évidence des points représentant les contours d'objets dans une image peut
servir à :
• Reconnaître des objets présents dans une scène,
• Différencier des zones de l'image,
• Faire de la segmentation d'images,
• Extraire une information réduite souvent pertinente pour caractériser l'image.
Contours
Le contour permet la réduction de l’information:
o Information de toute l’image résumée dans le contours des différent objets,
o Contour : partie la plus informative d’une image,

Préalable nécessaire à l’extraction d’autres primitives :


o Droites, Applications:
o Segments, o Reconnaissance d’objets, de formes,
o Cercles o Classifications de scènes,
o Mise en correspondance:
Calibration
reconstruction 3D
……
o Compression,
o…
Contours
Définition du contour:
• Les variations d'intensité de lumière et de couleur sont très bien perçues par le
système visuel humain.
• Une frontière est définie comme un endroit de l'image où la transition en niveaux
de gris est la plus importante entre 2 régions.
• Un contour est une rupture d'intensité dans l'image suivant une direction donnée.
Contours
Remarques:
• Contour : frontière entre deux objets dans une image
• Toute discontinuité n’est pas nécessairement située à la frontière entre
deux objets
Contours
Modèle de contour
• Il existe plusieurs modèles de contours, le modèle le plus courant : Marche d’escalier,
• Exemple de différents modèles de contours : marche d’escalier, rampe et toit :

marche Rampe Pic Toit


Contours
Détection de contour
• La détection de contours est une technique de réduction d’information dans les images,
• Technique qui consiste à transformer l’image en un ensemble de courbes, pas
forcement fermées, formant les frontières significatives de l’image,
Il existe plusieurs méthodes de détection de contour,
Deux approches sont les plus utilisées:
 approximations du Gradient
 approximations du Laplacien

f(x) f '(x) f "(x)


Recherche de primitives : Opérateurs morpho mathématiques

Les opérateurs morpho-mathématiques se sont initialement appliqués sur des images en


noir et blanc (Matheron et Serra, 1965). Ils ont ensuite été étendus à des images en
niveaux de gris par Dougherty en 1978. Pour les appliquer à des images couleurs, il suffit
alors de les appliquer séparément à chaque composante couleur.

On supposera cependant connues les notions suivantes :


• notion d’appartenance d’un élément à un ensemble
• notions d’intersection et d’union de deux ensembles
• notion de complémentaire d’un ensemble
On rappelle la notion de complémentaire d’un ensemble B par rapport à un ensemble A :
c’est l’ensemble des éléments de A n’appartenant pas à B :
A/B = A ∩ Bc = A/(A ∩ B)
A gauche, loi A/(B ∪ C) = (A/B) ∩ (A/C). A droite, loi A/(B ∩ C) = (A/B) ∪ (A/C)

On rappelle également les lois de Morgan :


A/(B ∪ C) = (A/B) ∩ (A/C)
A/(C ∩ C) = (A/B) ∪ (A/C)

Réflexion: −A = {−a : a ∈ A}
Addition de Minkowski
B = A + x = {a + x : a ∈ A}
C = A⊕B = ∪(A + b : b ∈ B) = ∪(B + a : a ∈ A) = {x : (−B + x)∩A ≠ ∅}
L’addition de Minkowski est commutative. Elle est également appelée « dilatation ».
Éléments structurants

• Les éléments structurants permettent de définir le


type de voisinage que l’on souhaite considérer.
• Nous donnons ici quelques exemples de voisinages
3x3.
• Le voisinage en connexité 4 est donné par kc, celui
en connexité 8 par ks.

• D’autres voisinages, moins utilisés, concernent les


voisins horizontaux, kh, et les voisins verticaux, kv.
Dilatation
Le résultat de la dilatation de l’ensemble A par l’ensemble B est l’ensemble des
points tels que lorsque B est centré sur un de ces points il y a une intersection non
vide entre A et B.
Nous allons maintenant nous intéresser à la mise en pratique de la dilatation.

Algorithme de dilatation d’image noir et blanc


Soit k un élément structurant de taille 2κ + 1 × 2κ + 1. L’algorithme de dilatation est
le suivant : on parcours tous les pixels de l’image excepté les bords de l’image
d’épaisseur κ (on parcourt les lignes de κ à h − κ et les colonnes de κ à w − κ).
• Pour chaque pixel du fond rencontré,
o s’il possède un voisin, au sens de l’élément structurant, qui appartienne à un objet,
il prend la couleur de l’objet,
o sinon, il n’est pas modifié.
• Concrètement, pour une image en noir et blanc, on considère que les pixels noirs
appartiennent au fond tandis que les pixels blancs appartiennent aux objets.
• Dans ce type d’algorithme, il est important d’écrire le résultat dans une nouvelle image
afin de traiter chaque pixel indépendamment du résultat des voisins.

Autre définition de la dilatation:


• le balayage de l'image par une fenêtre (2n+1)×(2n+1) avec utilisation du OU logique.
• On place le centre de la fenêtre sur le pixel courant et on effectue un OU logique sur les
(2n + 1)2 − 1 pixels environnants.
• Si le résultat est 1, le pixel est mis à 1; si le résultat est 0, le pixel est conservé.
Érosion
• L’érosion est définie par :
C = A ⊖ B = ⋂(A − b : b ∈ B) = {x : B + x ⊂ A}
• On définit la soustraction de Minkowski par :
C = A − (−B) = ⋂(A + b : b ∈ B)
• On a alors équivalence entre érosion et soustraction de Minkowski si B est symétrique
(si B = -B).
• L’érodé de A par B correspond à l’ensemble des points tels que si B est centré sur ces
points, B est entièrement inclus dans A.

Algorithme d’érosion d’image noir et blanc


Cet algorithme ressemble très fortement à l’algorithme de dilatation :
• on parcourt tous les pixels de l’image excepté les bords de l’image d’épaisseur κ.
• Pour chaque pixel rencontré n’appartenant pas au fond,
• s’il possède un voisin, au sens de l’élément structurant, qui appartienne au fond, il
prend la couleur de l’objet,
• sinon, il n’est pas modifié.
Autre définition de l’érosion:
• On balaie l'image avec une fenêtre de taille (2n + 1).
• On place le centre de la fenêtre sur le pixel courant.
• On effectue un ET logique sur les pixels environnants.
• Si le résultat est 1, le pixel est conservé; si le résultat est 0, le pixel est mis à 0.

en d'autres termes
Si l'élément structurant est totalement inclus dans l'objet, l'image résultat est mise à 1 au
pixel sur lequel est centré l'élément structurant.
Étude du contenu de l'image à partir d'un élément structurant.
• Exemples d'éléments structurants binaires :

• L'élément structurant est déplacé en chaque pixel (x,y) de l'image à traiter I(x,y), et les relations entre
l'image et l'élément structurant B sont analysées : inclusions, connexions, etc
• Opérateurs de base sur une image binaire (fond à 0, objets à 1):
o Érosion : Si B est totalement inclus dans l'objet, l'image résultat est mise à 1 au pixel sur lequel
est centré l'élément structurant.
o Dilatation : si B a une intersection avec l'objet, l'image résultat est mise à 1 au pixel sur lequel
est centré l'élément structurant.
o Fermeture : dilatation(s) suivies d'érosion(s)
o Ouverture : érosions suivies de dilatations
Image dilatée

Image binaire Image érodée


Les commandes Matlab qui effectue respectivement la dilatation et l’érosion sont:
imdilate, imread

Exemple:
originalBW = im2bw(imread('c:/Pingouin.png'),0.5);
se = strel('square',5);
erodedBW = imdilate(originalBW,se);subplot(1,2,1),
imshow(originalBW), subplot(1,2,2), imshow(erodedBW)
D’autre commande Matlab d’érosion et de dilatation:

ImageDilatee = bwmorph(ImageBinaire,'dilate') ;
ImageErodee = bwmorph(ImageBinaire,'erode') ;
ImageFermee = bwmorph(ImageBinaire,'close') ;
ImageOuverte = bwmorph(ImageBinaire,'open') ;
Amincissement et squelettisation
• L’intérêt de la squelettisation est dans la reconnaissance de caractères,
• la détection de réseaux routiers, la planification de trajectoire, ...
• Sur une image de contours, la squelettisation permet d’affiner les
contours et diminuer l'information redondante contenue dans une
image,
• donc la quantité de données à analyser ce qui facilitera l’étape
ultérieure de chaînage.

• La méthode est l'isolement des lignes principales de l'image avec des


amincissements successifs jusqu'à ce que l'image résultante ne
contienne que des lignes d'épaisseur 1 pixel.
• La méthode nécessite l'emploi successif de 8 masques .
• On effectue sur l'image une succession de passes;
• on arrête lorsque le résultat entre deux passes successives est
inchangé.
• Une passe consiste en l'application successive, sur toute l'image de chacun des 8
masques (le point central sur le point courant à traiter).
• Les 8 masques correspondent aux transformations suivantes : si la situation de gauche
est rencontrée, alors on remplace le pixel traité par 0.

• Code Matlab:
BW3 = bwmorph(BW,'skel',Inf);
figure, imshow(BW3)
Segmentation
• Consiste à découper l'image en régions.
• Ensemble de zones homogènes dans l’image
• Partition de l’image I en sous-ensembles disjoints non-vides de région Ri
pour i=1,2...M contenant des pixels connexes au sens d’un prédicat et tels
que 𝐼 = ‫𝑀ڂ‬ 𝑖=1 𝑅𝑖
• Il y a deux manières de caractériser une région : par contours et par région
ou homogénéité (e.g. même couleur).
• L’intérieur d’un contour fermé est une région.
• Elle se divise en deux approches : la segmentation par contours et la
segmentation par régions.
Approches régions
À quoi sert la segmentation en régions ?
Important prérequis pour les étapes de mesure, de compréhension de la scène :
 Reconnaissance d’objets
 Indexation : rechercher dans une base d’images, les images « ressemblantes » à une
image initiale
 Compression
 Recalage d’images, mises en correspondance
 …

Il y a plusieurs méthodes de segmentation approches régions :


 Seuillage (thresholding)
 Croissance de régions (Region growing)
 Division/fusion (Split-and-merge)
 Clustering (K-means)
1. Seuillage (Thresholding)
Plusieurs méthodes de seuillage, elles sont basées sur :
 La forme de l'histogramme
 Le regroupement (des niveaux de gris à partir de l'histogramme)
 L’entropie (seuillage par maximum d'entropie)
 L’attribut Object, (rechercher une certaine ressemblance entre l’image en niveau de gris et l’images
binaire, comme la similarité de la forme flou, coïncidence de frontières…)
 Les méthodes spatiales (utilisent la distribution de probabilité d’ordre supérieur et/ou la corrélation
entre les pixels)
 Les méthodes locales. (adaptent la valeur de seuil sur chaque pixel selon les caractéristiques locale
de l’image)
Le Seuillage n’est pas adapté quand les régions varient ou ne sont pas homogènes
2. Croissance de régions (Region growing)
o choix d'un germe
o propagation selon un certain critère
La méthode commence par semer des « graines » sur l’image (un groupe de pixels : germes),
elles donneront naissance à des régions. Ensuite, en ajoutant à R tous les pixels voisins qui
sont suffisamment semblables à R, et les régions grossissent, fusionnent pour obtenir
finalement des régions stables. Pseudo
code :
growSeed(seed)
R.init()
R.add(seed)
while R.hasNeighbor()
𝐼 𝑝 −𝜇𝑅 p = R.getNextNeighbor()
Exemple de définition de pred(p, R) : ≤𝑇 if pred(p, R)
𝜎𝑅 R.add(p)

𝜇𝑅 est la couleur moyenne calculée sur la région R, 𝜎𝑅 l’écart-type et T le seuil.


Ou tout simplement le prédicat (qui représente le critère d'homogénéité) peut être la variation
d'intensité : |I−I0|<T
Des exemples de l’approche Region growing
Spécifié de la méthode:

• Performance très dépendante de l’initialisation (germes)


• Dépend souvent de l’ordre de traitement : L’ordre dans lequel sont ajoutés les pixels
dans une région a une influence sur le résultat
• Implémentation relativement simple
• Méthodes rapides
3. Division/fusion (Split-and-merge)
• Introduit en 1974 par Horowitz et Pavlidis,
• Le but de l’algorithme est de diviser ou partager de façon automatique une image en un
ensemble de régions homogènes selon le critère choisi.
• Pou faire cela, la technique « Split-and-merge » se déroule en deux étapes :
 une étape de découpage
 suivie d’ une méthode d’agrégation (fusion).
• l'image est supposée carrée
• L’étape de découpage consiste à diviser l’image en
Separation(zone)
quatre régions, puis chaque région en 4 sous-régions Si critere(zone)=VRAI alors
(Si celle-ci ne vérifie pas le critère d'homogénéité) classer
sinon
et ainsi de suite d’une façon récursive.
diviser zone en 4 sous-zones Z1, Z2,Z3, Z4
• À la fin on construit un « quadtree » Pour i=1 à 4 faire :
• L’étape de découpage s’arrête lorsque le bloc Separation(Zi)
fin Pour
considéré est suffisamment homogène,
fin Si
• Cette étape produit alors une image sur-segmentée.
Exemple

et le quad tree est :


• Alors que la méthode précédente consistait à diviser l'image, les méthodes par fusion
(merge) appliquent le principe inverse : on fait croître une région en y incorporant les
régions voisines ayant les mêmes critères d'homogénéité ( fusion de région).
• La règle de fusion est double : les deux régions correspondent au même critère et elles
sont adjacentes.

• L’étape Merge donc permet alors de fusionner les régions homogènes qui auraient été
séparées lors de l’étape précédente. Pour réaliser cette fusion, il faut d’abord tenir à jour
une liste des contacts entre régions. On obtient ainsi un graphe d’adjacence de régions
ou « Region Adjacency Graph ».

• À chaque étape de fusion, la couleur moyenne de R est mise à jour


Un autre exemple:

Itération 1

• Split → divise chaque


région non-uniforme en 4
• Merge → fusionne toutes
les régions uniformes
adjacentes
Itération 2

Itération 3
Comme conclusion de la méthode split and merge:

• Split : la géométrie du découpage a une grande influence sur le résultat de la


segmentation. Par exemple, le split en quadtree fait apparaître des régions carrées.
D'autres types de découpage existent, éventuellement redondants (pyramides avec
recouvrement).

• Merge : l'ordre dans lequel est réalisé le regroupement des régions a aussi une influence
sur le résultat. Comme illustré dans les planches précédentes, les algorithme
commencent en général à fusionner les régions les plus petites.
4. Clustering (regroupement)
 Classification automatique en construisant une collection d’objets (données ou pixels).
 La tâche qui consiste à regrouper, de façon non supervisée (c.-à-d. sans l’aide préalable
d’un expert), un ensemble d’objets (pixels).
 L’objectif en Clustering est de trouver une partition des données
(pixels) en K classes (groupes, régions), telle que les objets d’un même classe (cluster)
sont plus proches (au sens d’un critère de similarité choisi) les unes aux autres que celles
des autres groupes (clusters).
 Une bonne méthode de regroupement permet de garantir :
o Une grande similarité intra-groupe (Similaires au sein d’un même groupe).
o Une faible similarité inter-groupe (Dissimilaires quand ils appartiennent à des
groupes différents).
 La qualité d’un regroupement dépend donc de la mesure de similarité utilisée par la
méthode et de son implémentation.
Mesure de similarité
 Il n’y a pas de définition unique de la similarité entre objets.
 Différentes mesures de distances d(x ,y).
 La définition de la similarité entre objets dépend de :
o Le type des données considérées
o Le type de similarité recherchée

a) Données Numériques :
• Distance de Minkowski :

𝑞
𝑛

𝑑 𝑥, 𝑦 = ෍ 𝑥𝑖 − 𝑦𝑖 𝑞

𝑖=1
• Distance euclidienne : q=2
𝑛

𝑑 𝑥, 𝑦 = ෍(𝑥𝑖 −𝑦𝑖 )2
𝑖=1

• Distance de Manhattan : q=1


𝑛

𝑑 𝑥, 𝑦 = ෍ 𝑥𝑖 − 𝑦𝑖
𝑖=1
 Distance Hamming entre :
o "karolin" et "kathrin" est 3.

o "karolin" et "kerstin" est 3.

o 1011101 et 1001001 est 2.

o 2173896 et 2233796 est 3.


a) Données binaires : d(0,0)=d(1,1)=0, d(0,1)=d(1,0)=1
b) Données énumératives : Distance nulle si les valeurs sont égales et 1 sinon.
c) Données énumératives ordonnées : idem. On peut définir une distance utilisant la
relation d’ordre.

Classification des algorithmes de Clustering


 Algorithmes Hiérarchiques (initialement chaque objet est supposé Cluster.)
 Algorithmes basés sur la densité (distribution de probabilité spécifique)
 Algorithmes de grille (structure à multi-niveaux de granularité)
 Algorithmes basés sur le modèle (les arbres de décision et les réseaux de neurone)
 Algorithmes de Partitionnement (l’algorithme des K-Means)
K-Means
 Le k-moyennes (K-Means) est un algorithme de Clustering simple et largement utilisé
 Encore appelée algorithme des centres mobiles
 C’est l’un des algorithmes les plus connus en classification non supervisé.
 Un algorithme itératif qui partitionne un ensemble de données en un nombre prédéfini
de régions K.
 La valeur de K est choisie selon une connaissance préalable, combien de régions sont
souhaitées.
 Les régions qu’il construit n’entretiennent jamais de relations hiérarchiques : une
classe n’est jamais incluse dans une autre classe.
 Chaque groupe est représenté par sa moyenne (centre de la classe) uk
 La mesure par défaut de similitude est la distance euclidienne
 L’algorithme minimise itérativement la fonction objectif positive suivante appelée
mesure de distorsion :
(1)

 qui correspond à la distance euclidienne totale entre chaque données xi et le centre µzi
dont elle est la plus proche au sens de la distance Euclidienne :

 Dans l’expression du critère 𝒥 , zik est une variable binaire qui vaut 1 si la classe du ième
exemple xi est k et 0 sinon.
L’algorithme est composée des trois étapes suivantes :

– Initialisation : On initialise les centres des classes (µ(0)1 , . . . , µ(0)K ) (à votre choix) pour donner le pas
de départ de l’algorithme (par exemple on choisissant aléatoirement des centres "virtuels", ou K données
parmi les données à traiter). Il s’agit donc de démarrer à l’itération t = 0 avec des valeurs initiales pour les
paramètres du modèle (µ(0)1 , . . . , µ(0)K ).

1. Etape d’affectation (classification) : Chaque donnée est assignée à la classe du centre dont elle est la
plus proche : ∀ i = 1, . . . , n

2. Étape de recalage des centres : le centre µ de chaque classe k est recalculé comme étant la moyenne
arithmétique de toutes les données appartement à cette classe (suite à l’étape d’affectation
précédente): ∀ k = 1, . . . , K

t étant l’itération courante.


La convergence peut être considérée comme atteinte si la valeur relative au niveau de la distorsion J (1)
devient inférieure à un seuil petit préfixé ou si un nombre maximum d’itérations préfixé a été atteint.
Avantages

• L’algorithme de k-Means est très populaire du fait qu’il est très facile à comprendre et à mettre en
œuvre,
• La méthode résolve une tâche non supervisée, donc elle ne nécessite aucune information sur les
données,
• Rapidité et faibles exigences en taille mémoire,
• La méthode est applicable à tout type de données (mêmes textuelles), en choisissant une bonne
notion de distance

Inconvénients

• Le nombre de classes est un paramètre de l’algorithme. Un bon choix du nombre k est nécessaire,
car un mauvais choix de k produit de mauvais résultats.
• Les points isolés sont mal gérés (doivent-ils appartenir obligatoirement à un cluster ?)
• L'algorithme du K-Means ne trouve pas nécessairement la configuration la plus optimale
correspondant à la fonction objective minimale.
• Les résultats de l'algorithme du K-Means sont sensibles à l'initialisation aléatoires des
centres.


1. Extraction de contours
• On définit un contour comme une brusque variation du niveau de couleur,
• Plusieurs méthodes sont employées,

Méthode du gradient (dérivation première de l'image)


• On définit, pour un pixel (x,y) le gradient par la discrétisation de la première dérivée:
Ax = I(x+1,y) - I(x,y) Ay= I(x,y+1) - I(x,y).
• Le gradient peut aussi être caractérisé par son amplitude et sa direction :
o amplitude A0(x,y) = (Ax2 + Ay2)1/2,
o direction D(x,y) = Arctan(Ay / Ax)
Pour obtenir le gradient, on convolue l'image avec des masques dans la logique des
formules précédentes.
Roberts
Les algorithmes de Prewitt et
Sobel apportent une meilleure
insensibilité au bruit. Sobel

Prewitt

Méthode du laplacien (dérivation seconde de l'image)


𝜕2𝐼 𝜕2𝐼
Formellement, la définition du laplacien de la fonction I(x,y) est: 𝛥𝐼 = 2 + 2
𝜕𝑥 𝜕𝑦
Par discrétisation, on obtient la relation approchée DI = 4 I(x,y) - I(x,y+1) - I(x-1,y) -
I(x+1,y) - I(x,y-1) ce qui conduit au masque :
2. Segmentation en régions homogènes

Il s'agit de considérer une région comme un ensemble de points possédant la même


propriété ( homogénéité) . Les critères d'homogénéité peuvent être la couleur ou le niveau
de gris, la texture, ....
Méthode par séparation
Elle est basée sur la technique du Quad Tree : l'image est supposée carrée : on la divise en
4 quadrants, puis chaque quadrant en 4 sous-quadrants et ainsi de suite.
L'algorithme de division est simple et récursif : Separation(zone)
Si critere(zone)=VRAI alors
classer
sinon
diviser zone en 4 sous-zones Z1,Z2,Z3,Z4
Pour i=1 à 4 faire :
Separation(Zi)
fin Pour
fin Si
Méthodes par fusion
• Alors que la méthode précédente consistait à diviser l'image, les méthodes par fusion
appliquent le principe inverse : on fait croître une région en y incorporant les régions
voisines ayant les mêmes critères d'homogénéité ( fusion de région).
• La règle de fusion est double : les deux régions correspondent au même critère et elles
sont adjacentes. La méthode de la coloration de tâches consiste à promener sur l'image
une fenêtre de trois points.
• En chaque point on applique l'algorithme indiqué ci-dessous où Couleur est un niveau de
couleur attribué aux pixels satisfaisant le même critère.
Pour chaque point (x,y) faire :
Si critere(x,y)=critere(x-1,y) alors
Couleur(x,y)=Couleur(x-1,y)
sinon
si critere(x,y)=critere(x,y-1) alors
Couleur(x,y)=Couleurx,y-1)
sinon
Couleur(x,y)=Nouvelle_Couleur
fin Si
fin Si
fin Pour
• La méthode locale récursive consiste à faire croître au maximum une région avant de
passer à la suivante . L'algorithme est décrit ci-dessous :

Pour chaque pixel (x,y) faire :


Si I(x,y) <> 0 alors
sauvegarder le point de départ x,y
croissance(x,y)
incrémenter NuméroSegment
fin Si
fin Pour

croissance(x,y)
I(x,y)=0 // pour ne pas réexaminer(x,y)
Pour tout pixel adjacent à (x,y) faire :
Si I(x,y)<>0 et critere(pixel)=critere de départ alors
croissance(pixel)
fin Si
fin Pour

Vous aimerez peut-être aussi