Jak zastosować filtr Sobel do wykrywania krawędzi za pomocą poduszki?

Aug 08, 2025

Zostaw wiadomość

Wykrywanie krawędzi jest podstawową techniką w przetwarzaniu obrazu, używana do identyfikacji granic obiektów na obrazie. Jedną popularną metodą wykrywania krawędzi jest filtr Sobel, który oblicza gradient intensywności obrazu. Na tym blogu zbadamy, jak zastosować filtr Sobel do wykrywania krawędzi za pomocą Pillow, potężnej biblioteki Python do przetwarzania obrazu. Jako dostawca poduszek cieszymy się, że możemy podzielić się tym z Tobą w Głębokim Przewodniku.

Zrozumienie filtra Sobel

Filtr Sobel jest dyskretnym operatorem różnicowania, który oblicza przybliżenie gradientu funkcji intensywności obrazu. Składa się z dwóch jądra 3x3, jednej do wykrywania poziomych krawędzi, a drugi dla krawędzi pionowych.

Horyzontalne jądro Sobel (G_X) to:
[[[
G_x =
\ początek {bmatrix}
-1 i 0 i 1 \
-2 i 0 i 2 \
-1 i 0 i 1
\ end {bmatrix}
]

Pionowe jądro Sobel (G_Y) to:
[[[
G_y =
\ początek {bmatrix}
-1 i -2 i -1 \
0 i 0 i 0 \
1 i 2 i 1
\ end {bmatrix}
]

Gdy ziarna te są zawijane obrazem, obliczają pierwsze - zamówione poziome i pionowe pochodne obrazu. Wielkość gradientu można następnie obliczyć przy użyciu wzoru (\ sqrt {g_x^2 + g_y^2}), a kierunek gradientu jest podany przez (\ arctan (\ frac {g_y} {g_x})).

Wymagania wstępne

Zanim zaczniemy, upewnij się, że zainstalujesz poduszkę. Możesz go zainstalować za pomocąpypeć:

PIP zainstaluj poduszkę

Zastosowanie filtra Sobel z poduszką

Zacznijmy od zaimportowania niezbędnych bibliotek i załadowania obrazu:

Z Image Image ImageFilter Image Import Numpy jako NP # Załaduj obraz obraz = image.open ('your_image.jpg'). konwersja ('l') # konwersja na szarość szarości

Tutaj konwertujemy obraz na wcale szarości, ponieważ filtr Sobel działa na obrazach pojedynczych kanałów.

Następnie zdefiniujemy jądra Sobel i zempimy je obrazem:

# Zdefiniuj jądra sobel sobel_x = np.array ([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1])) sobel_y = np.array ([[-1, -2, -1], [0, 0, 0], [1, 2, 1]) Z ziarnami Sobel G_X = np.zeros_ podobne (image_array) g_y = np.zeros_ podobne (image_array), cols = image_array.Shape for i w zakresie (1, rzędy - 1): dla J in Range (1, cols - 1): g_x [i, j] = np.sum (sobel_x * i image_array [i - 1: I + 2, J - 1): + 2]) g_y [i, j] = np.sum (sobel_y * image_array [i - 1: i + 2, j - 1: j + 2])

Po obliczeniu (G_X) i (G_Y) możemy obliczyć wielkość gradientu:

Memory Foam PillowHousehold Pillow

# Oblicz wielkość gradientu Gradient_Magnitude = np.sqrt (g_x ** 2 + g_y ** 2) # znormalizuj wielkość gradientu do zakresu [0, 255] gradient_magnitude = (gradient_magnitude / np.max (gradient_magnitude)*255) .astype (np.uint8) # przekształcanie płuc. edge_image = image.fromarray (gradient_magnitude) # Zapisz krawędź - wykryty obraz edge_image.save ('edge_detted_image.jpg')

Używając zbudowanej poduszki - w filtrach

Poduszka zapewnia również niektóre zbudowane - w filtrach, które można użyć do wykrywania krawędzi. Na przykładFind_edgesfiltr:

# Użyj poduszki Zbudowany - w wykrywaniu krawędzi filtru Edge_Image_BuiltIn = image.filter (imageFilter.find_Edges) edge_image_builtin.save ('EGDE_DETECED_IMAGE_BUILTIN.JPG')

Ta metoda jest prostsza, ale może nie być tak elastyczna, jak wdrożenie filtra Sobel od zera.

Porównanie wyników

Porównując wyniki niestandardowego - zaimplementowanego filtra sobelowego i zbudowanego - wFind_edgesFiltr, zauważysz, że niestandardowa implementacja zapewnia większą kontrolę nad procesem wykrywania krawędzi. Możesz dostosować jądra, sposób obliczania wielkości gradientu i innych parametrów zgodnie z twoimi konkretnymi potrzebami.

Praktyczne zastosowania wykrywania krawędzi

Wykrywanie krawędzi ma wiele praktycznych zastosowań. W wizji komputerowej jest używany do rozpoznawania obiektów, segmentacji obrazu i wykrywania ruchu. Na przykład w systemie samochodów napędzających detekcję krawędzi może pomóc zidentyfikować granice innych pojazdów, pieszych i znaków drogowych.

W dziedzinie obrazowania medycznego wykrywanie krawędzi można wykorzystać do identyfikacji granic narządów i guzów w promieniach X, MRI i CT. Informacje te są kluczowe dla diagnozy i planowania leczenia.

Nasze produkty poduszki

Jako dostawca poduszek oferujemy szeroką gamę poduszek wysokiej jakości, aby zaspokoić Twoje potrzeby. Czy szukaszPoduszka z pianki pamięciTo zapewnia doskonałe wsparcie i komfort lubPoduszka gospodarstwa domowegoDo codziennego użytku mamy Cię objęty. Nasze poduszki są wykonane z najlepszych materiałów i są zaprojektowane w celu zapewnienia dobrego snu.

Skontaktuj się z nami w celu zamówienia

Jeśli chcesz kupić nasze poduszki lub masz pytania dotyczące naszych produktów, zachęcamy do skontaktowania się z nami w celu omówienia zamówień. Jesteśmy zaangażowani w zapewnianie najlepszych produktów i usług. Nasz zespół ekspertów jest gotowy pomóc w znalezieniu idealnych poduszek do twoich potrzeb.

Odniesienia

  • Gonzalez, RC i Woods, RE (2008). Cyfrowe przetwarzanie obrazu. Pearson.
  • Oficjalna dokumentacja poduszki: https://pillow.readthedocs.io/en/stable/

Wyślij zapytanie