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>Instructions de l’exercice
- Appliquez
ndi.sobel()àimle long du premier et du second axes. - Calculez la magnitude globale du contour à l'aide du théorème de Pythagore. Utilisez
np.sqrt()etnp.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()