Vous êtes sur la page 1sur 2

TP 3 : Quantification d’une image en niveaux de gris. http://www.irit.fr/~Philippe.Joly/Teaching/M1TC4/TP3.

html

Le but de ce TP est de mettre en œuvre différentes techniques de quantification sur une image en niveaux
de gris et d’observer le résultat. Pour cela, nous allons générer une image de dégradés en niveaux de gris :

img=zeros(128);
for i=1:128
for j=1:128
img(i,j)=i+j-2;
end
end
imshow(img,gray(256));

La commande imshow permet d’afficher l’image contenue dans une matrice à l’écran. Le premier
paramètre est le nom de la matrice. Le second paramètre indique la table d'encodage des couleurs (ou «
LUT ») qui doit être utilisée pour cela (ici la table des couleurs est générée par la fonction « gray » qui
renvoie 256 niveaux de gris différents). Pour Matlab, une image est exprimée par une matrice en trois
dimensions, où la troisième dimension exprime les intensités des composantes couleurs. Pour une image en
niveaux de gris, une matrice à 2 dimensions suffit pour exprimer l'intensité de chaque pixel. Toutefois,
lorsqu'on demande à Matlab d'afficher une matrice à deux dimensions sous forme d'une image, le logiciel
va considérer que la valeur de chaque cellule de la matrice est un code correspondant à une couleur
mémorisée dans une table d'encodage appelée "colormap". Cette colormap est initialisée avec des
couleurs par défaut. Pour obtenir l'affichage d'une image en niveaux de gris à partir d'une matrice à deux
dimensions, il faut donc modifier la colormap pour associer à chaque intensité de la matrice le niveau de
gris correspondant.

Question 1 : Ecrire la fonction histogramme(img) qui étant donnée une matrice img contenant des
entiers compris entre 0 et 255 renvoie dans un tableau la quantité de 0, de 1, de 2, .., de 255 compris dans
cette matrice.

Question 2 : Ecrire la fonction nbniveaux(img) qui indique le nombre d’entiers différents présents dans
la matrice img

Question 3 : Ecrire la fonction MSE(img1, img2) qui calcule l’erreur quadratique moyenne entre les
échantillons de img1 et ceux de img2.

Question 4 : Quantification linéaire uniforme

Ecrire la fonction quantif1(img,q) qui remplace les entiers de la matrice img par le multiple de q
immédiatement inférieur. Observer le résultat d’une quantification sur un quantum de 2, puis de 10, puis
de 20 appliquée à l’image chargée au début du TP. Calculer pour ces trois valeurs l’erreur quadratique
moyenne entre l’image de départ et l’image quantifiée. A partir de quelle valeur de q pouvez-vous
observer des bandes diagonales sur l'image ?

Question 5 : Quantification adaptative


On reprend ici les notions induites par la fraction de Weber. Plutôt que d'opérer une quantification
uniforme, nous allons quantifier d'avantage les intensités les plus basses. Le quantum n'est plus unique,
mais dépend de l'intensité à quantifier.

1 sur 2 17/02/2013 12:33


TP 3 : Quantification d’une image en niveaux de gris. http://www.irit.fr/~Philippe.Joly/Teaching/M1TC4/TP3.html

Ecrire la fonction quantif2(img,p) qui opère une quantification linéaire des intensités des pixels telle
que le quantum soit de p pour le niveau d'intensité le plus bas (0) et progresse linéairement de manière à
être à 1 pour le niveau d'intensité le plus élevé (255).

Conseil : on pourra écrire une fonction quantum(i) qui, pour une intensité i, retourne le quantum associé.

Quelle valeur faut-il donner à p pour obtenir un nombre de niveaux d'intensité effectivement présents
dans l'image équivalent à celui de la question 4 ?

2 sur 2 17/02/2013 12:33

Vous aimerez peut-être aussi