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.
PythonWykorzystany obraz można pobrać ze strony Tutaj .
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 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:
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.
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:
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