ÎncepețiÎncepe gratuit

Detectarea marginilor (1)

Filtrele pot fi folosite și ca „detectoare". Dacă o zonă a imaginii corespunde modelului de ponderare, valoarea returnată va fi foarte mare (sau foarte mică).

În cazul detectării marginilor, acel model reprezintă o schimbare de intensitate de-a lungul unui plan. Un filtru care detectează marginile orizontale ar putea arăta astfel:

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

În acest exercițiu, creează un detector de margini verticale și observă cât de bine funcționează pe radiografia mâinii (im).

Acest exercițiu face parte din cursul

Analiza imaginilor biomedicale în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Creează un array 3x3 de ponderi pentru filtru, care detectează schimbările de intensitate de la stânga la dreapta. Folosește doar valorile 1, 0 și -1.
  • Convoluează im cu detectorul de margini.
  • Reprezintă grafic marginile orizontale folosind colormap-ul seismic. Folosește vmin=-150 și vmax=150 pentru a ajusta scala colormap-ului.
  • Adaugă un colorbar și afișează rezultatele.

Exercițiu interactiv practic

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

# Set weights to detect vertical edges
weights = [[____], [____], [____]]

# Convolve "im" with filter weights
edges = ____

# Draw the image in color
plt.imshow(____, ____, vmin=-150, vmax=150)
____
format_and_render_plot()
Editează și rulează codul