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
Instructions de l’exercice
- Appliquez
ndi.sobel()àimle 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()etnp.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()