Vous êtes sur la page 1sur 6

2 MP ISI Année Universitaire : 2015-2016

Ecole Supérieure de Technologie et d’Informatique

UE : Traitement d’images
TP n°1 : Histogramme, Binarisation & Quantification

Objectif : Nous allons étudier des traitements permettant de manipuler des


histogrammes, de binariser et de quantifier les images.

1- Histogramme

Avant de présenter des traitements à proprement parler, nous allons donner deux fonctions
permettant de visualiser l'histogramme d'une image. Par définition, un histogramme est un
graphe permettant de représenter la répartition d'une variable.
Dans le cas d'une image, l'histogramme permet de connaître le nombre de pixels ayant un niveau
de gris donné. Cet outil permet d'obtenir un certain nombre d'indications sur l'image. Il est
ensuite possible de réaliser un certain nombre de traitements à partir de l'histogramme tel qu'un
étirement, une égalisation ou un seuillage.

Activité-1 : Utilisation de « imhist »

Nous allons tout d'abord présenter une fonction permettant de visualiser l'histogramme de l'image en
entrée et utilisant une fonction Matlab prévue à cet effet : la fonction imhist.
Nous récupérons tout d'abord l'image acquise à l'aide de la fonction imread. On convertit ensuite cette
image en niveau de gris à l'aide de la fonction rgb2gray. Nous obtenons alors une image où chaque pixel de
l'image est codé à l'aide d'un unique octet (la valeur d'un pixel varie donc de 0 à 255). Nous appelons ensuite
la fonction imhist sur l'image I afin d'obtenir l'histogramme de l'image.

2 MP ISI -1- TP Traitement d’images (AU 2015-16)


Le résultat obtenu est similaire à la figure suivante :

On note sur l'histogramme que, comme prévu, les niveaux de gris sont compris entre 0 et 255.
Nous remarquons également que notre image n'utilise pas les niveaux de gris de 240 à 255. Le contraste de
l'image pourrait donc être amélioré si l'image utilisait cette plage. Cette modification peut être effectuée par
un étirement d'histogrammes. Ce traitement sera explicité un peu plus loin.
Enfin, si la luminosité de l'image augmente, on pourra observer un déplacement de l'histogramme vers la
droite.

2 MP ISI -2- TP Traitement d’images (AU 2015-16)


Activité-2 : Inversion

Le premier traitement que nous allons présenter est l'inversion d'images. Ce traitement relativement
simple à mettre en place consiste à convertir chaque pixel de l'image en entrée (en niveau de gris dans
notre cas) en sa valeur inverse sur l'échelle des 256 couleurs. Ainsi, un pixel ayant pour valeur 10 sera
converti en la valeur 245 alors qu'un pixel ayant pour valeur 250 sera converti en la valeur 5.

Essayez d’Inverser l’image acquise tout en affichant l’histogramme. Interprétez.

2- Binarisation
Nous allons maintenant présenter des fonctions permettant de réaliser une binarisation de l'image en
entrée. La binarisation permet de réduire l'échelle chromatique de 256 valeurs à seulement deux valeurs : 0
et 255. Pour réaliser la binarisation, il est nécessaire de choisir un seuil (de manière automatique ou
arbitraire). On parcourt ensuite l'ensemble des pixels de l'image d'entrée. Chaque pixel ayant un niveau de
gris inférieur au seuil se voit assigné la valeur 0. Les pixels ayant un niveau de gris supérieur sont quant à
eux passé à 255.

2 MP ISI -3- TP Traitement d’images (AU 2015-16)


Activité-3 : Binarisation paramétrable

Nous allons tout d'abord présenter une fonction permettant de réaliser une binarisation avec un seuil saisi par
l'utilisateur.

