Vous êtes sur la page 1sur 4

Groupe Vision, CUI, Universit de Genve http://vision.unige.

ch/Teaching/imagerie_numerique/ fvrier 2002

Introduction Matlab
1 Introduction Matlab est un langage de programmation de haut niveau pour le calcul numrique. Il est particulirement performant pour le calcul matriciel, car sa structure de donnes est base sur les matrices, et il dispose de possibilits d'affichage trs riches. Il s'agit d'un langage interprter, ce qui permet un dveloppement trs rapide mais qui a l'inconvnient de ne pas avoir un temps d'excution aussi rapide qu'un langage comme C. 2 Lancer Matlab Voici la procdure pour utiliser Matlab sur le rseau du CUI : Crez un rpertoire nomm matlab pour stocker vos futurs fichiers. Pour lancer Matlab, slectionner MATLAB dans PROGRAMES\MATHEMATIQUES. Pour quitter Matlab, tapez quit ou choisissez File\Exit. Ouvrez un nouveau fichier et sauvegardez-le sous tp1.m par File\Save as. Ecrivez toutes vos commandes dans ce fichier et pour les excuter, utiliser soit la commande File\Execute Script soit un copy-paste pour transfrer les commandes dans la fentre principale. Ainsi, vous pouvez modifier des commandes errones ou les rutiliser ultrieurement. Pour obtenir de l'aide, tapez help, help nom_de_la_commande ou activez le systme d'aide du menu. 3 Instructions de base Dans un langage quon apprend, les choses sont souvent difficiles cause des "petits trucs" quon ne matrise pas : comment faire une boucle, accder une case de tableau, etc. Voici donc comment faire. 3.1 Cration de variables Matlab fait la distinction entre majuscules et minuscules. Pour crer une variable et/ou pour lui attribuer une valeur, tapez variable=valeur. Exemple :
a=3

Pour supprimer l'affichage du rsultat, terminez la commande avec un point virgule :


b=a+1;

Pour afficher la valeur attribue une variable, tapez le nom de celle-ci :


b

Pour crire plusieurs commandes dans une seule ligne, sparez-les par une virgule ou un point virgule :
c=0.5; d=c*a, c

Si aucune variable n'est associe une expression, le rsultat est stock dans la variable ans :
c+5

3.2 Cration de tableaux Un tableau Matlab peut tre cr par plusieurs mthodes diffrentes :

1) explicitement par proposition des lments du tableau :


A A A A = = = = [1, 2, 3]; [17:20]; zeros(10,2); [1,2,3; 4,5,6]; % un tableau de 3 lments (1,2,3) % un tableau de 4 lments (17,18,19,20) % une matrice de 10 lignes et 2 colonnes % une matrice 2 lignes/3 colonnes (1re =(1,2,3), 2me ligne=(4,5,6) )

ligne

2) implicitement par affectation dun autre tableau


A = B; % A prend les dimensions et le contenu de B

Note : on peut combiner un scalaire avec un tableau, par exemple :


C = A + 1; D=C*2, E=C+D

3.3 Accs aux lments dun tableau Les tableaux sont accds avec des parenthses, chaque dimension tant spare par une virgule :
valeur = A(i,j); % 1er indice = ligne, 2me indice=colonne

Cette notation fonctionne aussi dans lautre sens pour affecter une valeur une portion du tableau :
A(1)=0, A(2:5)=[4 3 2 1], A([1 3 5])=2

3.4 Affichage Une nouvelle figure (=fentre graphique de traage) est cre par :
figure

Sur cette figure, les donnes peuvent tre reprsentes sous plusieurs formes diffrentes (images, bar graphes, graphiques, etc). Pour afficher les valeurs d'un vecteur, on utilise la commande plot (le dernier argument spcifie le style d'affichage). Exemples :
plot([3 5 2 6 1.5],'b*') plot(B)

Pour afficher plusieurs plot dans la mme figure, utilisez la commande


hold on plot(C,'g+')

Le contenu d'une figure est effac l'aide de :


clf

