Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Zastosuj ndi.sobel() do im wzdłuż pierwszej i drugiej osi.
  • Oblicz łączną intensywność krawędzi, korzystając z twierdzenia Pitagorasa. Użyj np.sqrt() i np.square().
  • Wyświetl obraz intensywności. Użyj skali szarości i ustaw vmax na 75.

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()
Edytuj i uruchom kod