Académique Documents
Professionnel Documents
Culture Documents
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 ?
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 :
Les nouvelles valeurs du pixel sont calculées par produit scalaire entre le noyau de convolution et le voisinage
correspondant du pixel.
La Convolution
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 :
𝐻𝑐 𝑥 = 𝐻(𝑖)
𝑖≤𝑥
• 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é :
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
5000
4000
3000
2000
1000
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.
• É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
entropie
Exercice:
On considère l'image suivante en 4 couleurs
0 (noir), 1, 2, 3 (blanc) :
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:
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:
• 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
>> 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 ».
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:
• 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,
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
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
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.
• 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
…
• 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 ».
Itération 1
Itération 3
Comme conclusion de la méthode split and merge:
• 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
𝑑 𝑥, 𝑦 = 𝑥𝑖 − 𝑦𝑖
𝑖=1
Distance Hamming entre :
o "karolin" et "kathrin" est 3.
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
• 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,
Prewitt
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