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
Instrucțiuni pentru exercițiu
- Aplică
ndi.sobel()peimde-a lungul primei și celei de-a doua axe. - Calculează magnitudinea totală a marginilor folosind teorema lui Pitagora. Folosește
np.sqrt()șinp.square(). - Afișează imaginea magnitudinii. Folosește o hartă de culori în tonuri de gri și setează
vmaxla75.
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()