Die Bildverarbeitung liefert nicht immer schöne Bilder. Es kann dunkle Objekte oder umgekehrt Bilder enthalten, die zu hell sind. Es gibt eine Methode namens Gammakorrektur, um die Helligkeit des Bildes anzupassen.
Dieses Mal werden wir Python verwenden, um eine Gammakorrektur des Bildes durch OpenCV durchzuführen.
** Gammakorrektur (oder Gammakonvertierung) ** ist einfach ** eine Methode zum Anpassen der Helligkeit eines Bildes **.
Das Bild enthält im Allgemeinen dunkle und helle Bereiche. In einem solchen Fall besteht das Merkmal der Gammakorrektur darin, die Helligkeit gemäß jedem Pixelwert anzupassen, anstatt die Helligkeit für das gesamte Bild im gleichen Verhältnis einzustellen. Die Formel für die Gammakorrektur lautet wie folgt.
y = 255\times\Bigl(\frac{x}{255}\Bigr)^{1/\gamma}
x ist der Eingabepixelwert und y ist der Ausgabepixelwert. Dies wird als Gammakorrektur bezeichnet, da sich die Ausgabe abhängig vom Wert von $ \ gamma $ (Gamma) ändert. Wenn $ \ gamma $ größer als 1 ist, ist es heller und wenn es kleiner als 1 ist, ist es dunkler.
Das Diagramm der Gammakorrektur ist wie folgt.
Die Umgebung verwendet Google Colaboratory. Die Python-Version ist unten.
import platform
print("python " + platform.python_version())
# python 3.6.9
Jetzt schreiben wir den Code.
Importieren Sie zunächst OpenCV.
import cv2
Importieren Sie außerdem Folgendes, um das Bild in Colaboratory anzuzeigen.
from google.colab.patches import cv2_imshow
Bereiten Sie auch ein Beispielbild vor. Dieses Mal werde ich das kostenlose Bild von Pixabay verwenden.
Lassen Sie uns nun das vorbereitete Beispielbild anzeigen.
img = cv2.imread(path) #Pfad gibt an, wo das Bild platziert wird
cv2_imshow(img)
Lassen Sie uns nun das Bild mit Gammakorrektur aufhellen. Erstellen Sie im Voraus eine Gammakorrekturfunktion.
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)
Lassen Sie uns das gammakorrigierte Bild neben dem Originalbild anzeigen.
img_gamma = create_gamma_img(2, img)
imgs = cv2.hconcat([img, img_gamma])
cv2_imshow(imgs)
Machen Sie $ \ gamma $ größer als 1, um es heller zu machen. Ich habe es als 2 oben versucht.
Lassen Sie uns nun ein gammakorrigiertes Bild anzeigen, indem Sie den Wert von $ \ gamma $ auf verschiedene Arten ändern.
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)
Von oben links wurde der Wert von $ \ gamma $ erhöht. Die obere Reihe ist dunkler als das Originalbild und die untere Reihe ist heller als das Originalbild.
Dieses Mal habe ich Python verwendet, um mit OpenCV eine Gammakorrektur (Gammakonvertierung) für das Bild durchzuführen.
Wenn Sie die Helligkeit des Bildes anpassen müssen, versuchen Sie es mit einer Gammakorrektur.
Weitere Informationen zur Gammakorrektur (Gammakonvertierung) finden Sie im Folgenden.
Recommended Posts