Kanten erkennen (2)
Die Kantenerkennung kann entlang mehrerer Achsen durchgeführt und anschließend zu einem einzelnen Kantenwert kombiniert werden. Bei 2D-Bildern lassen sich die horizontalen und vertikalen „Karten der Kanten" mithilfe des Satzes des Pythagoras zusammenführen:
$$z = \sqrt{x^2 + y^2}$$
Ein verbreiteter Kantendetektor ist der Sobel-Filter. Der Sobel-Filter gewichtet die mittleren Pixel des Detektors stärker:
weights = [[ 1, 2, 1],
[ 0, 0, 0],
[-1, -2, -1]]
Verbessere in dieser Übung deinen vorherigen Detektionsversuch, indem du die Ergebnisse zweier mit dem Sobel-Filter bearbeiteter Bilder zu einer kombinierten Kantenkarte zusammenführst.
Diese Übung ist Teil des Kurses
<Kurs>Biomedizinische Bildanalyse mit Python</Kurs>Übungsanweisungen
- Wende
ndi.sobel()aufimentlang der ersten und zweiten Achse an. - Berechne die gesamte Kantenstärke mit dem Satz des Pythagoras. Verwende
np.sqrt()undnp.square(). - Zeige das Betragsbild an. Nutze eine Graustufenfarbkarte und setze
vmaxauf75.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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()