TP1 Tti
TP1 Tti
TP1 Tti
Objectif
Résoudre les problèmes en traitement d’images nécessite un environnement flexible,
permettant l’accès aux différentes techniques pour expérimenter des idées, analyser des
résultats et concevoir des solutions pratiques.
L’objectif de ce TP est de présenter la notion d’image et d’effectuer des opérations simples
d’analyse d’images telles que la lecture et la visualisation d’images, le changement d'espace
de couleur...
.
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éfinition: 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.
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çons 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.
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.
1.1.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 ; p(i,j) = 0
ou p(i,j) = 1.
1.2. Image en niveaux de gris
Une image ne 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 256 nuances de dégradé. L'expression de la
valeur du niveau de gris avec Ng = 256 devient: p(i,j) • [0, 255].
1.3. 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.
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 figure qu'une image couleur est en fait l'association de trois plans
de niveau de gris, chacun d'eux étant une couleur de base.
------------------------------
»img= imread('cameraman.tif');
» figure, imshow(img);
» [m, n]=size(img);
» axis('image');
» axis on
» colorbar
------------------------------
L'accès à un é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 img ci-dessus, on peut récupérer les valeurs ou
les modifier aisément.
------------------------------
» img(3,2)
» img(1:10,30:40)
» img(1:3,31:39) = 0;
» figure, imshow(img);
------------------------------
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.
------------------------------
» img1=imread('peppers.png');
» subplot(2,1,1),imshow(img);
» subplot(2,1,2),imshow(img1);
------------------------------
Les images en couleur se composent de plusieurs plans. Dans le cas des images RGB ont 3
plans, un plan pour chaque couleur. Les commande planR, planG et planB permettent
d’obtenir ces plans.
------------------------------
» img1=imread('peppers.png');
» planG=img1( :, :,1) ;
» planR=img1( :, :,1) ;
» planB=img1( :, :,1) ;
» subplot(2,2,1),imshow(img1);
» subplot(2,2,2),imshow(planR);
» subplot(2,2,3),imshow(planG);
» subplot(2,2,4),imshow(planB)
» title('figure1')
------------------------------
Afin de fermer une figure sous Matlab, on tape close s'il s'agit de la dernière figure ouverte ou
bien close 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.
------------------------------
» img= imread('cameraman.tif');
» img2=imread('peppers.png');
» figure;imshow(img);
» figure;imshow(img2);
» close(1)
» close all
------------------------------
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 pour nom de fichier
result.jpg.
------------------------------
» img= imread('cameraman.tif');
» figure , imshow(img);
» print -djpeg result.jpg
------------------------------
Les valeurs des images lues sous Matlab sont entières, mais dans certaines circonstances, on a
besoin de travailler sur des valeurs réelles. La transformation pour passer d'entier à réel utilise
la fonction im2double.
------------------------------
» img= imread('cameraman.tif');
» figure;imshow(img);
» imgdbl=im2double(img);
» figure;imshow(imgdbl);
» imgint=im2uint8(imgdbl);
» figure;imshow(imgint);
» imwrite(imgint,'test.jpg','jpeg');
» whos
------------------------------
7. Espace de couleurs
La couleur est une donnée importante pour une image, elle modifie la perception que l'on a de
l'image. L'espace de représentation standard décompose une image en trois plans de couleur:
le rouge, le vert et le bleu ( Red/Green/Blue) RGB en anglais. Les couleurs finales sont
obtenues par synthèse additive de ces trois couleurs primaires. Il existe cependant des
problèmes qui peuvent nécessiter de changer d'espace de couleur pour percevoir différemment
l'image. Il y a des images où la couleur importe peu, par exemple des photographies de
cellules vivantes (pseudo-transparentes), des images radar, des images satellites... Dans ce
cas, l'espace RGB n'est plus utilisé. On lui préfère d'autres espaces comme HSV (
Hue/Saturation/Value) ou YCbCr (Luminance/Chrominance bleue/Chrominance rouge).
La boîte à outils images de Matlab gère les espaces de couleur RGB, HSV, YCbCr, NTSC.
Un exemple ci-dessous permet de se rendre compte de l'utilisation d'un changement d'espace
de couleur. On lit une image colorée, on la passe dans l'espace HSV et on va changer la
saturation avant de repasser dans l'espace RGB pour visualiser le résultat.
------------------------------
» img= imread('peppers.png');
» figure , imshow(img);
» imghsv=rgb2hsv(img);
» figure , imshow(img);
» figure , imshow(imghsv);
» imghsv(100:200,300:400,1)=0.7;
» figure , imshow(imghsv);
» imghsv=rgb2hsv(img);
» imghsv1(100:200,300:400,1)=0.7;
» figure, imshow(imghsv1);
» imgrgb=hsv2rgb(imghsv1);
» figure, imshow(imgrgb);
» imgrgb1=hsv2rgb(imghsv1);
» figure, imshow(imgrgb1);
------------------------------
Une fonction utile à connaître est la fonction de passage d'une image couleur à une image en
niveaux de gris. Cette fonction rgb2gray permet d'obtenir une image en niveaux de gris en
partant d'une image couleur. Dans certains cas, cette transformation est très utile.
------------------------------
» img=imread('cameraman.tif');
» figure , imshow(img)
» nivgris=rgb2gray(img);
» figure, imshow(nivgris);
------------------------------