Вы находитесь на странице: 1из 12

Université Mohamed Premier

Ecole Nationale des Sciences Appliquées d'Al Hoceima

Initiation à MATLAB (3)

Génie de l’Eau et de l’Environnement -S1- Présenté par : Faiza Dib

Traitement des données sous Matlab


1. Visualisation

Un script
 Un fichier texte qui contient une série d’instructions Matlab
 Les instructions sont exécutées ligne après ligne
 Pour lancer l’exécution, il suffit d'entrer le nom du script sur la console
 Les variables créées dans ce fichier sont conservées dans le workspace
Une fonction
 Le fichier texte commence par l'instruction function
 Effectue une suite d'instruction en fonction des arguments d'entrée
 Retourne un ou plusieurs résultats
 Les variables créées dans ce fichier sont invisibles dans le workspace
117

1
Traitement des données sous Matlab
1. Visualisation
 Les graphiques simples
La fonction plot permet de tracer des courbes en Matlab. Les arguments de cette
fonction sont les vecteurs de variables indépendantes et dépendantes, comme dans
l'exemple suivant:
x = [0:0.01:2*pi]
>> plot(x, cos(x), x, sin(x))

 Graphique d'une fonction


La commande fplot permet de tracer le graphique d'une fonction sur un intervalle donné.
La syntaxe est:
fplot('nomf', [xmin, xmax])
Où: - nomf est le nom de la fonction. - [xmin, xmax] est l'intervalle pour lequel est tracé
le graphe de la fonction.
118

Traitement des données sous Matlab


1. Visualisation
 Exemple 1
Le graphe de la fonction sinus entre -2π et 2π
fplot('sin', [-2*pi 2*pi])
 Exemple 2
Le graphe de la fonction: h(x) = x sin(x), entre -2π et 2 π.
On peut définir la fonction h dans un fichier h.m
function y=h(x)
y=x.*sin(x);
On obtient alors le graphe de la fonction h par l'instruction:
fplot('h', [-2*pi 2*pi])
 Exemple 3
Une autre façon pour tracer le graphe de x sin(x)
fplot('x*sin(x)', [-2*pi 2*pi])
Dans le 3eme exemple on a le choix entre l'écriture de x.*sin(x) ou x*sin(x) 119

2
Traitement des données sous Matlab
2. Initiation au traitement d’images avec MATLAB

2.1. Rappels sur la notion d’image:


 Une image réelle est obtenue à partir d'un signal continu bidimensionnel comme
par exemple un appareil photo ou une caméra...
 Sur un ordinateur, on ne peut pas représenter de signaux continus, on travaille
donc sur des valeurs discrètes.
Définitions:
 Une image numérique est définie comme un signal fini bidimensionnel
échantillonné à valeurs quantifiées dans un certain espace de couleurs. Elle est
constituée de points (pixels).
 Signal fini : une image possède des dimensions finies, exemple : 640x480,
800x600 points
 Signal bidimensionnel : une image possède deux dimensions : largeur, hauteur
120

Traitement des données sous Matlab


2. Initiation au traitement d’images avec MATLAB

 Signal échantillonné : les pixels d’une image sont régulièrement espacés sur une
grille carrée.
 Valeurs quantifiées : les valeurs des pixels appartiennent à un intervalle borné
connu.
 Espace de couleur : il existe de nombreuses façon de percevoir les couleurs
d’une image, l’espace de représentation le plus connu est l’espace rgb (rouge-
vert-bleu).

Autrement dit, une image est une matrice MxN de valeurs entières prises sur un
intervalle borné [0,Ng] où Ng est la valeur maximale du niveau de gris.

121

3
Traitement des données sous Matlab
2. Initiation au traitement d’images avec MATLAB
N j

P(i,j)
M

p(i,j) est le niveau de gris du pixel de coordonnées ligne i et colonne j


dans l'image. p(i,j) ∈ [0, Ng]. Les valeurs des niveaux de gris sont des
entiers.
122

Traitement des données sous Matlab


