Rilevare i bordi (2)
Il rilevamento dei bordi può essere eseguito lungo più assi e poi combinato in un unico valore di bordo. Per immagini 2D, le "mappe dei bordi" orizzontale e verticale possono essere combinate usando il teorema di Pitagora:
$$z = \sqrt{x^2 + y^2}$$
Un rilevatore di bordi molto usato è il filtro di Sobel. Il filtro di Sobel assegna un peso extra ai pixel centrali del rivelatore:
pesi = [[ 1, 2, 1],
[ 0, 0, 0],
[-1, -2, -1]]
In questo esercizio, migliora il lavoro precedente unendo i risultati di due immagini filtrate con Sobel in una mappa dei bordi composita.
Questo esercizio fa parte del corso
Analisi di immagini biomediche in Python
Istruzioni dell'esercizio
- Applica
ndi.sobel()aimlungo il primo e il secondo asse. - Calcola la magnitudine complessiva del bordo usando il teorema di Pitagora. Usa
np.sqrt()enp.square(). - Mostra l'immagine della magnitudine. Usa una mappa di colori in scala di grigi e imposta
vmaxa75.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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()