Vous êtes sur la page 1sur 8

TP1 : Traitement d’images Numériques

Affichage et conversion d'images, Opérations sur les images, Histogramme

Matière : Image et Vision industrielle Niveau : IMI5


Enseignant responsable : Mme Ben Saïd Salma

L’objectif de ce TP est de prendre en main les outils de traitement d’images les plus classiques
à l’aide du logiciel Matlab. Aussi, de prendre en main les outils d'amélioration du contraste par
manipulation de l'histogramme.

I. Présentation de MatLab (MATrix LABoratory)

MatLab est un logiciel pour effectuer des calculs numériques. Il a été conçu initialement
pour faciliter le traitement des matrices mais il est maintenant utilisé dans tous les domaines
des sciences qui nécessitent de faire des calculs. Il permet de réaliser du calcul numérique et de
tracer des graphiques pour visualiser et analyser les données. Il dispose d’un langage et d’un
environnement de programmation interactifs ainsi que d’outils pour concevoir des interfaces
utilisateur graphiques.
II. Traitement d'images
Matlab est associé à des boites à outils appelé ToolBox permettant d’accéder à des
fonctions spécifiques à un domaine d’application comme le traitement d’images par exemple.
Les TPs de traitement d’images réalisés avec Matlab nécessitent ainsi la toolbox « Image
Processing ». Les fonctions de ces toolbox peuvent être listées en tapant la fonction help
images dans l’éditeur de commande de Matlab. Pour obtenir un descriptif détaillé de ces
fonctions, utiliser l’aide contextuelle en tapant la fonction help suivi du nom de la
fonction.Vous pouvez découvrir les démonstrations associées à la toolbox « Image Processing
» en tapant la fonction demos (ou directement le nom de la démonstration à découvrir).

A. Type d’images sous MatLab

Une image sous MATLAB est représentée par une matrice. L’élément de base appelé pixel
représente simultanément un point de l’image et un élément de la matrice. Par exemple : soit
une image nommée Im, Im(5,10) est la valeur du pixel qui se trouve à la ligne 5 et la colonne
10 de l’image Im.

MATLAB utilise quatre types d’images : Images RVB (Rouge Vert Bleu), Images indexées,
Images d’intensité (Niveaux de gris), Images binaires.

Avec MATLAB, une couleur peut être exprimée soit en spécifiant explicitement les trois
valeurs R, V et B, soit par l'intermédiaire d'un indice dans une table contenant elle-même des
couleurs RVB. Dans le premier cas, on parle de couleurs vraies (true color en anglais) alors que
dans le second, on parle de couleur indexée (indexed color en anglais).

Page 1/8
Images RVB

La couleur RGB du pixel de l’image est précisée par trois valeurs correspondantes aux trois
composantes rouge, verte et bleue de cet espace colorimétrique. Les valeurs prises par ces
triplets dépendent de la classe utilisée par la variable pour les stocker.

Images indexées

Une image indexée est composée d’une carte de couleur (colormap) et d’une matrice de
l’image. Chaque pixel de l’image est un pointeur sur un élément de la carte de couleur qui
représente sa couleur RVB.

Une palette de couleurs (palette en anglais ou encore colormap sous MATLAB) est un tableau
numérique de taille Mx3 où chaque ligne contient les valeurs du triplet RGB d'une couleur
donnée. MATLAB possède 17 palettes de couleurs prédéfinies. Pour utiliser une des palettes
prédéfinies, on utilise la fonction colormap comme ceci par exemple: colormap winter

Soit une image contenant quatre pixels de couleurs respectives rouge, orange, jaune et bleu et
dont les valeurs sont indexées sur la palette jet avec 64 couleurs.
Xdouble = [8 40 48 56];

colormap(jet(64))

image(Xdouble)

Images d’intensité (Niveaux de Gris)

MATLAB sauvegarde une image d’intensité sous forme d’une matrice unique appelé matrice
d’intensité. Elle contient des valeurs allant de 0.0 à 1.0. Chaque élément de la matrice représente
un pixel de l’image. Sa valeur indique un niveau de gris ou une intensité. L’intensité 0.0
représente le noir et 1.0 représente le blanc.

Par exemple : - charger l’image trees: load trees ;


- convertir l’image indexée en image d’intensité : I=ind2gray(X,map) ;
- afficher l’image indexée selon 64 niveaux de gris : imshow (X,[0 64])
Image binaire

Une image binaire contient uniquement deux niveaux de gris : 0 (noir) et 1 (blanc).

Par exemple : - charger l’image trees : load trees

-convertir l’image indexée en image binaire I=im2bw(X,map) ;

- détecter les contours BW=edge(I) ;

- afficher l’image binaire inversée des contours imshow(~BW)

 Construire une image binaire de dimension 64x64 pixels formée par un cadre noir de
largeur un pixel et d’un rectangle noir au centre de l’image de dimension 20x15 pixels.

