TP Image PDF
TP Image PDF
TP Image PDF
Strauss
2• CHARGEMENT, AF F I C H AGE, …
Liste des instructions disponibles sous matlab :
• imread : chargement d'une image, syntaxe im1=imread('nom_de_fichier.ext');
• image(im1) : affiche l'image im1 dans une fenêtre du type figure
• colormap(gray(255)) : spécifie pour l'affichage d'une image, la palette de couleur
• axis('image') : échelle carrée des pixels
• ginput(1) permet de saisir les coordonnées d'un point dans l'image avec la souris, syn-
taxe : [x,y]=ginput(1)
• double : transforme des données uint8 en double
• max(data) recherche la valeur maximum dans data
• min(data) recherche la valeur minimum dans data
• figure(n) fait apparaître la figure n
2.1• Chargement d’image.
Nous allons travailler sur une image présentant une vue de divers chocolats sur fond
blanc. Pour charger cette image, utilisez la fonction imread :
ImageChocolat = imread('Chocolat.jpg') ;
L’objet ImageChocolat est une matrice Nlin x Ncol. Vous pouvez obtenir ses dimensions
en utilisant la fonction size :
[Nlin, Ncol] = size(ImageChocolat) ;
Le < ; > permet d’éviter l’affichage, alors que la < , > permet l’affichage des valeurs.
Pour obtenir la valeur de niveau de gris d’un pixel, il suffit de l’adresser. Par exemple,
si on veut connaître la valeur de niveau de gris du pixel central de l’image il suffit
d’écrire :
ImageChocolat(floor(Nlin/2), floor(Ncol/2)) , % virgule pour l’affichage
La fonction floor assure que la coordonnée est bien une valeur entière.
2.2• Affichage de l’image.
Pour afficher l’image dans une figure, il faut, tout d’abord, créer la figure, puis demander
au système d’afficher l’image dans la figure :
figure(12) ; image(ImageChocolat) ;
Votre image ne s’affiche pas avec les bonnes couleurs. Pour obtenir un affichage correct,
il faut changer la table des couleurs. Vous pouvez le faire avec la commande colormap :
colormap(gray(256)) ;
Enfin, si vous tentez de déformer l’image en manipulant la fenêtre la figure, vous ne
maîtrisez pas la dimension de l’image. Pour que l’affichage respecte les dimension de l’ima-
ge il faut lui préciser le rapport hauteur largeur par :
axis('image') ;
3• HISTOGRAMME D’IMAGES.
3.1• Transformation d’un tableau en un vecteur.
Pour pouvoir effectuer un histogramme, il faut transformer votre matrice image en un
vecteur contenant toutes le valeurs de niveau de gris. Pour faire cette opération, créez
un nouveau script Histogramme.m et saisissez :
clear all ; close all ;
ImageChocolat = imread('Chocolat.jpg') ;
ImageChocolat = double(ImageChocolat) ;
[Nlin, Ncol] = size(ImageChocolat) ;
% creation d’un vecteur de 0 de Nlin*Ncol elements
Vecteur = ImageChocolat(:) ;
3.2• Histogramme.
La fonction hist(Vecteur,N) dessine l'histogramme de Vecteur sur N niveaux de gris.
Déterminez un seuil global possible pour isoler les chocolats du fond blanc. Vous pouvez
récuperer l’histogramme calculé en écrivant :
NiveauxDeGris = 0:255 ;
MonHistogramme = hist(Vecteur,NiveauxDeGris) ;
Réalisez un étirement puis une égalisation d’histogramme pour l’image des chocolats (mé-
thode vue en cours). Vous essayerez aussi ces méthodes sur les images faiblement con-
trastées disponibles pour ce TP.
Essayez de calculer automatiquement le seuil en utilisant la méthode de Fisher (méthode
vue en cours).
3.3• Seuillage
Le seuil ayant été déterminé dans la phase précédente, on peut obtenir une image binaire
de la façon suivante :
seuil = ??? % vous donnez une valeur au seuil
ImageBinaire = zeros( Nlin, Ncol ) ;
for lin=1:Nlin
for col=1:Ncol
if( ImageChocolat(lin,col) < seuil )
ImageBinaire(lin,col) = 1 ;
end
end
end
Pour afficher l’image binaire, il faut réduire la palette de couleurs :
figure(22) ; image(uint8(ImageBinaire)) ;
colormap(gray(2)) ; axis('image') ;
Effectuer le travail à l'aide éventuellement d'un script, analysez le résultat en fonction
du seuil choisi (faites varier les seuils).
3.4• Obtention d'une forme pleine.
Pour "boucher" les trous qui peuvent apparaître après le seuillage, on utilise un opé-
rateur logique appelé fermeture morphologique. Une fermeture morphologique est une
succession de deux opérations morphologiques de base qui sont
• une dilatation qui grossit les formes blanches
• une érosion qui grossit les formes noires (c’est une opération duale).