logo

Erozja i dylatacja obrazów przy użyciu OpenCV w Pythonie

Operacje morfologiczne modyfikują obrazy w oparciu o strukturę i układ pikseli. Stosują jądro do obrazu wejściowego w celu zmiany jego cech w zależności od rozmieszczenia sąsiadujących pikseli. Operacje morfologiczne, takie jak erozja i dylatacja, to techniki stosowane w przetwarzaniu obrazu, szczególnie w przypadku obrazów binarnych lub w skali szarości. Pomagają w analizie kształtów, usuwając szum i udoskonalając granice obiektów.

Erozja

Erozja w przetwarzaniu obrazu to operacja morfologiczna, która kurczy i rozrzedza granice obiektów na obrazie poprzez usuwanie pikseli na krawędziach obiektu, skutecznie zmniejszając obiekty i usuwając niewielki biały szum.

Zamiar

  • Zmniejsza lub niszczy granice obiektów na pierwszym planie (zwykle białe piksele).
  • Usuwa drobny biały szum i oddziela dotykające się obiekty.

Jak to działa

  • Jądro (zwykle macierz jedynek 3×3, 5×5 lub 7×7) przesuwa się po obrazie.
  • Piksel pozostaje biały (1) tylko wtedy, gdy wszystkie piksele pod jądrem są białe; w przeciwnym razie staje się czarny (0).
  • Proces ten zmniejsza rozmiar obiektu i powoduje erozję krawędzi.

Rozszerzanie się

Dylatacja to operacja morfologiczna, która rozszerza granice obiektów na obrazie poprzez dodanie pikseli do krawędzi obiektu, dzięki czemu obiekty wydają się większe i wypełniane są małe luki lub dziury.



Zamiar:

  • Rozszerza granice obiektów na pierwszym planie.
  • Podkreśla lub powiększa rysy twarzy i wypełnia małe szczeliny.

Jak to działa:

  • Jądro jest podobnie skręcone na obrazie.
  • Piksel jest ustawiony na biały (1), jeśli  przynajmniej jeden  odpowiednich pikseli pod jądrem jest biały.
  • W rezultacie białe obszary rosną, łącząc małe dziury lub łącząc ze sobą połamane części.

Implementacja erozji i dylatacji

Zaimplementujmy Erozję i Dylatację za pomocą OpenCV w Pythonie

pyton wyszukiwania binarnego

Krok 1: Importuj biblioteki

Zaimportujemy niezbędne biblioteki

  • CV2 : Biblioteka OpenCV do przetwarzania obrazów.
  • tępy : Do operacji numerycznych i tworzenia jąder.
  • matplotlib.pyplot : Aby wyświetlić obrazy w notatnikach.

Krok 2: Załaduj obraz wejściowy i zdefiniuj elementy strukturalne (jądro)

Jądro definiuje otoczenie operacji. Typowymi wyborami są prostokąty lub dyski.

Wykorzystany obraz można pobrać ze strony Tutaj .

Python
img = cv2.imread('input.webp' 0) plt.imshow(img cmap='gray') plt.title('Original Image') plt.axis('off') plt.show() kernel = np.ones((5 5) np.uint8) 

Wyjście:

selektor dokumentu.zapytania
oryginalny-kot' title=Oryginalny

Krok 3: Zastosuj erozję

Erozja działa poprzez przesuwanie jądra po obrazie. Piksel pozostaje biały (255) tylko wtedy, gdy wszystkie piksele pod jądrem są białe, w przeciwnym razie staje się czarny (0). Zmniejsza to granice obiektów i usuwa niewielki biały szum.

Python
img_erosion = cv2.erode(img kernel iterations=1) plt.imshow(img_erosion cmap='gray') plt.title('After Erosion') plt.axis('off') plt.show() 

Wyjście:

erozja' loading='lazy' title=Po erozji

Krok 4: Zastosuj dylatację

Dylatacja przesuwa jądro po obrazie, a piksel staje się biały, jeśli co najmniej jeden piksel pod jądrem jest biały. Pogrubia to białe obszary lub obiekty i wypełnia małe dziury.

przykłady programowania w Pythonie
Python
img_dilation = cv2.dilate(img kernel iterations=1) plt.imshow(img_dilation cmap='gray') plt.title('After Dilation') plt.axis('off') plt.show() 

Wyjście:

rozszerzanie się' loading='lazy' title=Po dylatacji

Aplikacje

Erozja

  • Usuwanie izolowanego białego szumu z obrazu.
  • Oddzielanie obiektów, które są połączone lub stykają się.
  • Znajdowanie granic obiektu poprzez zmniejszanie rozmiaru obiektu.

Rozszerzanie się

  • Wypełnianie małych dziur lub luk w obiektach.
  • Łączenie uszkodzonych lub odłączonych części tego samego obiektu.
  • Używany po erozji (w ramach operacji „otwierania”) w celu przywrócenia rozmiaru obiektu przy jednoczesnym usunięciu szumu.

Erozja i dylatacja to podstawowe operacje morfologiczne w przetwarzaniu obrazu, które pozwalają nam udoskonalać czyste obrazy i manipulować kształtami. Dzięki zastosowaniu prostych elementów strukturalnych techniki te pomagają usunąć szum, oddzielając lub łącząc obiekty i ulepszając funkcje obrazu, co czyni je niezbędnymi narzędziami do skutecznego przetwarzania wstępnego i analizy w zadaniach związanych z wizją komputerową za pomocą OpenCV i Python.

Utwórz quiz