Une image d'évaluation de la fonction histogramme: cv2.calcHist ()
cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate ]]) ->hist
imaes: L'image d'entrée
filières: Une image de sélection de canal
masque: Masque, et est d'une taille identique à matrice d'image de np, dans lequel la partie déterminée à traiter est 1, précise que aucune partie du traitement est égale à zéro, typiquement réglé sur Aucun, montrant l'ensemble de traitement d'image
histsize: Utiliser le nombre de casiers (piliers), typiquement 256
gammes: Gamme de valeurs de pixels, le plus souvent [0, 255] est de 0 à 255
derrière les deux paramètres de base du tube.
Notez que dans le masque d'addition, les quatre autres paramètres devaient prendre le [].
img = cv2.imread('cat.jpg',0) #0表示灰度图
hist = cv2.calcHist([img],[0],None,[256],[0,256])
hist.shape#(256, 1)
1, aucun paramètre de masque
img = cv2.imread('cat.jpg')
color = ('b','g','r')
for i,col in enumerate(color):
histr = cv2.calcHist([img],[i],None,[256],[0,256])
plt.plot(histr,color = col)
plt.xlim([0,256])
2, en utilisant le paramètre de masque
# 创建mask
mask = np.zeros(img.shape[:2], np.uint8)
mask[100:300, 100:400] = 255
img = cv2.imread('cat.jpg', 0)
masked_img = cv2.bitwise_and(img, img, mask=mask)#与操作
hist_full = cv2.calcHist([img], [0], None, [256], [0, 256])
hist_mask = cv2.calcHist([img], [0], mask, [256], [0, 256])
plt.subplot(221), plt.imshow(img, 'gray')
plt.subplot(222), plt.imshow(mask, 'gray')
plt.subplot(223), plt.imshow(masked_img, 'gray')
plt.subplot(224), plt.plot(hist_full), plt.plot(hist_mask)
plt.xlim([0, 256])
plt.show()
D'autre part, la fonction d'égalisation d'image histogramme: cv2.equalizeHist () et cv2.createCLAHA ()
Histogramme égalisation décrit
histogramme égalisation est une technique simple et efficace d' amélioration d'image, une image est changée en changeant la gradation de chaque pixel de l'histogramme de l' image, la plage de dynamique utilisée pour améliorer le contraste de l'image est faible. En raison de sa distribution d'intensité de l' image originale peut être concentrée dans une fourchette étroite, l' image résultante est pas assez claire. Par exemple, l' image sur l'exposition des niveaux de gris est concentrée dans une plage de luminance élevée, mais causeront niveau de gris de l' image sous - exposée dans la plage basse de luminance concentrée. Utilisation de l'égalisation d'histogramme, l'histogramme peut être l' image d' origine convertie est une forme de distribution uniforme (symétrique), augmentant ainsi la valeur de la différence entre la plage de dynamique pixel d'échelle de gris, de manière à obtenir l'effet d'améliorer le contraste de l'image entière. En d' autres termes, le principe de base de l' égalisation d'histogramme est la suivante : Le nombre de pixels de la valeur de gradation de l' image ( à savoir, l'image jouer une valeur importante de gradation de rôle) pour l' élargissement et le plus petit nombre de valeurs de niveaux de gris de pixels ( à savoir ne joue pas un rôle majeur dans la valeur de gradation de l' image) fusion, le contraste augmentant ainsi, une clarté d' image, atteindre l'objectif de amélioré.
cv2.equalizeHist(img)
Paramètres: représentation img de l'image d'entrée
img = cv2.imread('clahe.jpg',0) #0表示灰度图
plt.hist(img.ravel(),256);
plt.show()
equ = cv2.equalizeHist(img)
plt.hist(equ.ravel(),256)
plt.show()
res = np.hstack((img,equ))
cv_show(res,'res')
Cette égalisation globale sera quelques problèmes, en raison de la luminosité globale de l'ascenseur, de sorte que les détails de l'image partielle deviendront floue, de sorte que nous pouvons utiliser une meilleure égalisation adaptative
cv2.createCLAHA(clipLimit=8.0, titleGridSize=(8, 8))
Paramètres: clipLimit seuil de contraste de couleur, titleGridSize égaliser la taille de grille de pixels, à savoir une opération d'égalisation d'histogramme à mailles très
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
res_clahe = clahe.apply(img)
res = np.hstack((img,equ,res_clahe))
cv_show(res,'res')
On peut voir l'égalisation adaptative n'a pas fait les détails des visages des gens disparaissent