Histogramme des images avec python

Histogramme des images avec python

Alors qu’est-ce que l’histogramme  d’une image? On  peut considérer l’histogramme comme un graphique ou un tracé, ce qui vous donne une idée globale de la distribution d’intensité d’une image. Il s’agit d’un graphique avec des valeurs de pixels (allant de 0 à 255, pas toujours) sur l’axe X et le nombre correspondant de pixels dans l’image sur l’axe Y.

Cette représentation permet de de comprendre l’image. En regardant l’histogramme d’une image, on peut obtenir  une intuition sur le contraste, la luminosité, la distribution d’intensité, etc. de cette image.

À partir de l’histogramme, on peut  voir que la région sombre , la région plus claire, et la  valeurs  du nombre de pixels à un point donné, par exemple à 127.

Calcul d’histogramme en utilisant opencv-python

Vous allons  utiliser la fonction cv2.calcHist() pour trouver l’histogramme de l’image .

On va calculer l’histogramme avec la formule suivante:

cv2.calcHist(images, canaux, masque, histSize, plages[, hist[, accumuler]])

  1. images : c’est l’image source
  2. canaux : il est également indiqué entre crochets. C’est l’indice du canal pour lequel on calcule l’histogramme. Par exemple, si l’entrée est une image en niveaux de gris, sa valeur est [0]. Pour l’image couleur, vous pouvez passer [0],[1] ou [2] pour calculer l’histogramme du canal bleu, vert ou rouge respectivement.
  3. masque : image de masque. Pour trouver l’histogramme de l’image complète, il est donné comme “Aucun”. Mais si vous voulez trouver l’histogramme d’une région particulière de l’image, vous devez créer une image de masque pour cela et la donner comme masque. (Je montrerai un exemple plus tard.)
  4. histSize : cela représente notre nombre de BIN. Doit être indiqué entre crochets. Pour la pleine échelle, nous passons [256].
  5. gammes : c’est notre GAMME. Normalement, c’est [0,256].

Dans notre exemple, nous allons voir comment tracer l’histogramme d’une image sans séparer chaque canal et ensuite comme tracer séparément l’histogramme de chaque canal d’une image couleur(RGB par exemple).

Cas de l’histogramme d’une image couleur ou en niveau de gris

[pastacode lang=”python” manual=”import%20numpy%20as%20np%0Aimport%20cv2%0Afrom%20matplotlib%20import%20pyplot%20as%20plt%0A%0Aimg%20%3D%20cv2.imread(‘%2Fcontent%2Fdrive%2FMyDrive%2FSerie1%2FTournesol_H_noir_IMX145_05-06-2021-01-50-11_.tif’)%0Aplt.hist(img.ravel()%2C256%2C%5B0%2C256%5D)%3B%20plt.show()” message=” Calcul d’histogramme dans OpenCV” highlight=”” provider=”manual”/]

Cas de l’histogramme d’une image couleur(RGB) avec séparation de chaque canal

[pastacode lang=”python” manual=”%23%20calcule%20de%20l’histogramme%20par%20Opencv%20sur%20chaque%20canal%0Aimport%20cv2%0Aimport%20numpy%20as%20np%0Afrom%20matplotlib%20import%20pyplot%20as%20plt%0A%0Aimg%20%3D%20cv2.imread(‘%2Fcontent%2Fdrive%2FMyDrive%2FSerie1%2FTournesol_H_noir_IMX145_05-06-2021-01-50-11_.tif’%2C0)%0Aimg1%20%3D%20cv2.imread(‘%2Fcontent%2Fdrive%2FMyDrive%2FSerie1%2FTournesol_H_noir_IMX145_05-06-2021-01-50-11_.tif’%2C1)%0Aimg2%20%3D%20cv2.imread(‘%2Fcontent%2Fdrive%2FMyDrive%2FSerie1%2FTournesol_H_noir_IMX145_05-06-2021-01-50-11_.tif’%2C2)%0Aplt.subplot(131)%2Cplt.hist(img.ravel()%2C256%2C%5B0%2C256%5D)%2Cplt.title(‘Bleue’)%0Aplt.xticks(%5B%5D)%2Cplt.yticks(%5B%5D)%0Aplt.subplot(132)%2Cplt.hist(img1.ravel()%2C256%2C%5B0%2C256%5D)%2Cplt.title(‘vert’)%0Aplt.xticks(%5B%5D)%2Cplt.yticks(%5B%5D)%0Aplt.subplot(133)%2Cplt.hist(img.ravel()%2C256%2C%5B0%2C256%5D)%2Cplt.title(‘Rouge’)%0Aplt.xticks(%5B%5D)%2Cplt.yticks(%5B%5D)%0A%0Aplt.show()” message=”Histogramme avec chaque canal” highlight=”” provider=”manual”/]

ou

[pastacode lang=”python” manual=”import%20numpy%20as%20np%0Aimport%20cv2%0Afrom%20matplotlib%20import%20pyplot%20as%20plt%0A%0Aimg%20%3D%20cv2.imread(‘%2Fcontent%2Fdrive%2FMyDrive%2FSerie1%2FTournesol_H_noir_IMX145_05-06-2021-01-50-11_.tif’)%0Aimg%3D%20%20cv2.cvtColor(img%2Ccv2.COLOR_BGR2RGB)%0A%0Acolor%20%3D%20(‘r’%2C’g’%2C’b’)%0Afor%20i%2Ccol%20in%20enumerate(color)%3A%0A%20%20%20%20histr%20%3D%20cv2.calcHist(%5Bimg%5D%2C%5Bi%5D%2CNone%2C%5B256%5D%2C%5B0%2C256%5D)%0A%20%20%20%20plt.plot(histr%2Ccolor%20%3D%20col)%0A%20%20%20%20plt.xlim(%5B0%2C256%5D)%2Cplt.legend(color)%2Cplt.title(‘Histogramme%20des%20canaux%20R%2C%20G%20B’)%0Aplt.show()%0A” message=”” highlight=”” provider=”manual”/]

Please follow and like us:
Pin Share

Laisser un commentaire