Das Bereinigen von Bildern ist eine wertvolle Technik, sei es zur weiteren Analyse oder einfach, um Ihren Fotos das beste Aussehen zu verleihen.

Die Bildverbesserung ist ein entscheidendes Werkzeug für Computer Vision- und Bildbearbeitungsanwendungen. Ziel ist es, die Qualität der Bilder zu verbessern.

Durch die Verbesserung der Bildqualität können die Genauigkeit und Zuverlässigkeit der Bildanalyse- und -verarbeitungstechniken erheblich verbessert werden. Dies ist besonders wichtig bei Objekterkennungs-, Erkennungs-, Segmentierungs- und Verfolgungsanwendungen.

Die Bildverbesserung kann hilfreich sein, wenn Faktoren wie schlechte Lichtverhältnisse, Sensorrauschen, Bewegungsunschärfe oder Übertragungsfehler die Bildqualität beeinträchtigen.

Einrichten Ihrer Umgebung

Beginnen Sie mit Einrichten einer Python-Umgebung, und führen Sie dann den folgenden Terminalbefehl aus, um die OpenCV-Bibliothek zu installieren. Sie verwenden OpenCV, um das ursprüngliche Bild zu laden und zu verarbeiten und das endgültige verbesserte Bild zu speichern.

instagram viewer
pip installiere opencv-python

Sie verwenden Matplotlib, um die beiden Bilder anzuzeigen. Installieren Sie es mit diesem Befehl:

pip matplotlib installieren

Installieren Sie abschließend NumPy Verwendung für numerische Operationen einschließlich der Erstellung von Nachschlagetabellen für die Gammakorrektur und der Definition des Kernels für die Bildschärfung:

pip install numpy

Sobald Sie diese Bibliotheken in Ihrer Umgebung installiert haben, können Sie mit dem Codieren beginnen.

Der vollständige Quellcode für diese Demo ist in a verfügbar GitHub-Repository.

Importieren der erforderlichen Bibliotheken

Importieren Sie die Bibliotheken, die Sie zuvor in Ihrer Umgebung installiert haben:

importieren Lebenslauf 2
importieren matplotlib.pyplot als plt
importieren Numpy als np

Beachten Sie, dass Sie OpenCV als importieren sollten Lebenslauf 2. Dies ist eine Standardpraxis, die darauf abzielt, die Codekompatibilität und das Verständnis für andere Entwickler sicherzustellen.

Laden und Anzeigen des Originalbilds

Laden Sie zunächst das Originalbild mit cv2.imread Funktion. Dies ist das Eingabebild, an dem Ihr Programm Verbesserungstechniken durchführt. Zeigen Sie es dann mit den entsprechenden Matplotlib-Funktionen an:

image = cv2.imread('Beispiel.jpg')
plt.imshow (cv2.cvtColor (Bild, cv2.COLOR_BGR2RGB))
plt.title('Original Bild')
plt.show()

Die Anzeige des Originalbildes erleichtert Ihnen später den Vergleich der Ergebnisse des Programms:

Das obige Bild ist die Eingabe des Programms.

Reduzierung des Bildrauschens

Rauschunterdrückung ist eine Technik, die darauf abzielt, Rauschen – zufällige Verzerrungen – im Bild zu reduzieren. Dies führt zu einer gleichmäßigeren Ausgabe. OpenCV bietet die fastNlMeansDenoisingColored Funktion für diesen Zweck. Es verwendet einen nicht-lokalen Mittelalgorithmus, um Rauschen zu entfernen und gleichzeitig Bilddetails beizubehalten.

# Bildverbesserungen anwenden
# Entrauschen Sie das Bild
denoised_image = cv2.fastNlMeansDenoisingColored (image, Keiner, 10, 10, 7, 21)

Der fastNlMeansDenoisingColored Die Funktion benötigt mehrere Parameter, darunter das Bild, die Filterstärke, die Größe des Vorlagenfensters und die Größe des Suchfensters. Sie können mit verschiedenen Werten experimentieren, um die gewünschten Ergebnisse zu erzielen.

