Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Applicera ndi.sobel()im längs den första och den andra axeln.
  • Beräkna den totala kantmagnitudens med Pythagoras sats. Använd np.sqrt() och np.square().
  • Visa magnitudbilden. Använd en gråskalekarta och sätt vmax till 75.

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()
Redigera och kör kod