CommencerCommencez gratuitement

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>
Voir le 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, 0 et -1.
  • Convoluez im avec le détecteur de bords.
  • Tracez les bords horizontaux avec la palette de couleurs seismic. Utilisez vmin=-150 et vmax=150 pour 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()
Modifier et exécuter le code