Sie sind auf Seite 1von 10

Introduction à Matlab pour le traitement d'image

Stéphane BAZEILLE
Le 13 mars 2006
Table des matières

1 Introduction à Matlab 2
1.1 Q'est-ce que MATLAB . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Les variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Les opérations matricielle . . . . . . . . . . . . . . . . . . . . 3
1.4 Les variables prédénies . . . . . . . . . . . . . . . . . . . . . 3
1.5 Les fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.6 Conditions et boucles . . . . . . . . . . . . . . . . . . . . . . . 4
1.7 Les entrées sorties . . . . . . . . . . . . . . . . . . . . . . . . 4
1.8 Structure des programmes . . . . . . . . . . . . . . . . . . . . 4
1.9 Les toolboxes . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Traitement d'image sous MATLAB 5


2.1 Image Processing Toolbox . . . . . . . . . . . . . . . . . . . . 5
2.2 Codage d'une image, représentation spatiale . . . . . . . . . . 5
2.3 Lecture, écriture et achage d'une image . . . . . . . . . . . 5
2.4 Histogramme d'une image . . . . . . . . . . . . . . . . . . . . 6
2.5 Filtrage linéaire et convolution . . . . . . . . . . . . . . . . . 6
2.6 Transformation et réprésentation fréquentielle . . . . . . . . . 6
2.7 Détection de contours . . . . . . . . . . . . . . . . . . . . . . 6

3 Quelques exemples de programme 7

1
Chapitre 1

Introduction à Matlab

1.1 Q'est-ce que MATLAB


 MATLAB est l'abréviation de MATrix LABoratory. C'est un logiciel
pour le calcul numérique et la visualisation optimisé pour le calcul
matriciel.
 MATLAB peut être considéré comme un langage de programmation,
il dispose d'une syntaxe spécique mais elle est simple et intuitive.
 MATLAB est un interpréteur : les instructions sont interprétées et
exécutées ligne par ligne.
 MATLAB propose deux types de fonctionnement :
 un fonctionnement en ligne de commande où MATLAB exécute les
instructions au fur et à mesure qu'elles sont données par l'utilisateur.
 un fonctionnement via des scripts, dans ce cas MATLAB exécute
ligne par ligne un chier texte que l'on désigne par programme.
 MATLAB propose également une aide très complète illustré d'exemple,
étant donné le très grand nombre d'instructions utilisables, il est im-
portant de bien savoir l'utiliser.

1.2 Les variables


Les variables manipulés sont en priorité des matrices à éléménts rééls 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 régulièrement espa-
cée, 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 accède au premier élement d'une matrice par a(1,1) et à la première ligne
de la matrice par a(1, :).
Remarque : Il faut respecter les minuscules majuscules dans l'appélation des
variables.

2
1.3 Les opérations 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 résolution du système linéaire Ax=b
 u0 prend le transposé de u
 inv(A) inverse d'une matrice
 det(A) déterminant d'une matrice
 rank(A) rang d'une matrice.

1.4 Les variables prédénies


 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 centrée 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 dia-
gonale principale et des 0 ailleurs (matrice identité).
 diag(V) : matrice carrée avec le vecteur V sur la diagonale et des 0
ailleurs.
 La contante pi vaut 3.14159265358979.
 Les constantes i, j sont aussi prédénies et i = j = ( − 1).
p

1.5 Les fonctions


Les fonctions mathématiques de base :
 abs, sqrt ,real, imag, conj, round, x, oor, ceil, sign, rem , exp, log.
Les fonctions trigonométriques :
 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 caractéristique associé à la ma-
trice.
 La fonction roots fournit les racines d'un polynome.

3
1.6 Conditions et boucles
Les opérateurs logiques &, k et (respectivement ET, OU et NON logique)
opérent sur des quantités booléennes. La valeur booléene  faux est codée 0
et la valeur vrai est codée par une valeur non nulle. La structure IF ELSEIF
ELSE permet d'exploiter ces quantités. 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 entrées sorties


Achage des résultats :
 MATLAB ache automatiquement le résultat après l'exécution d'une
ligne de commande. Il faut placer un  ; après une commande si l'on
veut empécher cet achage.
Les entrées 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 MAT-
LAB.
 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'ins-
tructions MATLAB dont le nom a comme extension .m Par exemple  pro-
gramme.m . Dans la fenêtre commande, si l'on tape  programme , les
instructions contenues dans le chier programme.m seront exécutées une par
une.

1.9 Les toolboxes


En plus de fonctions de bases pour le calcul matriciel, MATLAB dispose
de nombreuses librairies de fonctions spécialisées appelées  toolbox dans
diérents 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
particulièrement.

4
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 fréquentielles,
 Filtrage linéaire et non linéaire,
 Binarisation et morphologie mathématique,
 Analyse, et restauration d'image,
 Changement d'espace couleur,
 ...

2.2 Codage d'une image, représentation spatiale


Une image est considérée comme un ensemble de points ou pixels (picture
element), associé au quadrillage rectangulaire de l'image d'origine. La répré-
sentation d'une image se fait donc par l'intermédaire d'une matrice d'entier
codés entre 0 et 255. Les images en niveau de gris sont repésentées par des
matrices 2D, les images couleurs représentés par 3 composantes (Rouge, Vert,
Bleu) sont repésentées par des matrices 3D. On accède à 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 représentation est appelé représentation
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 représenter
le nombre de pixels pour chaque intensité lumineuse. Par convention un
histogramme représente 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 linéaire 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 réalise la
convolution est conv2. Quelques exemples de ltres linéaires :
 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 dérivateur (Prewitt, Sobel),
 ltre laplacien,[-1 -1 -1 -1 8 -1 -1 -1 -1]
 ...

2.6 Transformation et réprésentation fréquentielle


Les transformations de l'image permettent d'obtenir d'autre répresenta-
tion. Quelques exemples de transformations fréquentielles :
 transformée de fourier (fonctions t2, it2),
 transformée en cosinus (fonctions dct2, idct2),
 ...

2.7 Détection de contours


La détection de contour permet de faire ressortir les variations impor-
tantes de l'image.
 fonction edge

6
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)

%Résolution 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)

7
%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);

8
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);

Das könnte Ihnen auch gefallen