Introduction au traitement des images et à la stéréo-vision

Histogramme d'une image

FondamentalHistogramme d'une image en niveaux de gris

Wikipedia : « Pour une image monochrome, c'est-à-dire à une seule composante, l'histogramme est défini comme une fonction discrète qui associe à chaque valeur d'intensité le nombre de pixels prenant cette valeur. La détermination de l'histogramme est donc réalisée en comptant le nombre de pixel pour chaque intensité de l'image. On effectue parfois une quantification, qui regroupe plusieurs valeurs d'intensité en une seule classe, ce qui peut permettre de mieux visualiser la distribution des intensités de l'image. »

FondamentalHistogramme d'une image couleur

Wikipedia : « Pour les images couleurs, on peut considérer les histogrammes des 3 composantes indépendamment, mais cela n'est en général pas efficace2. On construit plutôt un histogramme directement dans l'espace couleur. Les classes de l'histogramme correspondent désormais à une couleur (ou un ensemble de couleurs, en fonction de la quantification), plutôt qu'à une intensité. On parle alors parfois d'histogramme de couleur. »

MéthodeConstruction de l'histogramme de l'image en niveaux de gris à l'aide de Python

Pour construire l'histogramme de l'image en niveau de gris :

1
import numpy as np
2
import cv2 as cv
3
from matplotlib import pyplot as plt
4
img = cv.imread('c:/temp/fruits.jpg',cv.IMREAD_GRAYSCALE)
5
plt.hist(img.ravel(),256,[0,256]); plt.show()
6

Pour construire l'histogramme de l'image en niveau de gris et en couleur :

1
import numpy as np
2
import cv2 as cv
3
from matplotlib import pyplot as plt
4
img = cv.imread('c:/temp/fruits.jpg',cv.IMREAD_GRAYSCALE)
5
roihist = cv.calcHist([img],[0], None, [256], [ 0, 256] )
6
xs=np.linspace(0,255,256)
7
plt.subplot(2,1,1)
8
plt.plot(xs,roihist,color='k')
9
10
img = cv.imread('c:/temp/fruits.jpg',cv.IMREAD_COLOR)
11
color = ('b','g','r')
12
plt.subplot(2,1,2)
13
for i,col in enumerate(color):
14
    histr = cv.calcHist([img],[i],None,[256],[0,256])
15
    plt.plot(histr,color = col)
16
    plt.xlim([0,256])
17
plt.show()
18

MéthodeConstruction de l'histogramme de l'image en Scilab

Pour construire l'histogramme de l'image en niveau de gris :

1
scicv_Init();
2
f = scf();
3
toolbar(f.figure_id, "off");
4
img = imread("c:/temp/fruits.jpg");
5
6
7
subplot(2, 1, 1);
8
matplot(img);
9
title("image");
10
11
imgnb=cvtColor(img,CV_BGR2GRAY);
12
histnb = calcHist(imgnb, 0, [], 1, 32, [0 256]);
13
subplot(2, 3, 6);
14
bar(histnb(:), 'black');
15
16
17
delete_Mat(img);
18
delete_Mat(imgnb);
19
delete_Mat(histnb);
20

Pour construire l'histogramme de l'image en niveau de gris et en couleur :

1
// Scilab Computer Vision Module
2
// Copyright (C) 2017 - Scilab Enterprises
3
4
scicv_Init();
5
6
f = scf();
7
toolbar(f.figure_id, "off");
8
img = imread("g:/lib/opencv/samples/data/fruits.jpg");
9
10
11
subplot(2, 3, 1);
12
matplot(img);
13
title("image");
14
15
// Histogram of the three RBG channels taken separately
16
// Note: OpenCV color channel order is reversed (BGR)
17
histB = calcHist(img, 0, [], 1, 32, [0 256]);
18
subplot(2, 3, 2);
19
bar(histB(:), 'blue');
20
21
histG = calcHist(img, 1, [], 1, 32, [0 256]);
22
subplot(2, 3, 3);
23
bar(histG(:), 'green');
24
25
histR = calcHist(img, 2, [], 1, 32, [0 256]);
26
subplot(2, 3, 4);
27
bar(histR(:), 'red');
28
29
30
imgnb=cvtColor(img,CV_BGR2GRAY);
31
32
histnb = calcHist(imgnb, 0, [], 1, 32, [0 256]);
33
subplot(2, 3, 6);
34
bar(histnb(:), 'black');
35
36
37
delete_Mat(img);
38
delete_Mat(imgnb);
39
delete_Mat(histnb);
40
delete_Mat(histB);
41
delete_Mat(histG);
42
delete_Mat(histR);
43

Résultats

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimerRéalisé avec Scenari (nouvelle fenêtre) modèle documentaire TechnOpale