Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen

Einführung

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.

Was ist Gammakorrektur?

** 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.

image.png

Vorbereitung

Die Umgebung verwendet Google Colaboratory. Die Python-Version ist unten.

import platform
print("python " + platform.python_version())
# python 3.6.9

Lassen Sie uns das Bild anzeigen

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)

image.png

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)

image.png

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)

image.png

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.

Zusammenfassung

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

Ich habe versucht, das Bild mit Python + OpenCV "gammakorrektur" zu machen
Ich habe versucht, das Bild mit Python + OpenCV zu "glätten"
Ich habe versucht, das Bild mit Python + OpenCV zu "differenzieren"
Ich habe versucht, das Bild mit Python + OpenCV zu "binarisieren"
[OpenCV / Python] Ich habe versucht, Bilder mit OpenCV zu analysieren
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich habe versucht, den Bildfilter von OpenCV zu verwenden
Ich habe versucht, das Bild mit Python + OpenCV "morphologisch zu konvertieren"
Ich habe versucht, mit Python + opencv nicht realistisch zu rendern
Ich habe versucht, mit Pillow mit dem Bild zu spielen
Ich habe versucht, das Ranking des Qiita-Adventskalenders mit Python zu kratzen
Ich habe versucht, das Bild mit OpenCV im "Skizzenstil" zu verarbeiten
Ich habe versucht, das Bild mit OpenCV im "Bleistift-Zeichenstil" zu verarbeiten
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern
Ich habe versucht, mit Python + OpenCV eine Bildähnlichkeitsfunktion zu erstellen
Ich habe Hunderte Millionen SQLite mit Python ausprobiert
Ich habe versucht, Bilder mit CIFAR-10 mit Keras-Learning- zu erkennen.
Ich habe versucht, Bilder von CIFAR-10 mit Keras-Bilderkennung zu erkennen.
Ich habe versucht, die Trapezform des Bildes zu korrigieren
[Python + OpenCV] Malen Sie den transparenten Teil des Bildes weiß
So schneiden Sie den unteren rechten Teil des Bildes mit Python OpenCV
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Ich habe versucht, die Standardrolle neuer Mitarbeiter mit Python zu optimieren
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Ich habe fp-Wachstum mit Python versucht
Ich habe versucht, mit Python zu kratzen
Bildbearbeitung mit Python OpenCV
Ich habe gRPC mit Python ausprobiert
Ich habe versucht, mit Python zu kratzen
Extrahieren Sie die Tabelle der Bilddateien mit OneDrive & Python
Ich habe versucht, Funktionen mit SIFT von OpenCV zu extrahieren
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Python Open CV hat versucht, das Bild im Text anzuzeigen.
Ich habe versucht, die API mit dem Python-Client von echonest zu erreichen
Ich habe versucht, die String-Operationen von Python zusammenzufassen
[Python] Ich habe versucht, das Mitgliederbild der Idolgruppe mithilfe von Keras zu beurteilen
Ich habe versucht, die Tweets von JAWS DAYS 2017 mit Python + ELK einfach zu visualisieren
Ich möchte das Bild entlang der Kontur anstelle des Rechtecks zuschneiden [Python OpenCV]
Ich habe versucht, die Literatur des neuen Corona-Virus mit Python automatisch an LINE zu senden
Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
[Python] Verwenden von OpenCV mit Python (Bildfilterung)
Ich habe versucht, die Python-Bibliothek von Ruby mit PyCall zu verwenden
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
[Python] Verwenden von OpenCV mit Python (Bildtransformation)
Ich habe die grundlegende Grammatik von Python in Jupyter Lab geschrieben
Ich habe versucht, WebScraping mit Python.
Ich habe versucht, Movidius NCS mit Python von Raspberry Pi3 auszuführen
Ich habe versucht, das Artikel-Update des Livedoor-Blogs mit Python und Selen zu automatisieren.
Ich habe versucht, GrabCut von OpenCV zu verwenden
Ich habe die Strategie des Aktiensystemhandels mit Python evaluiert.
Ich habe versucht, das Gesicht aus dem Video zu erkennen (OpenCV: Python-Version)
[Python] Ich habe versucht, die folgende Beziehung von Twitter zu visualisieren
Ich mochte den Tweet mit Python. ..
[Python] Ich habe versucht, Daten mit der API von Wikipedia zu sammeln
Bildverarbeitung mit Python (ich habe versucht, es in 0 und 1 Mosaikkunst zu binarisieren)
Finden Sie Bildähnlichkeit mit Python + OpenCV