Le traitement d'image ne fournit pas toujours de belles images. Il peut contenir des objets sombres ou, au contraire, des images trop lumineuses. Il existe une méthode appelée correction gamma pour ajuster la luminosité de l'image.
Cette fois, nous utiliserons Python pour effectuer une correction gamma de l'image par OpenCV.
** La correction gamma (ou conversion gamma) ** est simplement ** une méthode de réglage de la luminosité d'une image **.
L'image contient généralement des zones sombres et claires. Dans un tel cas, la fonction de correction gamma est d'ajuster la luminosité en fonction de chaque valeur de pixel au lieu d'ajuster la luminosité au même rapport pour l'image entière. La formule de correction gamma est la suivante.
y = 255\times\Bigl(\frac{x}{255}\Bigr)^{1/\gamma}
x est la valeur du pixel d'entrée et y est la valeur du pixel de sortie. C'est ce qu'on appelle la correction gamma car la sortie change en fonction de la valeur de $ \ gamma $ (gamma). Si $ \ gamma $ est supérieur à 1, il sera plus clair, et s'il est inférieur à 1, il sera plus sombre.
Le graphique de la correction gamma est le suivant.
L'environnement utilise Google Colaboratory. La version Python est ci-dessous.
import platform
print("python " + platform.python_version())
# python 3.6.9
Maintenant écrivons le code.
Tout d'abord, importez OpenCV.
import cv2
De plus, importez les éléments suivants pour afficher l'image dans Colaboratory.
from google.colab.patches import cv2_imshow
Préparez également un exemple d'image. Cette fois, j'utiliserai l'image gratuite de Pixabay.
Maintenant, affichons l'exemple d'image préparé.
img = cv2.imread(path) #chemin spécifie où l'image est placée
cv2_imshow(img)
Éclaircissons maintenant l'image avec une correction gamma. Créez à l'avance une fonction de correction gamma.
import numpy as np
def create_gamma_img(gamma, img):
gamma_cvt = np.zeros((256,1), dtype=np.uint8)
for i in range(256):
gamma_cvt[i][0] = 255*(float(i)/255)**(1.0/gamma)
return cv2.LUT(img, gamma_cvt)
Affiche l'image corrigée gamma côte à côte avec l'image d'origine.
img_gamma = create_gamma_img(2, img)
imgs = cv2.hconcat([img, img_gamma])
cv2_imshow(imgs)
Rendre $ \ gamma $ supérieur à 1 pour le rendre plus lumineux. Je l'ai essayé comme 2 ci-dessus.
Maintenant, affichons une image corrigée gamma en changeant la valeur de $ \ gamma $ de différentes manières.
img1 = create_gamma_img(0.33, img)
img2 = create_gamma_img(0.5, img)
img3 = create_gamma_img(0.66, img)
img4 = create_gamma_img(1.5, img)
img5 = create_gamma_img(2, img)
img6 = create_gamma_img(3, img)
imgs_1 = cv2.hconcat([img1, img2, img3])
imgs_2 = cv2.hconcat([img4, img5, img6])
imgs = cv2.vconcat([imgs_1, imgs_2])
cv2_imshow(imgs)
En haut à gauche, la valeur de $ \ gamma $ a été augmentée. La ligne supérieure est plus sombre que l'image d'origine et la ligne inférieure est plus claire que l'image d'origine.
Cette fois, j'ai utilisé Python pour effectuer une correction gamma (conversion gamma) sur l'image en utilisant OpenCV.
Si vous devez régler la luminosité de l'image, essayez la correction gamma.
Pour plus de détails sur la correction gamma (conversion gamma), reportez-vous à ce qui suit.
Recommended Posts