2. Initiation au traitement d’images avec MATLAB

a) Image binaire:
Une image binaire est une image MxN où chaque point peut prendre uniquement la
valeur 0 ou 1. Les pixels sont noirs (0) ou blancs (1).
Le niveau de gris est codé sur un bit (Binary digIT). Dans ce cas Ng = 2 et la
relation sur les niveaux de gris devient: p(i,j) = 0 ou p(i,j) = 1.
b) Image en niveaux de gris:
Une image en niveaux de gris autorise un dégradé de gris entre le noir et le blanc. En
général, on code le niveau de gris sur un octet (8 bits) soit (2^8) 256 nuances de
dégradé. L'expression de la valeur du niveau de gris avec Ng = 256 devient:
p(i,j) ∈[0, 255].

123

4
Traitement des données sous Matlab
2. Initiation au traitement d’images avec MATLAB
c) Image couleur :
Une image couleur est la composition de trois (ou plus) images en niveaux de gris sur
trois (ou plus) composantes.
On définit donc trois plans de niveaux de gris, un rouge, un vert et un bleu. La couleur
finale est obtenue par synthèse additive des ces trois (ou plus) composantes.
N
On a les relations sur les niveaux de gris:
P_R(i,j) ∈[0, 255], P_V(i,j) ∈[0, 255],
P_B(i,j) ∈[0, 255]. On voit bien sur la P_B (i,j)
figure qu'une image couleur est en fait
l'association de trois plans de niveau de M
P_V (i,j)
gris, chacun d'eux étant une couleur de
P_R (i,j)
base.
124

Traitement des données sous Matlab


2. Initiation au traitement d’images avec MATLAB

2.2. Lire et écrire des images sous Matlab:

 Matlab est capable de lire et de décoder les fichiers images JPEG, TIFF, BMP, PNG,
HDF, PCX ou XWD.
 Une image sous Matlab peut être représentée sous plusieurs formes, mais toujours
sous forme d'une matrice.
 Avant de traiter une image dans Matlab, il faut la lire et décoder son format afin de la
transformer en une matrice de valeurs.
 L'exemple ci-dessous permet de lire une image au format TIFF, de la décoder dans la
variable img et de l'afficher à l'écran dans une figure.

125

5
Traitement des données sous Matlab
2. Initiation au traitement d’images avec MATLAB

2.2. Lire et écrire des images sous Matlab:


