opencv histogramme et d'égalisation d'histogramme (cv2.calcHist, cv2.equalizeHist)

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 [].
Insérer ici l'image Description

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]) 

Insérer ici l'image Description
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()

Insérer ici l'image Description

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
Insérer ici l'image Description
Insérer ici l'image Description

img = cv2.imread('clahe.jpg',0) #0表示灰度图
plt.hist(img.ravel(),256); 
plt.show()

Insérer ici l'image Description

equ = cv2.equalizeHist(img) 
plt.hist(equ.ravel(),256)
plt.show()

Insérer ici l'image Description

res = np.hstack((img,equ))
cv_show(res,'res')

Insérer ici l'image DescriptionCette é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')

Insérer ici l'image DescriptionOn peut voir l'égalisation adaptative n'a pas fait les détails des visages des gens disparaissent

Publié 27 articles originaux · a gagné les éloges 20 · vues 1545

Je suppose que tu aimes

Origine blog.csdn.net/qq_39507748/article/details/104596171
conseillé
Classement