Vous êtes sur la page 1sur 10

Introduction Matlab pour le traitement d'image

Stphane BAZEILLE
Le 13 mars 2006

Table des matires

Introduction Matlab

1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.1 2.2 2.3 2.4 2.5 2.6 2.7

Q'est-ce que MATLAB . . Les variables . . . . . . . Les oprations matricielle Les variables prdnies . Les fonctions . . . . . . . Conditions et boucles . . . Les entres sorties . . . . Structure des programmes Les toolboxes . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

2 2 3 3 3 4 4 4 4 5 5 5 6 6 6 6

Traitement d'image sous MATLAB

Image Processing Toolbox . . . . . . . . . . . Codage d'une image, reprsentation spatiale . Lecture, criture et achage d'une image . . Histogramme d'une image . . . . . . . . . . . Filtrage linaire et convolution . . . . . . . . Transformation et rprsentation frquentielle Dtection de contours . . . . . . . . . . . . .

Quelques exemples de programme

Chapitre 1
Introduction Matlab

1.1 Q'est-ce que MATLAB


 MATLAB est l'abrviation de MATrix LABoratory. C'est un logiciel pour le calcul numrique et la visualisation optimis pour le calcul matriciel.  MATLAB peut tre considr comme un langage de programmation, il dispose d'une syntaxe spcique mais elle est simple et intuitive.  MATLAB est un interprteur : les instructions sont interprtes et excutes ligne par ligne.  MATLAB propose deux types de fonctionnement :  un fonctionnement en ligne de commande o MATLAB excute les instructions au fur et mesure qu'elles sont donnes par l'utilisateur.  un fonctionnement via des scripts, dans ce cas MATLAB excute ligne par ligne un chier texte que l'on dsigne par programme.  MATLAB propose galement une aide trs complte illustr d'exemple, tant donn le trs grand nombre d'instructions utilisables, il est important de bien savoir l'utiliser.

1.2 Les variables


Les variables manipuls sont en priorit des matrices lmnts rls ou complexes. Un scalaire est une matrice 1x1. Un exemple de matrice :  a=[1,2,3 ;4,5,6] Lorsque les composantes d'un vecteur forment une suite rgulirement espace, on peut utiliser une boucle dite  implicite de la forme :  a=(0 :2 :10) ce qui est quivalent a=[0,2,4,6,8,10] On accde au premier lement d'une matrice par a(1,1) et la premire ligne de la matrice par a(1, :). Remarque : Il faut respecter les minuscules majuscules dans l'applation des variables. 2

1.3 Les oprations matricielle


           
u v multiplication matricielle u + v addition matricielle u v soustraction matricielle u v exponentiation u. v multiplication terme a terme u et v u./v division du tableau u par le tableau v terme terme. u. v exponantiation terme terme. A\b rsolution du systme linaire Ax=b u prend le transpos de u

inv(A) inverse d'une matrice det(A) dterminant d'une matrice rank(A) rang d'une matrice.

1.4 Les variables prdnies


 ones(L,C) : matrice de L lignes C colonnes contenant des 1.  zeros(L,C) : matrice de L lignes C colonnes contenant des 0.  randn(L,C) : matrice de L lignes et C colonnes contenant un chantillon de distribution gaussienne centre de variance 1.  rand(L,C) : matrice de L lignes et C colonnes contenant un chantillon de distribution uniforme sur l'intervalle (0,1).  eye(L,C) : matrice de L lignes C colonnes contenant des 1 sur la diagonale principale et des 0 ailleurs (matrice identit).  diag(V) : matrice carre avec le vecteur V sur la diagonale et des 0 ailleurs.  La contante pi vaut 3.14159265358979.  Les constantes i, j sont aussi prdnies et i = j = ( 1).

1.5 Les fonctions


Les fonctions mathmatiques de base :  abs, sqrt ,real, imag, conj, round, x, oor, ceil, sign, rem , exp, log. Les fonctions trigonomtriques :  sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh. Autres fonctions utiles :  La fonction eig permet d'obtenir les valeurs propres et vecteurs propres d'une matrice.  La fonction poly donne le polynome caractristique associ la matrice.  La fonction roots fournit les racines d'un polynome.

1.6 Conditions et boucles


Les oprateurs logiques &, et (respectivement ET, OU et NON logique) oprent sur des quantits boolennes. La valeur boolene  faux est code 0 et la valeur vrai est code par une valeur non nulle. La structure IF ELSEIF ELSE permet d'exploiter ces quantits. MATLAB dispose aussi des boucles FOR et WHILE cependant il est conseill d'viter de les utiliser pour des raisons de performances.

1.7 Les entres sorties


Achage des rsultats :  MATLAB ache automatiquement le rsultat aprs l'excution d'une ligne de commande. Il faut placer un  ; aprs une commande si l'on veut empcher cet achage. Les entres sorties :  input et ginput pour les acquisitions au clavier.  disp et sprintf pour les achages sur l'cran.  gtext, plot, grid, title pour les achages graphiques.  load et save pour charger ou sauvegarder dans un chier format MATLAB.  fopen, fread, fwrite pour charger sauvegarder dans des chiers sous un autre format.

1.8 Structure des programmes


Un programme MATLAB est un chier texte contenant des suites d'instructions MATLAB dont le nom a comme extension .m Par exemple  programme.m . Dans la fentre commande, si l'on tape  programme , les instructions contenues dans le chier programme.m seront excutes une par une.

