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
Oefeninstructies
- Maak een 3x3-array met filtergewichten die detecteert wanneer de intensiteit van links naar rechts verandert. Gebruik alleen de waarden
1,0en-1. - Convolveer
immet de randdetector. - Plot de horizontale randen met de
seismic-kleurenkaart. Gebruikvmin=-150envmax=150om 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()