Wykrywanie krawędzi (2)
Wykrywanie krawędzi można przeprowadzić wzdłuż wielu osi, a następnie połączyć wyniki w jedną wartość. W przypadku obrazów 2D poziomą i pionową „mapę krawędzi" można scalić, korzystając z twierdzenia Pitagorasa:
$$z = \sqrt{x^2 + y^2}$$
Jednym z popularnych detektorów krawędzi jest filtr Sobela. Przypisuje on dodatkową wagę pikselom centralnym:
weights = [[ 1, 2, 1],
[ 0, 0, 0],
[-1, -2, -1]]
W tym ćwiczeniu udoskonalisz poprzednią metodę wykrywania krawędzi, łącząc wyniki dwóch obrazów przefiltrowanych filtrem Sobela w złożoną mapę krawędzi.
To ćwiczenie jest częścią kursu
Analiza obrazów biomedycznych w Pythonie
Instrukcje do ćwiczenia
- Zastosuj
ndi.sobel()doimwzdłuż pierwszej i drugiej osi. - Oblicz łączną intensywność krawędzi, korzystając z twierdzenia Pitagorasa. Użyj
np.sqrt()inp.square(). - Wyświetl obraz intensywności. Użyj skali szarości i ustaw
vmaxna75.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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()