Page 2/8
 Il est possible de changer de type d’image en utilisant les fonctions suivantes :
• ind2gray : indexé vers intensité,
• ind2rgb : indexé vers RGB,
• rgb2ind : RGB vers indexé,
• rgb2gray : RGB vers intensité,
• im2bw : intensité, indexé, RGB vers binaire : c’est l’opérateur de binarisation.
Une image binaire peut être également obtenue en utilisant un seuillage.

B. Images fournies par MatLab

Sous forme de données: *.mat

Chaque image est enregistrée dans un fichier .mat


et chacun de ces fichiers comporte deux variables :
X : le tableau contenant les pixels de l'image
map : la palette de couleurs associées.

Le chargement de ces images s'effectue avec la


fonction load

Images au format JPEG

Page 3/8
Images au format TIFF

Page 4/8
Images au format PNG

Page 5/8
C. Opérations sur les images

Opérations logiques sur les images binaires

Créer deux images binaires A et B de définition 100*100 telles que:


A=zeros(100,100);
B=zeros(100,100);
A(30:60,30:60)=1;
B(50:80,50:80)=1;

 Opérer les fonctions logiques and, or, xor, not sur ces images et afficher le résultat
sur une même figure

Opérations mathématiques sur les images en niveaux de gris

Charger l’image pout.tif en mémoire, en utilisant le code suivant :


 écrire un petit programme qui permet d'augmenter la dynamique de l'image en opérant
une multiplication par un ratio et afficher le résultat.
 choisir deux images et opérer une addition, une soustraction entre ces images. les deux
images doivent être de même taille. (utiliser la fonction imresize en cas de besoin).

Page 6/8
D. Histogramme et Binarisation

L’histogramme d’une image est la distribution des intensités dans cette image. La fonction
imhist(I,n) calcule l’histogramme de l’image I en utilisant n niveaux de gris. Elle compte le
nombre de pixels par niveau de gris et l’affiche.

%charger l'image spine


load spine;
%convertir l'image indexée en une image d'intensité
I=ind2gray(X,map);

 calculer et afficher l'histogramme


 Déterminer le maximum de la distribution de l’intensité
 Afficher l’histogramme de l’image I à l’aide de 32, 64 et 128 niveaux de gris.
 Déterminer le maximum de la distribution de l’intensité dans chaque cas

Profil d’intensité
La fonction improfile calcule et affiche l’intensité de l’image le long d’un ou de
plusieurs segments. Par exemple :

%afficher l'image d'intensité selon 64 niveaux de gris


figure(3), subplot(1,2,1), imshow (X,[0 64]), title('image d''intensité')
% afficher les axes
axis on
subplot(1,2,2), improfile (I,[100 400], [200 200])

Egalisation de l’histogramme
Charger l’image forest en mémoire, en utilisant le code suivant :
%charger l'image forest en mémoire
[X,map]=imread('forest.tif');
Pour convertir une image indexée en une image d'intensité, on utilise la commande suivante :

%convertir l'image indexée en image d'intensité


I=ind2gray(X,map);

L’égalisation de l’histogramme permet de distribuer uniformément le nombre de pixel par


niveau de gris. La fonction histeq(I,n) effectue l’égalisation. I est l’image et n est le nombre de
niveaux de gris.
 Représenter sur le même graphique
L’histogramme correspondant à l’image d'intensité forest
L’histogramme égalisé sur 128 niveaux de gris
L’image dont l’histogramme est égalisé
 Quelles différences remarquez-vous entre les deux images.

Page 7/8
Charger une image en niveaux de gris, de votre choix, nommée I1.
 Afficher son histogramme. Interpréter.
 Eclaircir l'image I1 et l'enregistrer dans une matrice I2.
 Assombrir l'image I1 et l'enregistrer dans une matrice I3.
 Améliorer le contraste de chacune de ces images par l'opération d'égalisation de
l'histogramme. Afficher le résultat sous la forme:

I1 I2 I3
E1 E2 E3
H1eq H2eq H3eq

Interpréter.

Seuillage et binarisation
Le seuillage d’une image consiste à considérer les pixels de l’image dont la valeur est supérieure
(ou inférieure) à un seuil. Une image binaire peut être obtenue par seuillage en remplaçant tout
pixel dont la valeur est supérieure (ou inférieure) au seuil.
Pour choisir le seuil, l’histogramme peut être utilisé.
Exemple:
Load trees ;
I=ind2gray(X,map) ;
BW=(I>0.5) ;
Subplot(1,2,1), imshow(X,map)
Subplot(1,2,2), subimage(BW)
Axis off

 Charger l’image coins.png en mémoire


 Utiliser l’histogramme pour choisir un seuil de façon à isoler les pièces de monnaie
 Afficher sur le même graphique l’image coins, l’histogramme et l’image binarisée.

Page 8/8

Vous aimerez peut-être aussi