Dehnen Sie den Kontrast, um die Detailsichtbarkeit zu verbessern

Kontrastdehnung wird auch als Normalisierung bezeichnet. Es streckt die Intensitätswerte, um einen bestimmten Bereich abzudecken. Dies wiederum verbessert die Sichtbarkeit der Details im Bild.

Sie können mithilfe von OpenCVs eine Kontrastdehnung auf das entrauschte Bild anwenden normalisieren Funktion:

# Führen Sie eine Kontrastdehnung durch
kontrast_stretched_image = cv2.normalize (denoised_image, Keiner, 255, 0, cv2.NORM_MINMAX, cv2.CV_8UC1)

So schärfen Sie das Bild

Durch die Bildschärfung werden die Kanten und Details des Bildes hervorgehoben, wodurch die Schärfe des Bildes verbessert wird.

# Bildschärfung
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
Sharpened_image = cv2.filter2D(contrast_stretched_image, -1, Kernel=Kernel)

Der obige Code erstellt eine Kernelmatrix, die die Kanten und Details im Bild hervorhebt. Der cv2.filter2D Die Funktion wendet den Kernel auf das kontrastgestreckte Bild an und schärft es dadurch.

Passen Sie die Helligkeit an, um die Belichtung zu verbessern

Die Helligkeitsanpassung steuert die Gesamthelligkeit eines Bildes. Es trägt dazu bei, dass das Bild optisch ansprechend und gut belichtet wird.

# Helligkeitsanpassung
Brightness_image = cv2.convertScaleAbs (sharpened_image, alpha=1, beta=5)

Der cv2.convertScaleAbs Funktion passt die Helligkeit des Bildes an. Der Alpha Der Parameter steuert den Kontrast, während der Beta Parameter steuert die Helligkeit. Erhöhung der Beta Der Wert erhöht die Helligkeit des Bildes.

Wenden Sie die Gammakorrektur an, um das Bild aufzuhellen

Nach der Helligkeitsanpassung kann ein Bild zu hell erscheinen. Die Gammakorrektur passt die Gesamthelligkeit und den Kontrast eines Bildes an. Es korrigiert Bilder, die zu dunkel oder zu hell erscheinen.

# Gamma-Korrektur
Gamma = 1.5
lookup_table = np.array([((i / 255.0) ** Gamma) * 255für ich In np.arange(0, 256)]).astype(„uint8“)
gamma_corrected_image = cv2.LUT(brightness_image, lookup_table)

Der obige Codeausschnitt erstellt eine Nachschlagetabelle, die eine Gammakorrekturtransformation auf das an die Helligkeit angepasste Bild anwendet. Der Gamma Der Wert steuert die Anpassung. Verwenden Sie Werte größer als 1, um das Bild dunkler zu machen, und Werte kleiner als 1, um es heller zu machen.

Speichern und Anzeigen des endgültigen verbesserten Bildes

Nachdem Sie die oben genannten Verbesserungstechniken angewendet haben, speichern Sie das endgültig verarbeitete Bild in einer Datei.

# Endgültiges Bild speichern
cv2.imwrite('final_image.jpg', gamma_corrected_image)

Zeigen Sie dann die Ausgabe des Programms mit Matplotlib an.

# Zeigt das endgültige verbesserte Bild an
plt.imshow (cv2.cvtColor (gamma_corrected_image, cv2.COLOR_BGR2RGB))
plt.title(„Endgültiges verbessertes Bild“)
plt.show()

Das endgültige verbesserte Bild sieht wie folgt aus:

Die Zukunft der Bildverbesserung

Die Zukunft der Bildverbesserung liegt im Bereich der künstlichen Intelligenz. Algorithmen für maschinelles Lernen werden trainiert, um automatisch Bildverbesserungstechniken an Bildern durchzuführen.

Diese Programme behandeln jedes Bild unabhängig und wenden daher unterschiedliche Werte der Techniken für verschiedene Bilder an.