CommencerCommencez gratuitement

Détecter les contours (2)

La détection de contours peut s'effectuer le long de plusieurs axes, puis être combinée en une valeur de contour unique. Pour les 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 courant est le filtre de Sobel. Le filtre de Sobel donne plus de poids aux pixels centraux du détecteur :

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

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

Cet exercice fait partie du cours

<cours>Analyse d'images biomédicales en Python</cours>
Voir le cours

Instructions de l’exercice

  • Appliquez ndi.sobel() à im le long du premier et du second axes.
  • Calculez la magnitude globale du contour à l'aide du théorème de Pythagore. Utilisez np.sqrt() et np.square().
  • Affichez l'image de magnitude. Utilisez une carte de couleurs en niveaux de gris et fixez 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