Detektera kanter (2)
Kantdetektering kan utföras längs flera axlar och sedan kombineras till ett enda kantvärde. För 2D-bilder kan de horisontella och vertikala "kantkartorna" kombineras med Pythagoras sats:
$$z = \sqrt{x^2 + y^2}$$
Ett populärt kantdetekteringsfilter är Sobelfiltet. Sobelfiltet ger extra vikt till detektorns mittenpixlar:
weights = [[ 1, 2, 1],
[ 0, 0, 0],
[-1, -2, -1]]
I den här övningen förbättrar du din tidigare detektering genom att slå samman resultaten från två Sobel-filtrerade bilder till en sammansatt kantkarta.
Den här övningen är en del av kursen
Biomedicinsk bildanalys i Python
Övningsinstruktioner
- Applicera
ndi.sobel()påimlängs den första och den andra axeln. - Beräkna den totala kantmagnitudens med Pythagoras sats. Använd
np.sqrt()ochnp.square(). - Visa magnitudbilden. Använd en gråskalekarta och sätt
vmaxtill75.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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()