TP1 Matlab TI
TP1 Matlab TI
TP1 Matlab TI
2018 /2019
1. INTRODUCTION A MATLAB
1.1. A propos de Matlab
• MATLAB est l'abréviation de MATrix LABoratory. C'est un logiciel pour le calcul
numérique et la visualisation optimisée pour le calcul matriciel.
• MATLAB peut être considéré comme un langage de programmation, il dispose d'une
syntaxe spécifique mais elle est simple et intuitive.
• 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 et un fonctionnement via des scripts, dans ce cas MATLAB
exécute ligne par ligne un fichier texte que l'on désigne par programme.
• MATLAB propose également une aide très complète illustrée d'exemple.
• MATLAB dispose également de nombreuses librairies de fonctions spécialisées
appelées Toolbox. Dans notre cas, nous nous intéressons à Image Processing Toolbox.
Ce module contient les différentes fonctions nécessaires au traitement d’image
accompagnées et illustrées par des exemples.
1.2. Les variables
Les variables manipulées sont en priorité des matrices à éléments réels ou complexes.
Un scalaire est une matrice 1x1. Un exemple de matrice : M= [12, 4, 10 ; 40, 20, 7]
12 4 10
M=
40 20 7
Lorsque les composantes d'un vecteur forment une suite régulièrement espacée, on
peut utiliser la boucle suivante : v = (0 :2 :10) ce qui est équivalent à v = [0, 2, 4, 6, 8,
10].
On accède au premier élément d'une matrice par M (1,1) et à la première ligne de la
matrice par M (1, :).
Remarque : Il faut respecter les minuscules et les majuscules dans l'appellation des
variables.
1.3. Les opérations matricielles
Les opérateurs logiques &, | et ~ (respectivement ET, OU et NON logique) opèrent sur
des quantités booléennes. La valeur booléenne « faux » est codée 0 et la valeur vrai est
codée par une valeur non nulle. Les commandes IF, ELSEIF et ELSE permettent
d'exploiter ces quantités. MATLAB dispose aussi des boucles FOR et WHILE.
1.6. Manipulations préliminaires
1. Générer une matrice M (10x8) dont ses éléments sont des variables aléatoires
2. Afficher dans la fenêtre des commandes (Command Window) l’élément M(3,3).
3. Afficher la 3ème ligne de la matrice M.
4. Pour la troisième ligne de la matrice M, remplacer les éléments ayant une valeur qui
dépasse 3 par une nouvelle valeur qui vaut 0.
5. Soit N une matrice construite à partir de la matrice M, en retenant les 4 premières
lignes et les 4 premières colonnes. Afficher N.
Image binaire
Une image binaire est une matrice MxN où chaque point (pixel) peut prendre
uniquement la valeur 0 ou 1 (p(i,j)=0 ou p(i,j)=1). Les pixels sont, donc, noirs (0)
ou blanc (1).
2. Faire varier la valeur des éléments C(i,j) de 0 à 1. Afficher pour chaque valeur l’image
correspondante. Interpréter.
%Q°2
for i=1:10
c(i,:)=0;
end
for i=20:30
c(i,:)=0;
end
for i=40:50
c(i,:)=0;
end
for i=60:70
c(i,:)=0;
end
for i=80:90
c(i,:)=0;
end
subplot(2,2,2);imshow(c); axis on
colorbar;
3. Transformer la matrice C, pour générer l’image suivante (im1):
La largeur de chaque bande (noir ou blanc) est 10 pixels
4. Crée la matrice D qui permet d’afficher l’image suivante (im2):
d=ones(90,90);
for i=1:10
d(:,i)=0;
end
for i=20:30
d(:,i)=0;
end
for i=40:50
d(:,i)=0;
end
for i=60:70
d(:,i)=0;
end
for i=80:90
d(:,i)=0;
end
subplot(2,2,3);imshow(d);
axis on
colorbar;
im=imread('lena.jpg');
[n,m]=size(im)% nombre de lignes et de colonnes de l'image
h=imshow(im);% affichage de l’images sur écran
2. Quel est le type de l’image « lena » ? (noir et blanc, noir ou blanc, couleur).
iminf=imfinfo('lena.jpg');
imageinfo(h,iminf);
axis on
colorbar;
title(lecture&affichage);
iminfo=imfinfo('lena.jpg')
%afficher les coordonnées d’un pixel ainsi que son niveau de gris.
impixelinfo;
4. Quels sont les niveaux de gris que peut avoir un pixel de l’image « lena » ?
5. Quels sont les niveaux de gris des pixels de coordonnées suivantes: (20,60),
(70,30) et (170,130).
ng1=im(20,60)
ng2=im(70,30)
ng3=im(170,130)
La commande impixelinfo permet d’afficher les coordonnées d’un pixel ainsi que son
niveau de gris.
Exécuter cette commande et déplacer la souris pour choisir 2 pixels A et B
appartenant à 2 zones différentes (noire puis blanche).
Compléter : coordonnées de A : …………., niveau de gris=………………
coordonnées de B : ………….., niveau de gris =………………
imwrite(im2,'im2.png');
2. Afficher dans la même figure (1 ligne de 4 images) l’image source de « lena » ainsi
que les composantes R, V et B.
Remarque : une composante couleur est représentée par une matrice. Ainsi, lors
de l’affichage, MATLAB le considère comme une image en niveaux de gris.
3. Ecrire un script MATLAB qui permet d’afficher en vraies couleurs les différentes
composantes R, V et B (c-à-d la composante rouge en rouge, verte en vert et bleue en
bleu).
- Quelles sont les composantes R, V et B du pixel de coordonnées (307,318) ?
6. Afficher dans la même figure l’image source ainsi que ces composantes dans le
système YCbCr.
- indication : commande rgb2ycbcr.
7. Afficher dans la même figure l’image source ainsi que ces composantes dans le
système HSV.
- indication : commande rgb2hsv.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%
% Conversion des images
% lecture de l'image RVB origine.
rgbImage = imread('venise.jpg');
bleu')
figure(1);subplot(3, 3, 8);imshow(recombinedRGBImage);title('image
recombinée')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% composantes R, V et B du pixel de coordonnées (307,318)
rgbImage(307,318,1)
rgbImage(307,318,2)
rgbImage(307,318,3)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Transformer l’image « lena » en une image indexée (choisir 400
couleurs pour la palette).
[ii, map]=rgb2ind(rgbImage,400);
[m,n]=size(ii)
[h,l]=size(map)
figure(2);subplot(2, 2, 1); imshow(rgbImage);title('image
origine')
figure(2);subplot(2, 2, 2); imshow(ii, map);title('image Indexée')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%- Quelles sont les composantes couleurs correspondantes à
l’index 20
r20=map(20,1)
V20=map(20,2)
B20=map(20,3)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% - Transformer l’image « lena » en niveau de gris.
ig=rgb2gray(rgbImage);figure(3); subplot(
2,2,4);imshow(ig);title('niveaux de gris')
%composantes dans le système YCbCr.
figure (3); subplot( 2,2,1);imshow(rgbImage);title('imageorigine')
irc=rgb2ycbcr(rgbImage);figure(3); subplot( 2,2,2); imshow(irc);
title('système Ycbcr');
%composantes dans le système HSV.
irh=rgb2hsv(rgbImage);figure(3); subplot( 2,2,3);imshow(irh);
title('système HSV');
3. Écrire un script MATLAB qui permet d’inverser l’image (im1) de bas en haut par
deux méthodes différentes pour avoir l’image (im5). Afficher les deux images (im1)
et (im5) sur la même figure.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%
% Opérations géométriques sur les images
im3=imrotate(rgbImage,30);
figure (4); subplot( 2,2,1);imshow(rgbImage);title('imageorigine')
figure (4); subplot( 2,2,2);imshow(im3);title('rotation')