1.9 Les toolboxes


En plus de fonctions de bases pour le calcul matriciel, MATLAB dispose de nombreuses librairies de fonctions spcialises appeles  toolbox dans dirents domaines. On peut citer notamment les toolboxes : control system, data acquisition, fuzzy logic, neural network, optimization, statistics, signal processing, wavelet et la toolbox image processing qui nous interresse plus particulirement.

Chapitre 2
Traitement d'image sous MATLAB

2.1 Image Processing Toolbox


Les fonctions de la librairie  traitement d'image de MATLAB :  Lecture, criture et achage d'une couleur ou niveau de gris,  Transformations spatiales et transformations frquentielles,  Filtrage linaire et non linaire,  Binarisation et morphologie mathmatique,  Analyse, et restauration d'image,  Changement d'espace couleur,  ...

2.2 Codage d'une image, reprsentation spatiale


Une image est considre comme un ensemble de points ou pixels (picture element), associ au quadrillage rectangulaire de l'image d'origine. La rprsentation d'une image se fait donc par l'intermdaire d'une matrice d'entier cods entre 0 et 255. Les images en niveau de gris sont repsentes par des matrices 2D, les images couleurs reprsents par 3 composantes (Rouge, Vert, Bleu) sont repsentes par des matrices 3D. On accde un pixel grace a son indice de ligne et son indice de colonne. Le premier pixel d'une image est le pixel en haut gauche. Cette reprsentation est appel reprsentation spatiale de l'image.

2.3 Lecture, criture et achage d'une image


Lecture d'une image :  fonction imread 5

Ecriture d'une image :  fonction imwrite Achage d'une image :  fonction imshow, imagesc

2.4 Histogramme d'une image


Un histogramme est un graphique statistique permettant de reprsenter le nombre de pixels pour chaque intensit lumineuse. Par convention un histogramme reprsente le niveau d'intensit en abscisse en allant du plus fonc ( gauche) au plus clair ( droite). On calcul l'histogramme d'une image par la fonction imhist.

2.5 Filtrage linaire et convolution


Le ltrage par convolution : appliquer un ltre de convolution consiste multiplier chacun des pixels de la matrice image par la matrice noyau de convolution ; Pour calculer la valeur d'un pixel de la matrice image, on multiplie sa valeur par celle du pixel central du noyau et on additionne ensuite la valeur des produits des pixels adjacents. La fonction qui ralise la convolution est conv2. Quelques exemples de ltres linaires :  ltre moyenneur et gaussien,[1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9]  ltre passe haut, passe bas, passe bande, [0 -1 0 -1 5 -1 0 -1 0] [1 1 1 1 4 1 1 1 1]  ltre drivateur (Prewitt, Sobel),  ltre laplacien,[-1 -1 -1 -1 8 -1 -1 -1 -1]  ...

2.6 Transformation et rprsentation frquentielle


Les transformations de l'image permettent d'obtenir d'autre rpresentation. Quelques exemples de transformations frquentielles :  transforme de fourier (fonctions t2, it2),  transforme en cosinus (fonctions dct2, idct2),  ...

2.7 Dtection de contours


La dtection de contour permet de faire ressortir les variations importantes de l'image.  fonction edge

Chapitre 3
Un peu de code. . .

clear;close all; %Matrice a=[1 -1;0 1] b=[1 2;-3 1] c=[4 -3;1 1] ((a*b)'*1/c)*a %Matrice inverse d=[1 3;3 -1]; comd=[-1 -3;-3 1]; comd'*1/det(d) inv(d) %Rsolution de systeme a=[3 2 -1 -1;2 -1 -1 1;1 2 -2 1;-1 -1 -3 2]; b=[0;1;3;-4]; a\b inv(a)*b %Polynome %p=x^4-12*x^3+25*x+116 p=[1 -12 0 25 116] r=roots(p) sum(r)

%Calcul x=linspace(-15,15,100); f=x.^5-3*x.^4-11*x.^3+27*x.^2+10*x-24; df=diff(f)./diff(x); dx= x(2:length(x)); figure;plot(x,f,dx,df); %Plot 3D [x,y] = meshgrid(-3:0.1:3); z = (x+y).*exp(-(x.^2 + y.^2)); figure;mesh(z); %Premiere image b=zeros(100,100); b(35:65,35:65)=255; figure;imshow(b); %Convolution Laplacien im=imread('cameraman.tif'); im=double(im)/255; im=imnoise(im,'gaussian',0,0.1); l=[-1 -1 -1;-1 8 -1;-1 -1 -1]; figure;imshow(im); imf=conv2(im,l); figure;imshow(imf); g=ones(5,5)/25; %g=[1 1 1;1 1 1;1 1 1]/9; %g=[1 2 1;2 4 2;1 2 1]/16; im=conv2(im,g); figure;imshow(im); %imf=conv2(im,l); %figure;imshow(imf); sx=[-1 -2 -1;0 0 0;1 2 1]; sy=[-1 0 1;-2 0 2;-1 0 1]; ga=conv2(im,sx); gb=conv2(im,sy); figure;imshow(ga); figure;imshow(gb); figure;imshow(ga+gb); norme=sqrt(ga.^2+gb.^2);

coutour=zeros(258,258); m=mean(mean(norme)); for ii=1:258 for jj=1:258 if(norme(ii,jj)>m)contour(ii,jj)=1;end end end figure;imshow(contour);