Après avoir récupéré l'image en entrée et passé cette dernière en niveau de gris, nous récupérons le seuil
saisi par l'utilisateur. Nous déclarons ensuite une nouvelle image qui contiendra le résultat de la
binarisation. Pour allouer cette image, nous avons recours à la fonction zéros qui permet d'allouer une
matrice de zéros. Pour réaliser la binarisation, il nous suffit de parcourir l'image à l'aide de deux boucles for.
Si la valeur du pixel courant est supérieure au seuil récupéré précédemment, on passe sa valeur à 255 dans
la nouvelle image. Dans le cas contraire, on passe la valeur du pixel à 0. Nous affichons ensuite les images et
les histogrammes de la même manière que les fonctions précédentes. Essayez de changer le seuil et
interprétez les résultats.

2 MP ISI -4- TP Traitement d’images (AU 2015-16)


Activité-4 : Binarisation selon la méthode d’Otsu Binarisation

Nous allons maintenant présenter une fonction réalisant de manière automatique le choix du seuil.
Cette fonction utilise la méthode d'Otsu pour déterminer le seuil le plus adapté. Cette méthode utilise des
concept issus du domaine des probabilités pour déterminer un seuil optimale pour la binarisation.
Matlab met à disposition la méthode graythresh pour obtenir le seuil selon la méthode d'Otsu.
La fonction graythresh prend en paramètre l'image à binariser et retourne un seuil compris entre 0 et 1. Il
nous faut donc multiplier ce seuil par 255 pour pouvoir l'utiliser par la suite. Nous affichons ensuite le seuil
retourné par la méthode d'Otsu. Nous appliquons ensuite la binarisation de la même manière que
précédemment puis nous affichons les images et les histogrammes.

3- Quantification

La quantification c’est l’attribution d’une valeur (niveau de gris) à chaque élément de l’image. Elle permet
de réduire l'échelle chromatique utilisée par l'image. Cette réduction peut être appréciable dans le cadre
de la compression d'images. En effet, lorsqu'une image utilise 256 niveaux de gris, il est nécessaire
d'utiliser un octet pour stocker la valeur de chaque pixel. Si nous pouvons convertir cette image de
manière à ce qu'elle utilise 16 niveaux de gris, nous pourrions alors nous contenter de quatre bits pour
coder chaque pixel. La taille de l'image s'en trouverait donc diviser par deux.

Activité-5 : Quantification paramétrable

Pour réaliser la quantification, il nous faut tout d'abord récupéré le nombre de niveaux de gris.
On calcule ensuite la taille des tranches en divisant l'échelle totale des niveaux de gris (256) par le nombre de
niveaux de gris souhaités. Ces tranches sont utilisées pour répartir les différents pixels entre les niveaux de
gris choisi pour l'image de sortie. Ainsi, si les tranches ont une taille de 50, tous les pixels ayant un niveau de
gris entre 0 et 50 se verront affectés la valeur choisie pour cette tranche. Les valeurs des niveaux de gris de
sortie sont stockées dans le tableau centreIntervalle. Ce dernier a donc une taille égale au nombre de
niveaux de gris en sortie. Nous initialisons ensuite ce tableau. Pour cela, nous calculons les centres de chaque
intervalle (ou tranche). On multiplie l'indice du centre d'intervalle par la taille d'une tranche puis nous
ajoutons à cette valeur la taille d'une tranche divisée par deux (afin d'obtenir le centre de l'intervalle).

2 MP ISI -5- TP Traitement d’images (AU 2015-16)


Pour quantifier l'image, il nous faut maintenant parcourir cette dernière à l'aide de deux boucles for. Pour
chacun des pixels, nous calculons l'intervalle correspondant au niveau du gris du pixel. Pour cela, on divise
le niveau de gris par la taille de la tranche (nous ajoutons 1 car les tableaux démarrent à cet indice sous
Matlab). Nous fixons ensuite la valeur du pixel courant pour l'image de sortie avec la valeur du centre de
l'intervalle ainsi obtenue.
Essayez de quantifier l’image acquise en variant le nombre de niveaux de gris souhaité et en affichant à
chaque fois l’histogramme correspondant.

Avec un nombre de niveaux de gris égal à 3, le résultat obtenu est le suivant :

2 MP ISI -6- TP Traitement d’images (AU 2015-16)

Vous aimerez peut-être aussi