Eine Bildverarbeitungspipeline
Dein Kollege hat eine Vorverarbeitungsfunktion für die Bilder der American Sign Language geschrieben, um die Genauigkeit deines Machine-Learning-Modells zu verbessern. Diese Funktion nimmt ein Graustufenbild und führt darauf eine Canny-Kantendetektion aus. Canny-Kantendetektion wird häufig in der klassischen Computer Vision verwendet und hebt die Kanten von Objekten in einem Bild hervor. Du möchtest sie auf alle Bilder in deinem Datensatz anwenden.
Die Funktion deines Kollegen ist in deiner Umgebung als compute_edges() verfügbar. Sie erwartet ein Bild mit den Dimensionen (1, h, w), wobei die Höhe h und die Breite w beliebige ganze Zahlen sein können.
Das Dask-Array deiner Bilder ist in der Umgebung als image_array verfügbar. Dieses Array hat die Form (N, h, w, 3), wobei N die Anzahl der Bilder ist und es 3 Kanäle für Rot, Blau und Grün gibt.
dask.array wurde bereits als da importiert.
Diese Übung ist Teil des Kurses
Parallele Programmierung mit Dask in Python
Anleitung zur Übung
- Wandle das Bild von Farbe in Graustufen um, indem du den Mittelwert entlang der letzten Dimension bildest.
- Verwende die Methode
.map_blocks()des Graustufen-Arrays, umcompute_edges()auf jedes Bild anzuwenden. - Wähle nur das nullte Kantenbild aus und berechne es.
- Nutze
plt.imshow(), um die Kanten zu plotten.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Convert the color photos to grayscale
grayscale_images = ____
# Apply the edge detection function
edge_images = ____.____(____)
# Select the zeroth image and compute its values
sample_image = ____
# Show the result
____(____, cmap='gray')
plt.show()