ÎncepețiÎncepe gratuit

Detectează marginile (2)

Detectarea marginilor poate fi realizată pe mai multe axe, apoi combinată într-o singură valoare. Pentru imaginile 2D, hărțile de margini orizontale și verticale pot fi combinate folosind teorema lui Pitagora:

$$z = \sqrt{x^2 + y^2}$$

Un detector de margini popular este filtrul Sobel. Filtrul Sobel acordă o pondere suplimentară pixelilor din centrul detectorului:

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

În acest exercițiu, îmbunătățește detecția anterioară prin combinarea rezultatelor a două imagini filtrate cu Sobel într-o hartă compozită a marginilor.

Acest exercițiu face parte din cursul

Analiza imaginilor biomedicale în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Aplică ndi.sobel() pe im de-a lungul primei și celei de-a doua axe.
  • Calculează magnitudinea totală a marginilor folosind teorema lui Pitagora. Folosește np.sqrt() și np.square().
  • Afișează imaginea magnitudinii. Folosește o hartă de culori în tonuri de gri și setează vmax la 75.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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()
Editează și rulează codul