Die heutige Welt ist voll von Daten aller Art, und Bilder sind ein äußerst wichtiger Teil davon. Damit es jedoch nützlich ist, müssen wir diese Bilder verarbeiten. Bei der Bildverarbeitung handelt es sich um den Prozess der Analyse und Bearbeitung digitaler Bilder mit dem Ziel, ihre Qualität zu verbessern oder Informationen aus ihnen zu extrahieren und sie dann auf irgendeine Weise zu verwenden.
Zu den üblichen Aufgaben in der Bildverarbeitung gehören das Anzeigen von Bildern, grundlegende Vorgänge (wie Zuschneiden, Spiegeln, Drehen usw.), Bildsegmentierung, Klassifizierung und Merkmalsextraktion, Bildwiederherstellung und Bilderkennung usw. Python ist die beste Wahl für Bildverarbeitungsaufgaben, da diese wissenschaftliche Programmiersprache immer beliebter wird und zahlreiche hochmoderne Bildverarbeitungstools kostenlos verfügbar sind.
Werfen wir einen Blick auf einige gängige Python-Bibliotheken, die für Bildverarbeitungsaufgaben verwendet werden.
scikit-image ist ein Open-Source-Python-Paket, das auf Numpy-Arrays basiert. Es implementiert Algorithmen und Dienstprogramme für Forschung, Bildung und industrielle Anwendungen. Es ist eine ziemlich einfache Bibliothek, selbst für Python-Neulinge. Der Code der Bibliothek ist von sehr hoher Qualität und wurde einem Peer-Review unterzogen und von einer aktiven Gemeinschaft von Freiwilligen geschrieben.
Anwendungsbeispiele: Bildfilterung, Vorlagenabgleich.
Sie können „skimage“ verwenden, um diese Bibliothek zu importieren. Die meisten Funktionen sind in Submodulen zu finden.
import matplotlib.pyplot as plt %matplotlib inline from skimage import data,filters image = data.coins() # ... or any other NumPy array! edges = filters.sobel(image) plt.imshow(edges, cmap='gray')
Vorlagenabgleich (mithilfe der Funktion match_template)
Numpy ist eine der Kernbibliotheken der Python-Programmierung und unterstützt Array-Strukturen. Bilder sind im Wesentlichen Standard-Numpy-Arrays, die Pixel von Datenpunkten enthalten. Daher können die Pixelwerte eines Bildes durch die Verwendung grundlegender NumPy-Operationen – wie Slicing, Maskierung und ausgefallene Indizierung – geändert werden. Bilder können mit skimage geladen und mit matplotlib angezeigt werden.
Anwendungsbeispiel: Verwenden Sie Numpy, um Bilder zu desensibilisieren:
import numpy as np from skimage import data import matplotlib.pyplot as plt %matplotlib inline image = data.camera() type(image) numpy.ndarray #Image is a numpy array mask = image < 87 image[mask]=255 plt.imshow(image, cmap='gray')
Scipy ist ein weiteres wissenschaftliches Kernmodul von Python, genau wie Numpy, es kann für grundlegende Bildverarbeitungs- und Verarbeitungsaufgaben verwendet werden. Erwähnenswert ist, dass das Submodul scipy.ndimage Funktionen bereitstellt, die auf n-dimensionalen NumPy-Arrays arbeiten. Das Paket umfasst derzeit Funktionen wie lineare und nichtlineare Filterung, binäre Morphologie, B-Spline-Interpolation und Objektmessungen.
Anwendungsbeispiel: Verwenden Sie den Gaußschen Filter von SciPy, um das Bild unscharf zu machen:
from scipy import misc,ndimage face = misc.face() blurred_face = ndimage.gaussian_filter(face, sigma=3) very_blurred = ndimage.gaussian_filter(face, sigma=5) #Results plt.imshow(<image to be displayed>)
PIL (Python Imaging Library) ist eine kostenlose Python-Programmiersprachenbibliothek, die Unterstützung für Öffnen, Verarbeiten und Speichern bietet Unterstützung für viele verschiedene Bilddateiformate. Die Entwicklung ist jedoch ins Stocken geraten und das letzte Update erfolgte im Jahr 2009. Glücklicherweise befindet sich bei PIL ein Fork namens Pillow in der aktiven Entwicklung, der sehr einfach zu installieren ist. Pillow läuft auf allen gängigen Betriebssystemen und unterstützt Python 3. Die Bibliothek enthält grundlegende Bildverarbeitungsfunktionen, einschließlich Punktoperationen, Filterung mithilfe einer Reihe integrierter Faltungskerne und Farbraumkonvertierung.
Anwendungsbeispiel: Verwenden Sie ImageFilter, um Bilder in Pillow zu verbessern:
from PIL import Image, ImageFilter #Read image im = Image.open( 'image.jpg' ) #Display image im.show() from PIL import ImageEnhance enh = ImageEnhance.Contrast(im) enh.enhance(1.8).show("30% more contrast")
OpenCV (Open Source Computer Vision Library) ist die am häufigsten verwendete Bibliothek für Computer-Vision-Anwendungen. OpenCV-Python ist die Python-API von OpenCV. OpenCV-Python ist nicht nur schnell (da das Backend aus in C/C++ geschriebenem Code besteht), sondern auch einfach zu programmieren und bereitzustellen (dank des Python-Wrappers im Frontend). Dies macht es zu einer hervorragenden Wahl für die Durchführung rechenintensiver Computer-Vision-Programme.
Anwendungsbeispiel: Verwenden Sie Pyramiden, um eine neue Frucht namens „Orapple“-Funktion zu erstellen
SimpleCV ist auch ein Open-Source-Framework zum Erstellen von Computer-Vision-Anwendungen. Es bietet Zugriff auf leistungsstarke Computer-Vision-Bibliotheken wie OpenCV, ohne dass Sie sich zunächst mit Bittiefe, Dateiformaten oder Farbräumen vertraut machen müssen. Es ist viel einfacher zu erlernen als OpenCV und wie der Slogan sagt: „Es macht Computer Vision einfach.“ Einige Punkte, die für SimpleCV sprechen, sind:
Anwendungsbeispiele
Mahotas ist eine weitere Computer-Vision- und Bildverarbeitungsbibliothek für Python. Es enthält traditionelle Bildverarbeitungsfunktionen (z. B. Filterung und morphologische Operationen) sowie modernere Computer-Vision-Funktionen zur Merkmalsberechnung (einschließlich Erkennung von Interessenpunkten und lokalen Deskriptoren). Die Schnittstelle ist in Python und damit für eine schnelle Entwicklung geeignet, die Algorithmen sind jedoch in C++ implementiert und auf Geschwindigkeit optimiert. Die Mahotas-Bibliothek ist schnell, ihr Code ist einfach und ihre Abhängigkeiten (von anderen Bibliotheken) sind minimal. Es wird empfohlen, die offizielle Dokumentation zu lesen, um mehr zu erfahren.
Verwendungsbeispiele
Die Mahotas-Bibliothek verwendet einfachen Code, um die Arbeit zu erledigen. Bei der Aufgabe „Findet Wally“ hat Mahotas mit sehr wenig Code großartige Arbeit geleistet.
ITK (Insight Segmentation and Registration Toolkit) ist ein plattformübergreifendes Open-Source-System, das Entwicklern einen vollständigen Satz an Softwaretools für die Bildanalyse bietet. Unter ihnen ist SimpleITK eine vereinfachte Schicht, die auf ITK aufbaut und darauf abzielt, den Einsatz in Rapid Prototyping, Bildung und Skriptsprachen zu fördern. SimpleITK ist ein Bildanalyse-Toolkit mit einer großen Anzahl von Komponenten, die allgemeine Filtervorgänge, Bildsegmentierung und -registrierung unterstützen. SimpleITK selbst ist in C++ geschrieben, steht aber für eine Vielzahl von Programmiersprachen, einschließlich Python, zur Verfügung.
Hier finden Sie eine Reihe von Jupyter-Notizbüchern, die veranschaulichen, wie Sie SimpleITK für Bildungs- und Forschungsaktivitäten verwenden. Das Notebook demonstriert die Verwendung von SimpleITK für die interaktive Bildanalyse mithilfe der Programmiersprachen Python und R.
Anwendungsbeispiele
Die folgende Animation ist eine Visualisierung des strengen CT/MR-Registrierungsprozesses, der mit SimpleITK und Python erstellt wurde.
pgmagick ist ein Python-basierter Wrapper für die GraphicsMagick-Bibliothek. Das Bildverarbeitungssystem GraphicsMagick wird manchmal als das Schweizer Taschenmesser der Bildverarbeitung bezeichnet. Es bietet eine leistungsstarke und effiziente Sammlung von Tools und Bibliotheken, die das Lesen, Schreiben und Bearbeiten von Bildern in mehr als 88 Hauptformaten unterstützen, darunter wichtige Formate wie DPX, GIF, JPEG, JPEG-2000, PNG, PDF, PNM und TIFF .
Verwendungsbeispiele: Bildskalierung, Kantenextraktion
Bildskalierung
Kantenextraktion
Verwendung: Pycairo kann Linien, Grundformen und radiale Verläufe zeichnen.
Die oben genannten sind einige kostenlose und hervorragende Python-Bibliotheken für die Bildverarbeitung. Einige davon sind Ihnen bereits bekannt oder haben sie bereits verwendet, andere sind möglicherweise neu für Sie. Dann ist es jetzt an der Zeit, loszulegen und es auszuprobieren!
Das obige ist der detaillierte Inhalt vonTop 10 Bildverarbeitungstools in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!