Aan de slagBegin gratis

Randen detecteren (2)

Randen detecteren kan langs meerdere assen gebeuren en daarna worden gecombineerd tot één randwaarde. Voor 2D-afbeeldingen kun je de horizontale en verticale "edge maps" combineren met de stelling van Pythagoras:

$$z = \sqrt{x^2 + y^2}$$

Een populaire randdetector is het Sobel-filter. Het Sobel-filter geeft extra gewicht aan de middelste pixels van de detector:

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

Verbeter in deze oefening je vorige detectiepoging door de resultaten van twee Sobel-gefilterde afbeeldingen samen te voegen tot één samengestelde edge map.

Deze oefening maakt deel uit van de cursus

Biomedische beeldanalyse met Python

Bekijk cursus

Oefeninstructies

  • Pas ndi.sobel() toe op im langs de eerste en tweede as.
  • Bereken de totale randgrootte met de stelling van Pythagoras. Gebruik np.sqrt() en np.square().
  • Toon de magnitude-afbeelding. Gebruik een grijswaarden-colormap en zet vmax op 75.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# 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()
Code bewerken en uitvoeren