Académique Documents
Professionnel Documents
Culture Documents
TP de Traitement d‟images.
Séance 1 : Premiers contacts avec MatLab
I. Introduction
A. Contexte
Cet énoncé constitue le premier volet des séances de TP de Traitement d‟images. La vocation de cette
première séance, qui sera assez théorique, est de permettre à chaque étudiant de prendre en main le
logiciel MatLab (connaissance de l‟environnement, commandes usuelles, programmation de base) et de
réaliser ses premiers programmes qui constitueront les briques de bases nécessaires à la réalisation des TP
suivant.
B. Objectifs pratiques
Les objectifs sont triples : rafraîchir et consolider les connaissances acquises en cours, découvrir et
assimiler les commandes usuelles de MatLab et le fonctionnement de MatLab Help, et mettre en
application l‟ensemble de ces savoirs et savoir-faire via la réalisation de premiers programmes en vue des
futures TP.
Calcul matriciel et non calcul formel : inutile de demander à MatLab de calculer une dérivée ! MatLab
est un outil performant de calcul numérique, qui permet de résoudre des problèmes d‟analyse matricielle,
d‟approximation de solutions d‟équations différentielles, de statistiques et de fouille de données, de
traitement du signal numérique, ou encore d‟optimisation numérique. Pour des calculs mathématiques
formels (comme la résolution exacte d‟ED, le calcul d‟intégrales, etc…), l‟utilisateur devra se reporter à
d‟autres logiciels…ou encore aux services d‟un mathématicien !
Faculté des Sciences TP1 Traitement d’images Session d’automne : 2015/2016
Kenitra Master Pr. Y. El merabet
Remarques: Penser aussi à utiliser la commande help suivie du nom de la fonction à étudier dans la
fenêtre de commande (plus rapide, mais nécessite de savoir à l‟avance ce que l‟on recherche !).
M-files : les m-files sont les fichiers dans lesquels sont écrits les programmes et les fonctions. Ils portent
l‟extension « .m », et sont analogues (par exemple) aux fichiers « .c » du langage C.
Pour créer un m-file, on peut utiliser l‟éditeur de Matlab : fichier-> Nouveau-> m-file
>> v(1 :2 :5) accès aux éléments qui vont de 1 `a 5, mais en incrémentant avec un pas
de 2, le vecteur (11 33 55) est retourné
Il est possible, pour finir, de définir les matrices par blocs, tester les commandes suivantes :
Graphes et dessins
Il est facile d‟effectuer diverses représentations graphiques avec Matlab, en 2d aussi bien qu‟en 3d. En
tapant
y
>> plot(x,y) 0
>> xlabel(‟x‟) -2
>> ylabel(‟y‟)
>> title(‟titre de la figure‟) -4
-6
0 1 2 3 4 5 6 7 8 9 10
x
0.6 0.6
0.4 0.4
>> plot(x,sin(x),'b') %courbe en bleue 0.2 0.2
>> subplot(1,2,2) 0 0
-0.4 -0.4
-0.6 -0.6
-0.8 -0.8
-1 -1
0 5 10 0 5 10
Les fonctions :
Toute fonction devra être déclarée à la première ligne du fichier en respectant la typologie suivante : «
„function‟ » suivi du vecteur de sortie « [sortie1, sortie2] » « „=‟ » « nomdelafonction » « (entrée1,
entrée2, entrée3) ».
function [s,p]=som_pro(x,y)
s=x+y ;
p=x*y;
On notera le “ ;” pour éviter que Matlab nous affiche ce qu‟il calcule dans la fonction.
On accédera ensuite aux valeurs de cette fonction dans la fenêtre principale de Matlab par
>> [s,p]=som_pro(1,2)
Les fonctions réalisant les fonctions mathématiques couramment utilisées en traitement du signal sont
données par help elfun et help datafun.
if condition logique
instructions
elseif condition logique
instructions
...
else
instructions
end
Boucles for
Boucles while
I2 = I;
I2(:,:,1) = zeros( size(I,1), size(I,2) );
I2(:,:,3) = zeros( size(I,1), size(I,2) );
subplot(2,2,3); imshow(I2); colorbar;
I3 = I;
I3(:,:,1) = zeros( size(I,1), size(I,2) );
I3(:,:,2) = zeros( size(I,1), size(I,2) );
subplot(2,2,4); imshow(I3);
imwrite(I3, „test.bmp‟) ;
Conversion image couleur à une image niveau de gris : exécuter et commenter les codes
suivants:
NB/ Dans ces exemples, le format des images est uint8, i.e. les pixels sont des entiers non signé codé sur 8
bits (valeurs des pixels comprises entre 0 et 255). Cependant, lors de traitement (par exemple lors de
filtrage), il est intéressant de manipuler des données au format double (réel double précision codé sur 64
bits), augmentant ainsi la précision des calculs. La commande suivante permet de convertir l‟image en
format double :
>> img = double(img);
Certaines fonctions ou certains outils de Matlab permettent des manipulations interactive sur une image
contenue dans une figure ou non :
Faculté des Sciences TP1 Traitement d’images Session d’automne : 2015/2016
Kenitra Master Pr. Y. El merabet
o imageinfo : retourne les informations de l‟image dans la figure ou d‟un fichier image,
o zoom : zoom sur une zone de l‟image de la figure,
o imcrop : sélectionne une zone de l‟image,
o improfile : affiche le profil d‟une ligne sélectionnée,
o impixel : retourne les valeurs des pixels sélectionnés,
o impixelinfo : affiche la position et les valeurs d‟un pixel pointé avec la souris,
o impixelregion : affiche les valeurs des pixels dans une région sélectionnée avec la souris,
o imdistline : affiche la distance entre deux pixels sélectionnés,
o imdisplayrange : affiche l‟intervalle des valeurs des pixels de l‟image,
o imcontrast : réajuste une image,
o imtool : outil qui utilise les outils précédents.
D‟autres fonctions permettent des opérations géométriques sur l‟image :
o imresize : ré-échantillonnage de l‟image (homothétie),
o imrotate : rotation de l‟image.
Travail demandé :
o exécuter et commenter le code suivant
f = imread('mosek.jpg');
whos f
class(f)
imshow(f( :, :,1),[10 50])
imshow(f(200:260,150:220))
[m, n, c] = size(f)
[m, n] = size(f)
imtool(f)
whos
1. Pour alléger les traitements, redimensionner car.bmp en 400 pixels * 266 pixels
2. Tester l‟opérateur whos ou imageinfo pour connaitre les caractéristiques de l‟image
originale et l‟image obtenue
3. Décomposez l‟image car.bmp en trois composantes : rouge, verte, bleue
4. A l‟aide l‟opérateur impixelregion, visualiser les valeurs des pixels dans la
composante verte.
5. A l‟aide l‟opérateur imdistline, calculer la distance entre deux pixels de l‟image
originale.
6. Ecrire une fonction distance.m qui prend en entrée le nom de l‟image, deux pixels et
qui retourne la distance entre eux (utiliser les distances vues dans le cours en
employant la fonction switch).