et la figure est ferme l'aide de :


close

Pour afficher un vecteur en fonction d'un autre, utilisez :


plot(A,tan(A),'r--')

Il est galement possible d'afficher plusieurs paires de vecteurs avec une seule commande en rptant les trois arguments :
close, plot(A,C,'r--',A,A.*A+1,'k*')

Ainsi
plot(F8)

affiche les colonnes de la matrice en fonction des indices. Voir help plot pour plus de dtails. On peut galement afficher une image avec la commande imshow :
imshow(img,[]); % [] permet d'adapter la plage de couleurs

On peut galement afficher un vecteur sous forme de barre-graphe :


bar(A)

3.5 Boucle for La syntaxe de la boucle for ressemble beaucoup celle utilise en Basic :
for indice=borne_inf:increment:borne_sup; end;

Notons toutefois que les boucles for sont hautement inefficaces (lentes) car il ne sagit pas dune part de Matlab importante (elle na donc pas t optimise). 3.6 Seuillage et segmentation Un seuillage ou une segmentation sont des oprations de requantification dimage. Le seuillage consiste diminuer 2 le nombre de couleurs de limage (image binaire).Avec Matlab, on lcrit (A est la matrice image et seuil est le seuil) :
A>seuil

Cette comparaison retourne une image binaire (de couleurs 0 et 1). Ainsi, tous les pixels de couleur suprieure au seuil sont blancs (1) et tous les autres sont noirs (0). La segmentation consiste raliser une slection de plage. Tous les pixels dont la couleur correspond une certaine plage seront blancs tandis que les autres seront noirs :
(A>seuil_inf) & (A<seuil_sup)

4 Fonctions utiles Voici la liste des fonctions Matlab les plus courantes pour le traitement dimage de base (images, histogrammes, statistiques) :
min

calcule le minimum dune matrice (pour une matrice MxN, retourne un vecteur des valeurs minimum de chaque ligne de la matrice). calcule le maximum dune matrice (pour une matrice MxN, retourne un vecteur des valeurs maximum de chaque ligne de la matrice). conversion en nombre (scalaire, vecteur ou matrice) double prcision. conversion en nombre (scalaire, vecteur ou matrice) entier non sign 8 bits. calcul de la puissance. Exemple : x^y produit matriciel

max

double uint8 ^ *

.* imread

multiplication de matrice lment par lment (cij=aij*bij) lecture dune image. Ncessite le toolbox "images". Exemple :
a = imread('nom_de_l_image');

imwrite

criture dune image sur le disque. Ncessite le toolbox "images". Exemple :


imwrite(A, 'nom_de_l_image.extension', 'png');

imshow

affichage dune image. Ncessite le toolbox "images". Exemple :


imshow(img,[]);

plot

affichage dune courbe. Exemple :


plot(valeurs_x, valeurs_y);

bar

affichage dun bar-graphe. Exemple :


bar(y);

size

retourne la taille dune variable. Exemple :


[x,y] = size(A); % x=nbr de lignes, y=nbr_colonnes

zeros

cration dun vecteur ou dune matrice de dimension MxN. Exemple :


B = zeros(M,N);

subplot

affichage de plusieurs sous-figures dans la mme figure.

5 Exemples Voici quelques exemples qui permettent de bien comprendre le fonctionnement de Matlab. 5.1 Affichage dun chiquier :
b=zeros(8,8); b(1:2:8, 1:2:8)=255; b(2:2:8, 2:2:8)=255; imshow(b); % % % % par dfaut, tout est noir les cases avec indice i et j pairs sont blancs les cases avec indice i et j impairs sont blancs on affiche

5.2

Parcours dune matrice


A=zeros(3,10); % matrice 3 lignes 10 colonnes [nbr_lignes nbr_colonnes] = size(A); for num_ligne = 1:nbr_lignes; for num_colonne=1:nbr_colonnes; % dgrad de gris en fonction de la colonne : A(num_ligne,num_colonne)=(num_colonne*255)/nbr_colonnes; end; end; imshow(A);