CommencezCommencez gratuitement

Détecter les contours (2)

La détection de contours peut se faire selon plusieurs axes, puis être combinée en une seule valeur de contour. Pour des images 2D, les « cartes de contours » horizontale et verticale peuvent être combinées à l'aide du théorème de Pythagore :

$$z = \sqrt{x^2 + y^2}$$

Un détecteur de contours populaire est le filtre de Sobel. Le filtre de Sobel accorde un poids supplémentaire aux pixels centraux du détecteur :

weights = [[ 1,  2,  1], 
           [ 0,  0,  0],
           [-1, -2, -1]]

Dans cet exercice, améliorez votre détection précédente en fusionnant les résultats de deux images filtrées par Sobel pour créer une carte de contours composite.

Cette activité fait partie du cours

Analyse d'images biomédicales en Python

Voir le cours

Instructions de l’exercice

  • Appliquez ndi.sobel() à im le long du premier et du deuxième axe.
  • Calculez l'amplitude globale du contour à l'aide du théorème de Pythagore. Utilisez np.sqrt() et np.square().
  • Affichez l'image d'amplitude. Utilisez une carte de couleurs en niveaux de gris et définissez vmax à 75.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# Apply Sobel filter along both axes
sobel_ax0 = ndi.sobel(____, axis=____)
sobel_ax1 = ____

# Calculate edge magnitude 
edges = ____

# Plot edge magnitude
plt.imshow(____, ____, ____)
format_and_render_plot()
Modifier et exécuter le code