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
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ă
imcu detectorul de margini. - Reprezintă grafic marginile orizontale folosind colormap-ul
seismic. Foloseștevmin=-150șivmax=150pentru 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()