Outils Matlab
Année universitaire 2021-2022
Y. TAHIR
TP N° 7 : Traitement d’image
1. Correspondance Matrice-Image
a) Créer une matrice A de votre choix
>> A=[10 20 30 ; 1 100 200 ; 50 150 75]
A =
10 20 30
1 100 200
50 150 75
puis appliquer la fonction :
>> image(A)
b) génération d’une image aléatoire
Taper la commande suivante :
>>image(randi(80,20))
Intégrer cette dernière commande dans une boucle avec une pause d’une seconde
>>for i = 1:20
image(randi(80,20))
pause (1)
>> end
Pour découvrir le code des couleurs, écrire un script qui affiche le code et la couleur associée, utiliser la
boucle for et les fonctions pause() et image()
Tester les deux scripts suivants :
figure
for i = 1:10:500
image(i)
title(['coleur correspont au code ' num2str(i) ])
text(1,1,num2str(i))
end
A=1:100;
A=reshape(A,10,10) ;
image (A)
title('coleurs correspont au codes entre 1 et 100')
for i = 1:10
for j=1:10
text(i,j,num2str(i+ (j-1)*10))
end
end
2. Lecture et affichage d’une image
La commande suivante vous permet de lire une image nommée 'ngc6543a.jpg'enregistrée dans une
bibliothèque de Matlab et de la convertir en une matrice et affecter le résultat à une variable nommée A
>>A = imread('ngc6543a.jpg');
NB : - Lire ici veut dire numériser, c’est à dire convertir l’image en une matrice.
Vous pouvez lire une image quelconque de la même façon (n’oublier pas de vérifier si l’image
est dans le current folder, sinon il faut préciser le nom et le chemin de l’mage)
La commande :
>> image(A)
permet d’afficher la matrice A sous forme d’une image, il y a d’autres fonctions qui permettent d’afficher
l’image
>> imshow(A)
ou encore
>> imagesc(A)
3. Image couleur et image en niveau de grise : fonction rgb2gray()
En utilisant la fonction rgb2gray() créer un script qui demande de l’utilisateur un nom d’un fichier image
couleur puis afficher l’image en couleur et l’image en niveau de gris
imName = input ('entrer le nom de l image : ') ;
A= imread(imName) ;
B= rgb2gray(A) ; %B est une matrice de dimension 2 : elle repr?sente le
niveau de grise
subplot(1,3,1)
image(A)
subplot(1,3,2)
image(B) %la fonction image n?est pas adapt?e pour les matrice de
dimension 2
subplot(1,3,3)
imshow(B) %la fonction imshow pour afficher une image en niveau grise
4. Résolution d’une image
Pour modifier la résolution de l’image nous allons suivre la démarche suivante :
Pour une résolution médiocre, il faut retenir un pixel sur trois
Pour une résolution moyenne il faut retenir un pixel sur deux
Pour une résolution large il faut garder tous les pixels
Tester les trois résolutions de l’image
A= imread('peppers.png') ;
subplot(1,3,1)
image(A)
title('Resolution large')
subplot(1,3,2)
image(A(1:2:end,1:2:end,:))
title('Resolution moyenne')
subplot(1,3,3)
image(A(1:3:end,1:3:end,:))
title('Resolution moyenne')
Exercice
En utilisant le switch écrire un script qui demande l’utilisateur d’entrer une image, affiche un menu des
trois résolutions possibles et en fin affiche l’image avec une résolution selon le choix de l’utilisateur
5. Rotation d’une image : fonction rot90()
Le script suivant permet de lire une image et d’afficher ses quartes rotations possibles
A= imread('peppers.png') ;
subplot(2,2,1)
image(A)
%construction de la matrice B pour une rotation de 90?
B(:,:,1)=rot90(A(:,:,1));
B(:,:,2)=rot90(A(:,:,2));
B(:,:,3)=rot90(A(:,:,3));
%affichage de l'image en rotation de 90?
subplot(2,2,2)
image(B)
%construction de la matrice C pour une rotation de 180?
C(:,:,1)=rot90(A(:,:,1),2);
C(:,:,2)=rot90(A(:,:,2),2);
C(:,:,3)=rot90(A(:,:,3),2);
%affichage de l'image en rotation de 180?
subplot(2,2,3)
image(C)
%construction de la matrice D pour une rotation de 90? 3 fois
D(:,:,1)=rot90(A(:,:,1),3);
D(:,:,2)=rot90(A(:,:,2),3);
D(:,:,3)=rot90(A(:,:,3),3);
%affichage de l'image en rotation de 90? 3 fois
subplot(2,2,4)
image(D)
6. Image miroir
Exécuter les deux scripts :
A= imread('peppers.png') ;
subplot(1,2,1)
image(A)
B=A(end:-1:1,:,:);
subplot(1,2,2)
image(B)
A= imread('peppers.png') ;
subplot(1,2,1)
image(A)
B=A(:, end:-1:1,:);
subplot(1,2,2)
image(B)
Rotation avec le transposé d’une matrice
A= imread('peppers.png') ;
subplot(1,2,1)
image(A)
E(:,:,1)=A(:,:,1)';
E(:,:,2)=A(:,:,2)';
E(:,:,3)=A(:,:,3)';
subplot(1,2,2)
image(E)
7. Contraste
On va modifier le contraste d’une image (défini comme l’écart type)
A= imread('peppers.png') ;
B=rgb2gray(A);
f0 = double (B) ;
f1 = f0 + 0.5*(f0 - mean(f0(:) ) ) ;
f2 = f0 + 1*(f0 - mean(f0(:) ) ) ;
f3 = f0 + 2*(f0 - mean(f0(:) ) ) ;
f4 = f0 + 10*(f0 - mean(f0(:) ) ) ;
subplot(2,2,1)
imshow(f1)
subplot(2,2,2)
imshow(f2)
subplot(2,2,3)
imshow(f3)
subplot(2,2,4)
imshow(f4)
Références
De TP1 à TP6 de : http://oberlin.perso.enseeiht.fr/teaching.html