Skip to content

Beherrschen der Bildverarbeitung mit Matplotlib in Python: Ein umfassender Leitfaden

Updated on

Im Bereich der Datenwissenschaft ist die Bedeutung der Datenvisualisierung unschätzbar. Ein solches leistungsstarkes Werkzeug in der Python-Umgebung ist Matplotlib. Diese Bibliothek ist ein vielseitiges Werkzeug zum Erstellen von statischen, animierten und interaktiven Visualisierungen in Python. Aber wussten Sie, dass Matplotlib auch ein mächtiges Werkzeug für die Bildverarbeitung sein kann?

Sie fragen sich vielleicht, "Was ist Bildverarbeitung?" Es handelt sich um eine Methode zur Durchführung von Operationen auf Bildern, wie z.B. Analyse, Modifikation und Interpretation ihrer Merkmale. Diese Operationen beinhalten oft NumPy-Arrays, die eine grundlegende Datenstruktur in Python sind, die zum Speichern und Manipulieren numerischer Daten verwendet wird.

Möchten Sie schnell Datenvisualisierungen aus einem Python Pandas-Datenrahmen erstellen, ohne Code zu schreiben?

PyGWalker ist eine Python-Bibliothek für die explorative Datenanalyse mit Visualisierung. PyGWalker (opens in a new tab) kann Ihren Arbeitsablauf zur Datenanalyse und Datenvisualisierung in Jupyter Notebook vereinfachen, indem es Ihren Pandas-Datenrahmen (und Polars-Datenrahmen) in eine Tableau-ähnliche Benutzeroberfläche für visuelle Exploration umwandelt.

PyGWalker für Datenvisualisierung (opens in a new tab)

Matplotlib: Die Magie der Bilder enthüllen

Im Kern ist ein Bild nichts anderes als ein multidimensionales NumPy-Array, bei dem jeder Pixel einem bestimmten Array-Element entspricht. Diese Pixel haben einen numerischen Wert, der in der Regel von 0 (schwarz) bis 255 (weiß) für ein Graustufenbild reicht. Auf der anderen Seite hat ein Farbbild oder ein RGB-Bild drei solche Arrays, die den Rot-, Grün- und Blau-Kanälen entsprechen. Es gibt auch ein RGBA-Format, das einen zusätzlichen Alpha-Kanal für Transparenz enthält.

Matplotlibs Magie zeigt sich wirklich, wenn man mit diesen Bildern arbeitet. Durch die Manipulation dieser NumPy-Arrays können Sie verschiedene Aufgaben zur Bildverarbeitung durchführen, wie z.B. Bildmodifikation, Bildzuschneiden, Bildskalierung, Bilddrehung und mehr.

Beispielsweise möchten Sie eine RGB-Bild in ein Graustufenbild umwandeln. Diese Aufgabe besteht darin, die Werte in den Rot-, Grün- und Blau-Kanälen für jeden Pixel zu durchschnitt. Klingt komplex? Mit Matplotlib ist das so einfach wie Kuchen! Schauen Sie sich unseren Leitfaden zu ChatGPT Code Interpreter für Data Science für mehr Informationen dazu an.

Durch Bilder plotten

Das Plotten von Bilddaten ist der Bereich, in dem Matplotlib wirklich glänzt. Es bietet eine umfangreiche Sammlung von Funktionen zum Anzeigen von Bildern, zum Erstellen von Histogrammplots und sogar zur Bildsegmentierung. Darüber hinaus ermöglicht es Ihnen, diese Plots auf vielfältige Weise anzupassen.

Eine solche Anpassung ist die Farbskala, die eine grafische Darstellung von Farbverläufen ist. In Matplotlib können Sie die Farbskala eines Bildes so anpassen, dass verschiedene Merkmale prominenter dargestellt werden. Beispielsweise könnten Sie bestimmte Bereiche eines Bildes hervorheben oder den Kontrast verstärken.

Die Farbskala spielt auch eine wichtige Rolle. Bei einem RGB-Bild wird jeder Pixel durch drei Intensitätswerte (Rot, Grün, Blau) repräsentiert. Es wird also als 3D-NumPy-Array dargestellt.

# Erzeugen Sie ein zufälliges RGB-Bild
image_rgb = np.random.randint(0, 256, (512, 512, 3), dtype=np.uint8)
 
# Zeigen Sie das RGB-Bild an
plt.imshow(image_rgb)
plt.show()

Operationen auf Bildern durchführen

Matplotlib bietet zahlreiche Funktionen, um Operationen auf diesen Bildern durchzuführen.

Beispielsweise kann Bildmodifikation so einfach sein wie das Anpassen der Pixelintensitätswerte.

# Erhöhen Sie die Intensität aller Pixel um 50
image_mod = image + 50
 
# Zeigen Sie das modifizierte Bild an
plt.imshow(image_mod, cmap='gray')
plt.show()

