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

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

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:

oryginalny-kotOryginalny

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:

erozjaPo 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.

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ę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