Détecter les bords (1)
Les filtres peuvent aussi être utilisés comme des « détecteurs ». Si une partie de l'image correspond au motif de pondération, la valeur renvoyée sera très élevée (ou très faible).
Dans le cas de la détection de bords, ce motif est un changement d'intensité le long d'un plan. Un filtre qui détecte les bords horizontaux pourrait ressembler à ceci :
weights = [[+1, +1, +1],
[ 0, 0, 0],
[-1, -1, -1]]
Dans cet exercice, créez un détecteur de bords verticaux et observez ses performances sur 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 tableau 3x3 de poids de filtre qui détecte un changement d'intensité de la gauche vers la droite. Utilisez uniquement les valeurs
1,0et-1. - Convoluez
imavec le détecteur de bords. - Tracez les bords horizontaux avec la palette de couleurs
seismic. Utilisezvmin=-150etvmax=150pour ajuster l'échelle de la palette. - Ajoutez une barre de couleurs et affichez le résultat.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Set weights to detect vertical edges
weights = [[____], [____], [____]]
# Convolve "im" with filter weights
edges = ____
# Draw the image in color
plt.imshow(____, ____, vmin=-150, vmax=150)
____
format_and_render_plot()