Aan de slagBegin gratis

Randen detecteren (1)

Filters kunnen ook gebruikt worden als "detectors". Als een deel van de afbeelding past bij het wegingspatroon, zal de geretourneerde waarde heel hoog (of heel laag) zijn.

Bij randdetectie is dat patroon een verandering in intensiteit langs een vlak. Een filter dat horizontale randen detecteert, kan er zo uitzien:

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

Maak in deze oefening een detector voor verticale randen en kijk hoe goed die presteert op de röntgenfoto van de hand (im).

Deze oefening maakt deel uit van de cursus

Biomedische beeldanalyse met Python

Bekijk cursus

Oefeninstructies

  • Maak een 3x3-array met filtergewichten die detecteert wanneer de intensiteit van links naar rechts verandert. Gebruik alleen de waarden 1, 0 en -1.
  • Convolveer im met de randdetector.
  • Plot de horizontale randen met de seismic-kleurenkaart. Gebruik vmin=-150 en vmax=150 om je kleurenkaartschaal aan te passen.
  • Voeg een colorbar toe en render de resultaten.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

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