Appliquer un masque
Même si les masques sont binaires, on peut les appliquer aux images pour filtrer les pixels où le masque vaut False.
La fonction where() de NumPy est une manière souple d'appliquer des masques. Elle prend trois arguments :
np.where(condition, x, y)
condition, x et y peuvent être soit des tableaux, soit des valeurs scalaires. Cela vous permet de conserver les valeurs d'origine de l'image tout en remplaçant les valeurs masquées par 0.
Entraînons-nous à appliquer des masques en sélectionnant les pixels de type os dans la radiographie de la main (im).
Cet exercice fait partie du cours
<cours>Analyse d'images biomédicales en Python</cours>Instructions de l’exercice
- Créez un masque booléen des os en sélectionnant les pixels supérieurs ou égaux à 145.
- Appliquez le masque à votre image avec
np.where(). Les valeurs hors du masque doivent être mises à0. - Créez un histogramme de l'image masquée. Utilisez les arguments suivants pour ne sélectionner que les pixels non nuls :
min=1,max=255,bins=255. - Affichez l'image masquée et l'histogramme. Cela a été fait pour vous.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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()