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.
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:
selektor dokumentu.zapytania
OryginalnyKrok 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.
Pythonimg_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 erozjiKrok 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 PythoniePython
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 dylatacjiAplikacje
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