% addpath C:\Users\hp\Documents\MATLAB
% I=imread('C:\Users\hp\Documents\MATLAB\satt.jpg');
I=imread(‘care.jpg');
figure;imshow(I);
axis('image');
axis on
colorbar

La commande axis('image') rend l'image affichée carrée pour garder les proportions.
L'appel à axis on permet l'affichage des graduations des axes.
Enfin, colorbar affiche la barre des couleurs de l'image.
126

Traitement des données sous Matlab


2. Initiation au traitement d’images avec MATLAB

2.2. Lire et écrire des images sous Matlab:


L'accès à une élément particulier d'une image est indexé par le nom et la position de cet
élément. Par exemple, si on conserve l'image I ci-dessus, on peut récupérer les valeurs ou
les modifier aisément.
A=I(3,2) A = 255
B=I(1:10,30:40)
I(1:100,1:109) = 0; b=
figure;imshow(I);
249 249 248 249 249 249
252 252 251 252 252 252
255 255 255 255 255 255
255 255 255 255 255 255
255 255 255 255 255 255 127

6
Traitement des données sous Matlab
2. Initiation au traitement d’images avec MATLAB

2.2. Lire et écrire des images sous Matlab:


 Matlab offre une possibilité intéressante, en effet, il est possible d'afficher plusieurs
images dans la même figure.
 Pour ce faire, il faut utiliser la commande subplot. Elle s'utilise avec comme
arguments le nombre de ligne, le nombre de colonnes et le numéro de l'image dans la
figure. Dans l'exemple ci-dessous on souhaite afficher deux images sur la même ligne
dans une seule figure.
I=imread(‘image1.tif’);
I2=imread(‘image2.tif’);
figure;
subplot(1,2,1);imshow(I);
subplot(1,2,2);imshow(I2);
128

Traitement des données sous Matlab


2. Initiation au traitement d’images avec MATLAB
2.2. Lire et écrire des images sous Matlab:
 Afin de fermer une figure sous Matlab, on tape close s'il s'agit de la dernière figure
ouverte ou bien close (1) avec en paramètre le numéro de figure pour fermer la figure
donnée en paramètres. Pour fermer toutes les figures, on demande la fermeture avec le
mot-clé all.
 Exemple:
img=imread('rice.tif’);
img2=imread('alumgrns.tif’);
figure;
imshow(img);
figure;
imshow(img2);
close(1)
close all 129

7
Traitement des données sous Matlab
2. Initiation au traitement d’images avec MATLAB
2.2. Lire et écrire des images sous Matlab:

 Matlab autorise l'exportation d'images sous divers formats: BMP, TIFF, EPS, PS...
 La commande qui permet da sauvegarder une figure est print -dFORMAT fichier.
 Un exemple est donné ci-dessous. Dans cet exemple, on affiche une image dans une
figure et grâce à la commande print, on exporte le résultat dans le format JPEG avec
un nom de fichier nv_care.jpg.
img=imread('care.jpg');
figure;
mshow(img);
print -djpeg nv_care.tif

130

Traitement des données sous Matlab


2. Initiation au traitement d’images avec MATLAB
2.3. Décomposition d'une image en ses composantes couleurs:
L'objectif est ici de décomposer une image selon les composantes RGB:
img1 = imread('eau.jpg') ; % Chargement de l'image dans le workspace
figure ; % Nouvelle fenêtre
subplot(1,4,1) ;
imshow(img1) ;
img1R = img1 ;
img1R( :, :,2) = 0 ; % Mise a zéro de la composante de vert
img1R( :, :,3) = 0 ; % Mise a zéro de la composante de bleu
subplot(1,4,2) ;
imshow(img1R);

131

8
Traitement des données sous Matlab
2. Initiation au traitement d’images avec MATLAB
2.3. Décomposition d'une image en ses composantes couleurs:
img1G = img1 ;
img1G( :, :,1) = 0 ; % Mise a zéro de la composante de rouge
img1G( :, :,3) = 0 ; % Mise a zéro de la composante de bleu
subplot(1,4,3) ;
imshow(img1G) ;
img1B = img1 ;
img1B( :, :,1) = 0 ; % Mise a zéro de la composante de rouge
img1B( :, :,2) = 0 ; % Mise a zéro de la composante de vert
subplot(1,4,4) ; % Positionnement en zone inferieure
imshow(img1B) ;

132

Traitement des données sous Matlab


2. Initiation au traitement d’images avec MATLAB

133

9
Traitement des données sous Matlab
2. Initiation au traitement d’images avec MATLAB

2.4. Opérations géométriques


Les opérations géométriques classiques sont permises avec la boîte à outils de
traitement d'images: rotation, changement de taille, découpage,,,
L'exemple ci-dessous illustre la rotation d'une image avec Matlab

img=imread('eau.jpg'); Dans le premier cas, imgrot1 est plus


figure; subplot(1,3,1) ; imshow(img); grande que img (Rotation de l'image
imgrot1=imrotate(img,30,'bilinear’); avec pertes). Dans le second cas, le
Subplot(1,3,2); imshow(imgrot1); paramètre 'crop' impose un découpage
imgrot2=imrotate(img,30,'bilinear','crop’); de l'image et la taille de l'image
Subplot(1,3,3); imshow(imgrot2); imgrot2 est la même que celle de
l'image img (Rotation de l'image sans
perte).
134

Traitement des données sous Matlab


2. Initiation au traitement d’images avec MATLAB

2.5. Réduction de bruit par un filtre morphologique

En morphologie mathématique, filtrer, c’est conserver l’image en supprimant


certaines structures géométriques (en général implicitement définies par un ou
plusieurs éléments structurants).
Le filtre morphologique simplifie l’image en lui préservant la structure, mais il
perd en général de l’information.
Le filtre morphologique est stable et possède une classe d’invariance connue.
Le code correspondant à ce filtre est le suivant :

135

10
Traitement des données sous Matlab
2. Initiation au traitement d’images avec MATLAB

2.5. Réduction de bruit par un filtre morphologique

img6=imread ('fleurs.jpg');
s = ones(10,10) ; % Elément servant a éroder/dilater
subplot(2,2,1) ; imshow(img6) ;
img6Dl = imdilate(img6, s) ; % Dilatation
subplot(2,2,2) ; imshow(img6Dl)
img6Er = imerode(img6, s) ; % Erosion
subplot(2,2,3) ; imshow(img6Er) ;
p = ones(5,5) ; % Elément servant a éroder/dilater
imgGrad = imdilate(img6, p)- imerode(img6, p) ; %combinaison
subplot(2,2,4) ; imshow(imgGrad) ;
136

Traitement des données sous Matlab


2. Initiation au traitement d’images avec MATLAB
2.6. Détection de contours
Matlab met a disposition des outils permettant d'extraire le contour des elements
d’une image en utilisant des filtres prédéfinis.
img2 = imread('chateau.PNG') ; % Chargement de l'image dans le workspace
imgGray = rgb2gray(img2) ; % Image en niveaux de gris
figure ; subplot(2,3,1) ; imshow(img2) ;
cont1 = edge(imgGray,'sobel',0.1) ; % Détection de bords de type 'sobel'
subplot(2,3,2) ; imshow(cont1) ;
cont2 = edge(imgGray,'log') ; % Détection de bords de type 'log’
subplot(2,3,3); imshow(cont2) ;
cont3 = edge(imgGray,'prewitt’); % Détection de bords de type ‘prewitt’
subplot(2,3,4); imshow(cont3) ;
cont4 = edge(imgGray,'canny’); % Détection de bords de type ‘canny’
subplot(2,3,5) ;imshow(cont4) ; 137

11
Traitement des données sous Matlab
2. Initiation au traitement d’images avec MATLAB

2.7. Histogramme des composantes


L'histogramme d'une image donne la répartition de ses niveaux de gris.
Ainsi pour une image qui possède 256 niveaux de gris, l'histogramme représente
le niveau de gris en fonction du nombre de pixels à ce niveau de gris dans
l'image.
img1 = imread('eau.jpg'); % Chargement de l'image dans le workspace
histoR = imhist(img1( :, :,1),256) ; % Histogramme de la composante rouge
histoG = imhist(img1( :, :,2),256) ; % Histogramme de la composante vert
histoB = imhist(img1( :, :,3),256) ; % Histogramme de la composante bleu
figure ; plot(histoR) ; % Affiche l'histogramme rouge
hold on; plot(histoG) ; % Affiche l'histogramme vert
hold on ; plot(histoB) ; % Affiche l'histogramme bleu
138

Traitement des données sous Matlab


2. Initiation au traitement d’images avec MATLAB

2.8. Seuillage
Un seuillage consiste a ne conserver que les pixels dont la valeur est comprise entre un
seuil inferieur et un seuil supérieur. Cela permet, par exemple, d'isoler les zones les plus
claires d’une image, etc.

img4 = imread('eau.jpg') ; % Chargement de l'image dans le workspace


img4R = rgb2gray(img4) ; % Transformation de l'image en niveau de gris
img4Double = im2double(img4R) ; % Transformation en double précision
figure; subplot(1,3,1) ; imshow(img4Double) ;
result1 = (img4Double > 0.7).*img4Double ; % Seuillage plus de 0,7
subplot(1,3,2) ; imshow(result1) ;
result2 = (img4Double < 0.72).*img4Double ; % Seuillage moins de 0.72
subplot(1,3,3) ; imshow(result2) ;
139

12

Вам также может понравиться