Pillow Python Image, früher PIL, ist eine Open-Source-Bibliothek, die speziell für die Verarbeitung von Bildern mit Python entwickelt wurde. Sie ist eine wahre Goldgrube für die Bearbeitung von Bilddateien. Entdecken wir gemeinsam einige der grundlegenden Funktionen dieser Referenzbibliothek.
Was ist eine Python-Bibliothek?
Die Python Imaging Library, kurz PIL, wurde ursprünglich 1995 von Fredrik Lundh entwickelt und war die Referenzbibliothek für die Bildverarbeitung unter Python. Nachdem sie 2009 aufgegeben wurde, übernahm Alex Clark den Quellcode des Projekts und veröffentlichte 2010 eine neue Version mit dem Namen Pillow, die PIL endgültig ersetzte.
Im Gegensatz zu anderen Bibliotheken, die nur nebenbei einige Methoden zur Bildverarbeitung anbieten, konzentriert sich Pillow fast ausschließlich auf diesen Bereich. Sie ist also viel umfassender und optimierter für die Bildbearbeitung.
Aus diesem Grund wird Pillow Python Image häufig in den wichtigsten Phasen eines Computer Vision- oder Videoverarbeitungsprojekts verwendet, obwohl es auch allgemeinere Bibliotheken wie OpenCV oder MoviePy gibt.
Insgesamt werden nicht weniger als 30 Bildformate von diesem Modul unterstützt. Zu den Formaten gehören die üblichen JPG-, PNG-, JPEG- und GIF-Dateien, aber auch speziellere Erweiterungen wie BLP (verwendet im berühmten Spiel World of Warcraft), DDS (auch in der Videospielindustrie weit verbreitet) oder FITS (verwendet in der Astronomie).
Eine der Hauptattraktionen von Pillow ist seine einfache Handhabung. Die Notationen sind natürlich und die zugrunde liegenden Klassen und Methoden wurden gut durchdacht, um die Benutzererfahrung zu erleichtern. Es ist dieser benutzerfreundliche Aspekt, den wir in diesem einführenden Artikel hervorheben wollen.
as Ziel ist es, eine Reihe von Methoden vorzustellen, die du verwenden wirst, von den einfachsten bis zu den etwas anspruchsvolleren.
Pillow Python Image: Die Image-Klasse im Zentrum von Pillow
Ein Bild in Python importieren
Innerhalb dieser umfangreichen Bibliothek gibt es eine Klasse mit dem schlichten Titel Image. Diese Klasse enthält eine ganze Reihe von Methoden, die für den Einstieg in die Bildverarbeitung wichtig sind. Im Folgenden sehen wir uns ein sehr einfaches Beispiel an:
Der erste Schritt besteht darin, die Klasse Image aus dem PIL-Modul zu importieren. Anstatt die gesamte Pillow-Bibliothek zu importieren, ist es eine gute Idee, nur die Elemente hinzuzufügen, die für unser Projekt relevant sind.
Als Nächstes deklarieren wir eine Variable im vom Typ Bild über die Methode open(). Einfach ausgedrückt, haben wir die Bilddatei logoDST.jpg in der neuen Variablen gespeichert.
Die dritte Zeile zeigt auf der Konsole einige Eigenschaften der Datei an, die in den verschiedenen Attributen der Klasse verfügbar sind: Format, Größe und Modus (Graustufen, RGB, CMYK…) und schließlich die letzte Zeile, um das fragliche Bild anzuzeigen. Beachte, dass bei einer .ipynb-Datei (Jupyter Notebook) diese Zeile durch display(im) ersetzt werden muss, um das betreffende Bild anzuzeigen!
Das Format ändern und eine Miniaturansicht erstellen
Wie bei jeder anständigen Bildbearbeitungssoftware kannst du die Art deiner Datei nach Belieben ändern:
Mit diesem Snippet kann eine Datei in das JPG-Format umgewandelt werden. Um ein bestimmtes Format anzugeben, musst du es im zweiten Parameter der Funktion save() erwähnen. Eine Anwendung dieses Prinzips ist im nächsten Snippet zu sehen, mit dem ein Miniaturbild für die .JPEG-Datei erstellt werden kann
Schließlich ist es auch möglich, das Format einer Datei mit dem folgenden Befehl zu erkennen:
Ein Bild im Handumdrehen umwandeln
Wie bereits im ersten Teil erwähnt, liegt der Hauptvorteil von Pillow in der großen Auswahl an Transformationsfunktionen und deren einfacher Bedienung.
Um diesen Teil zu veranschaulichen, werden wir eine Reihe von Transformationen an einem Quellbild durchführen.
Im Folgenden haben wir die Auswirkungen von fünf grundlegenden Transformationen auf ein Quellbild (das sogenannte „Original“) dargestellt.
Jeder Abbildung ist eine einzige Codezeile zugeordnet, die benötigt wird, um das angezeigte Bild zu erstellen. So kann im.convert(„L“) zum Beispiel den Modus des Bildes in Graustufen umwandeln, und genauso einfach können wir ein Bild croppen, transponieren, skalieren oder drehen.
Fotobearbeitung mit ImageEnhance
Das ImageEnhance-Modul enthält vier Klassen zur Steuerung von Parametern, die in der Fotobearbeitung üblich sind: Schärfe, Weißabgleich, Kontrast und Helligkeit.
Jede dieser Klassen enthält eine einzige Methode namens enhance(), die als Parameter einen numerischen Wert für den Verstärkungsfaktor annimmt: Ein Parameter von 1,0 gibt einfach eine exakte Kopie des eingegebenen Bildes zurück, ausgedrückt als Verhältnis.
Der Kontrast definiert die relative Skala des Unterschieds zwischen den hellen und dunklen Teilen eines Bildes. Der Weißabgleich (color balance) passt die Farbintensität an die Lichtverhältnisse an. Die Helligkeit wirkt sich im Gegensatz zum Kontrast auf die Gesamtklarheit des Bildes aus. Die Schärfe (sharpness) schließlich definiert die Feinheit der Details in einem Bild.
So kannst du deine Fotos mit wenigen Zeilen bearbeiten!
ImageFilter - ein erster Schritt in die Computer Vision
Wenn du dein Abenteuer in der Computer Vision fortsetzen möchtest, ist Pillow und das ImageFilter-Modul ein guter Einstieg in diese attraktive Welt. In diesem Modul finden wir die Gaußsche Unschärfe, die Detailverbesserung und die Prägung (embossing). Viele Computer Vision-Algorithmen erfordern diese Art von Filterung, vor allem bei der Erkennung von Konturen.
Um mehr über die Grundlagen von Computer Vision zu erfahren, kannst du unseren Artikel zu diesem Thema lesen.
Und noch viele mehr!
Wenn dir diese Einführung in die PIL-Bibliothek gefallen hat, solltest du wissen, dass dieser Artikel nur einen Bruchteil der Funktionen der Bibliothek behandelt hat! Es ist tatsächlich möglich, deine Bildbearbeitung komplexer zu gestalten, indem du z. B. eigene Formen erstellst und verschiedene Bilder zusammenfügst…