Fonctions > Traitement d'image > Manipulation des images > Exemple : Histogrammes en une et deux dimensions
  
Exemple : Histogrammes en une et deux dimensions
Utilisez les fonctions imhist, imhist2 et hist2d pour générer un ou deux histogrammes dimensionnels.
Pour plus d'informations sur l'utilisation de cet exemple, voir A propos des exemples de traitement d'image.
imhist
Cette fonction génère un histogramme des éléments de la matrice M en divisant la plage d'intensité en n cellules. Chaque cellule contient le nombre de pixels correspondant à sa plage de niveau d'intensité. Par exemple, si n = 256, il y a une cellule pour chaque niveau d'intensité possible dans des niveaux de gris de 8 bits. S'il y a moins de 256 cellules, les niveaux d'intensité sont divisés en cellules comme suit :
Cliquez pour copier cette expression
Le libellé de la cellule commence à 0. S'il y a plus de 256 cellules, les tailles des cellules sont inférieures à 1.
1. Définissez une petite matrice pour voir la relation entre les valeurs et l'apparence de l'histogramme.
Cliquez pour copier cette expression
2. Définissez le nombre de cellules pour l'application de la fonction imhist à la matrice ci-dessus.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
En raison de n = 255, chacun des 256 niveaux d'intensité reçoit sa propre cellule. Comme le montre la matrice P, la seule cellule qui doit avoir plus d'un comptage est 150.
Cliquez pour copier cette expression
3. Tracez un histogramme des niveaux d'intensité.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
4. Définissez n à un nombre plus petit, tel que 5, et observez la différence.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
En raison de n = 5, les 256 niveaux d'intensité doivent être divisés en 5 cellules distinctes. Les valeurs d'intensité comprises entre 0 et 256/5 sont incluses dans la cellule 0, les valeurs comprises entre 256/5 et 512/5 sont incluses dans la cellule 1, etc.
Cliquez pour copier cette expression
Comme le montre la matrice P et l'histogramme ci-dessus, les valeurs d'intensité sont distribuées comme suit :
0, 30, 40 sont dans la cellule 0 (0-51).
Aucune valeur d'intensité dans la cellule 1 (52-103)
120 et trois comptages de 150 sont dans la cellule 2 (103-154)
200 est dans la cellule 3 (154-205).
240 est dans la cellule 4 (205-256).
5. Utilisez la fonction READ_IMAGE pour lire une image qui contient des espaces.
Cliquez pour copier cette expression
(pattern.bmp)
6. Appliquez la fonction imhist à l'image.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Le blanc (valeur d'intensité = 255) dans l'image apparaît comme un grand pic sur la droite. Le noir et les autres tons gris distincts sont visibles dans les autres cellules.
7. Calculez le nombre d'éléments dans la cellule 0 (noir) et dans la cellule 255 (blanc).
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Les différentes ombres des zones grisées dans l'image apparaissent comme de petits pics le long de l'axe des X.
imhist2
Cette fonction peut être utilisée pour collecter des données avec des valeurs situées en dehors de la plage 0–255.
1. Définissez une matrice contenant les éléments situés en dehors de la plage 0–255.
Cliquez pour copier cette expression
2. Définissez le nombre de cellules et calculez l'histogramme à n cellules.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
3. Calculez les extrémités des n cellules.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
hist2d
Cette fonction génère un histogramme en deux dimensions des deux images M et N, en créant n cellules dans chaque dimension. M et N doivent avoir la même taille. Si les deux images ont les mêmes nombres de pixels à des intensités similaires, la matrice de sortie de hist2d présente une diagonale forte. La fonction divise la plage 0–255 en n cellules.
1. Définissez le nombre de cellules ainsi que les deux matrices d'images de même taille.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
2. Utilisez l'opérateur de vectorisation avec la fonction bin_label définie ci-dessus pour calculer les numéros de cellules de P et Q.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
L'histogramme à deux dimensions est une matrice n x n, avec un comptage à la colonne c et à la ligne r lorsqu'il y a un élément de Pbins avec le numéro de cellule c et que l'élément correspondant de Qbins a le comptage r. Par exemple, les premiers éléments de Pbins et Qbins sont 0 et 2, de telle sorte qu'ils génèrent un comptage à la colonne 0 et à la ligne 2 de la matrice de l'histogramme.
3. Calculez la matrice de l'histogramme en commençant par générer une matrice de zéros, puis en ajoutant les comptages.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
4. Comparez le résultat ci-dessus avec le résultat de hist2d.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
5. Pour un exemple plus concret, considérez l'image en couleur suivante.
Utilisez la fonction READRGB pour lire l'image et utilisez la fonction WRITERGB pour écrire l'image dans un fichier.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
(smallwar.bmp)
6. Utilisez la fonction extract pour extraire les composants verts et bleus séparément afin de permettre la comparaison des deux composants de couleur.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
7. Affichez l'histogramme en deux dimensions.
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
Cliquez pour copier cette expression
(hist2d.bmp)
8. Affichez l'histogramme en deux dimensions en tant qu'image des intensités sur une échelle logarithmique.
Cliquez pour copier cette expression
Examinez l'image et observez les différentes intensités. La diagonale forte de cet histogramme en deux dimensions signifie que la plupart des pixels situés à des emplacements correspondants possèdent des intensités similaires. Cela se conçoit aisément dans le cas de deux composants de couleur issus de la même photographie. La diagonale serait moins accentuée dans deux images présentant des textures très différentes.