Maske anwenden
Auch wenn Masken binär sind, können sie auf Bilder angewendet werden, um Pixel herauszufiltern, bei denen die Maske False ist.
Die NumPy-Funktion where() ist eine flexible Möglichkeit, Masken anzuwenden. Sie nimmt drei Argumente entgegen:
np.where(condition, x, y)
condition, x und y können entweder Arrays oder Einzelwerte sein. So kannst du die ursprünglichen Bildwerte beibehalten und maskierte Werte auf 0 setzen.
Üben wir das Anwenden von Masken, indem wir die knochenähnlichen Pixel aus dem Röntgenbild der Hand (im) auswählen.
Diese Übung ist Teil des Kurses
<Kurs>Biomedizinische Bildanalyse mit Python</Kurs>Übungsanweisungen
- Erstelle eine boolesche Knochenmaske, indem du Pixel mit Werten größer oder gleich 145 auswählst.
- Wende die Maske mit
np.where()auf dein Bild an. Werte außerhalb der Maske sollen auf0gesetzt werden. - Erstelle ein Histogramm des maskierten Bildes. Verwende folgende Argumente, um nur von Null verschiedene Pixel zu berücksichtigen:
min=1,max=255,bins=255. - Zeichne das maskierte Bild und das Histogramm. Das wurde bereits für dich erledigt.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# Import SciPy's "ndimage" module
____
# Screen out non-bone pixels from "im"
mask_bone = ____
im_bone = np.where(____, ____, ____)
# Get the histogram of bone intensities
hist = ____
# Plot masked image and histogram
fig, axes = plt.subplots(2,1)
axes[0].imshow(im_bone)
axes[1].plot(hist)
format_and_render_plot()