Académique Documents
Professionnel Documents
Culture Documents
Gilles Burel
Gilles.Burel@univ-brest.fr
© Gilles Burel - Université de Brest
1. Introduction
Le traitement numérique des images est un domaine très vaste, qui couvre des aspects aussi variés
que la compression des images pour la transmission sur les réseaux de télécommunications, la
reconnaissance automatique des formes, l’amélioration de la qualité des images (débruitage,
restauration), etc.
Au cours de ce TP, nous allons donner un aperçu de la représentation et du traitement de la couleur.
Pour ce faire, nous allons utiliser le logiciel Matlab. Une première partie du TP consiste à se
familiariser avec le logiciel et à comprendre comment les images sont représentées dans la mémoire
d’un ordinateur. Ensuite, nous verrons comment modifier les couleurs d’une photo pour rendre ces
couleurs plus naturelles. Enfin, nous allons créer une animation basée sur la couleur.
Pour bien réaliser ce TP, vous devez vous assurer que vous comprenez bien chaque étape qui vous
est indiquée et répondre aux questions posées. Ne passez à l’étape suivante que lorsque vous avez
bien compris. Si vous sautez une étape ou si vous ne la comprenez pas bien, il vous sera difficile
d’aller jusqu’au bout et d’obtenir le résultat. Lorsqu’il est indiqué « … » dans un programme, cela
représente une partie que vous devez compléter vous-même.
Pour travailler sous Matlab, il faut d’abord démarrer l’interface en cliquant 2 fois sur l’icône
La grande sous-fenêtre centrale (celle dans laquelle il est écrit « This is a Classroom License … »
s’appelle la « fenêtre de commande » (Command Window).
2
© Gilles Burel - Université de Brest
Cliquez sur l’icône et placez-vous dans votre répertoire. Pour vérifier que vous êtes dans le
bon répertoire, tapez pwd dans la fenêtre « Command Window ».
Maintenant, nous allons réaliser notre premier programme Matlab. Pour cela, ouvrez l’éditeur en
cliquant sur :
Cela ouvre l’éditeur. Dans l’éditeur, tapez le même programme que sur la figure suivante :
Si vous regardez dans la fenêtre de commande (Command Window) vous verrez que les valeurs
numériques contenues dans la matrice I se sont affichées.
3
© Gilles Burel - Université de Brest
Une image est composée de points, que l’on appelle pixels. Dans une photo, les pixels sont si petits
que l’on ne les distingue pas. Par contre, dans une image simple comme celle que nous venons de
créer on peut distinguer les pixels : ce sont les carrés noirs et blancs que vous avez observés.
Si on veut que le pixel situé ligne 2 et colonne 1 devienne gris, il faut le modifier. La valeur numérique
pour le gris est 0.5
I(2,1) = 0.5
figure, imshow(I, 'InitialMagnification', 'fit')
Maintenant, complétez votre programme pour mettre le pixel situé ligne 2 et colonne 3 en gris sombre
(valeur 0.25) et affichez l’image pour vérifier que cela a fonctionné.
Dans la mémoire de l’ordinateur, l’image couleur est représentée par 3 matrices, que l’on note ci-
dessous R, G, et B. Ces trois matrices indiquent le dosage du rouge, du vert, et du bleu. Dans les
logiciels récents, comme la version de Matlab que vous utilisez, les trois matrices sont regroupées
dans une seule « matrice » à trois dimensions, notée RGB.
On peut accéder aux éléments de cette « matrice » à trois dimensions en utilisant trois indices
correspondant respectivement au numéro de ligne, au numéro de colonne et au numéro de couleur
(1=rouge, 2=vert, 3=bleu). Par exemple, si on veut connaître le dosage du bleu (bleu = couleur
numéro 3) pour le pixel situé ligne 2 colonne 1, on écrira RGB(2,1,3)
Si on veut le dosage du bleu pour la totalité des pixels de l’image, on écrira RGB(:,:,3)
R = [1 0 1; 0 1 0; 0 0 1]
G = [1 1 0; 0 1 1; 1 0 1]
B = [1 0 0; 1 1 0; 1 1 0]
RGB(:,:,1) = R;
RGB(:,:,2) = G;
RGB(:,:,3) = B;
figure, imshow(RGB, 'InitialMagnification', 'fit');
4
© Gilles Burel - Université de Brest
Enregistrez et exécutez.
Quel rapport y-a-t’il entre les valeurs numériques des tableaux RGB qui s’affichent dans la fenêtre de
commande et les couleurs des points de l’image ?
Enregistrez et exécutez.
Vous constaterez que cela met le pixel situé ligne 2, colonne 1, en orange. Expliquez pourquoi :
Ecrivez ci-dessous les lignes de programmes permettant mettre le pixel central de l’image en violet
(mélange de rouge et de bleu). Puis, ajoutez ces lignes à la suite de votre programme, enregistrez et
exécutez. Pensez à afficher l’image pour vérifier que cela a fonctionné.
Dans la suite, si vous avez besoin d’informations sur la syntaxe d’une fonction, pensez à utiliser le
help. Par exemple, help imread.
5
© Gilles Burel - Université de Brest
Affichez sur trois figures différentes les composantes R, G et B de cette image. Sur quelle
composante est-ce que les chiffres se distinguent le mieux du fond ?
R = I(:,:,1);
G = …
B = …
Choisissez un seuil adapté et seuillez cette composante pour obtenir une image binaire dans laquelle
les chiffres sont en blanc sur fond noir, comme sur l’image ci-dessous. Par exemple, si la composante
que vous avez choisie est B, faites :
seuil = …
Is = (B > seuil) ;
Affichez Is pour vérifier que vous obtenez bien une image comme celle qui est montrée ci-dessous.
Nous allons mettre les chiffres en rouge, puis en jaune, puis en vert, puis en cyan. Pour cela on
commence par créer une table de couleurs dans laquelle on définit :
Couleur 1 = rouge
Couleur 2 = jaune
Couleur 3 = vert
Couleur 4 = cyan (mélange de vert et de bleu)
Couleur 5 = noir
Le noir est ajouté car on en a besoin pour le fond.
Dans une table de couleur, chaque ligne contient trois valeurs qui définissent la couleur par son
ème
dosage rouge, vert, bleu. Ainsi, par exemple, la 4 ligne de votre table de couleur doit contenir 0 1 1
pour définir votre couleur numéro 4, c’est-à-dire le cyan. Souvent, on appelle map la table de couleurs.
Complétez la ligne ci-dessous et ensuite vérifiez à l’écran que les lignes de map contiennent les
bonnes valeurs :
map = [… … … ; … … … ; … … … ; 0 1 1 ; … … …]
Maintenant, nous allons créer une image d’index qui contient 5 pour le fond (rappelez-vous que la
couleur numéro 5 est le noir), et 1 pour le tracé des chiffres :
X = 5 * ones(nblig,nbcol);
X(Is==1) = 1;
figure, imshow(X,map), title('Chiffres en rouge')
6
© Gilles Burel - Université de Brest
7
© Gilles Burel - Université de Brest