Inizia subitoInizia gratis

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

Visualizza corso

Istruzioni dell'esercizio

  • Applica ndi.sobel() a im lungo il primo e il secondo asse.
  • Calcola la magnitudine complessiva del bordo usando il teorema di Pitagora. Usa np.sqrt() e np.square().
  • Mostra l'immagine della magnitudine. Usa una mappa di colori in scala di grigi e imposta vmax a 75.

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()
Modifica ed esegui il codice