Sie können auch Operationen wie Bildzuschneiden, Bildskalierung und Bilddrehung durchführen.

# Beschneiden Sie das Bild auf 256x256
image_crop = image[:256, :256]
 
# Zeigen Sie das zugeschnittene Bild an
plt.imshow(image_crop, cmap='gray')
plt.show()

Bildvisualisierung mit Matplotlib

Matplotlib bietet umfangreiche Tools für die Bildvisualisierung über die einfache Bildanzeige hinaus. Es ermöglicht Ihnen das Erstellen von Histogrammplots, das Anwenden von Farbskalen und sogar die Durchführung von Bildsegmentierung.

Sie können z.B. das Histogramm der Pixelintensitäten in einem Bild plotten.

# Plotten Sie das Histogramm der Pixelintensitäten
plt.hist(image.ravel(), bins=256, color='gray', alpha=0.7)
plt.show()

Sie können auch die Achsen entfernen und eine Farbskala zum Bild hinzufügen.

# Zeigen Sie das Bild mit einer Farbskala und ohne Achsen an
plt.imshow(image, cmap='gray')
plt.colorbar()
plt.axis('off')
plt.show()

Mit einer guten Kenntnis dieser Grundlagen sind Sie bereit, sich mit fortgeschrittenen Themen wie Bildfilterung und der Anzeige von mehreren Bildern zu beschäftigen. Möglicherweise möchten Sie auch erkunden, wie Matplotlib mit Datenvisualisierungstools wie RATH (opens in a new tab), Tableau und Chartio integriert ist.

Fortgeschrittene Bildverarbeitungstechniken

Ausgestattet mit den Grundlagen können wir nun fortschrittlichere Bildverarbeitungstechniken erkunden.

Bildfilterung ist eine Methode zur Modifikation oder Verbesserung eines Bildes. Eine häufige Anwendung der Bildfilterung besteht z.B. darin, ein Bild zu glätten oder zu verwischen. In Matplotlib kann dies mit Hilfe einer Faltung mit einem Filterkern erreicht werden.

from scipy.ndimage import gaussian_filter
 
# Anwenden eines Gauss-Filters zur Bildglättung
image_smooth = gaussian_filter(image, sigma=1)
 
# Zeigen Sie das gefilterte Bild an

plt.imshow(image_smooth, cmap='gray') plt.show()

Ebenso ist die Bildrotation eine wichtige Operation, insbesondere bei Aufgaben wie der Datenaugmentation. Zum Glück ist es mit Matplotlib ein Kinderspiel.


```python
from scipy.ndimage import rotate

# Das Bild um 45 Grad rotieren
image_rotated = rotate(image, angle=45)

# Das rotierte Bild anzeigen
plt.imshow(image_rotated, cmap='gray')
plt.show()

Eine weitere aufregende Anwendung ist die Bildsegmentierung, der Prozess der Aufteilung eines Bildes in mehrere Segmente oder 'Interessensregionen'. Diese Technik ist sehr nützlich bei Aufgaben wie der Objekterkennung oder der Bilderkennung.

from skimage.segmentation import slic
from skimage.color import label2rgb
 
# SLIC-Segmentierung anwenden
segments = slic(image_rgb)
 
# Die Segmentierung anzeigen
segmented_image = label2rgb(segments, image_rgb, kind='avg')
plt.imshow(segmented_image)
plt.show()

Schließlich ist das Anzeigen von mehreren Bildern (auch als Subplotting bezeichnet) eine fantastische Möglichkeit, verschiedene Bilder oder Bildverarbeitungstechniken zu vergleichen. Matplotlib bietet ein sehr flexibles Framework zum Erstellen komplexer Layouts von Subplots.

# Das Originalbild und das gefilterte Bild nebeneinander anzeigen
fig, axes = plt.subplots(1, 2)
axes[0].imshow(image, cmap='gray')
axes[1].imshow(image_smooth, cmap='gray')
plt.show()

Abschluss

Die Welt der Bildverarbeitung mit Matplotlib und Python ist groß und voller Möglichkeiten. Von grundlegenden Manipulationen wie dem Zuschneiden und Skalieren von Bildern bis hin zu fortgeschrittenen Techniken wie der Bildsegmentierung bietet diese Bibliothek ein umfangreiches Set an Werkzeugen sowohl für die Datenvisualisierung als auch für die Bildverarbeitung.

Um Ihre Fähigkeiten weiter zu verbessern, sollten Sie verschiedene Datenvisualisierungsplattformen wie Snowflake, Clickhouse und AWS erkunden. Diese Plattformen können nahtlos mit Python und Matplotlib integriert werden und bieten einen umfassenden Workflow für Datenanalyse und -visualisierung.

Denken Sie daran, die Beherrschung von Matplotlib ist ein Marathon, kein Sprint. Gehen Sie also einen Plot nach dem anderen an!