Analiza obrazów - sprawozdanie nr 3
Transkrypt
Analiza obrazów - sprawozdanie nr 3
Natalia Kolasa Analiza obrazów - sprawozdanie nr 3 Przekształcenia morfologiczne Przekształcenia morfologiczne wywodzą się z morfologii matematycznej, czyli dziedziny, która opiera się na teorii zbiorów, topologii i funkcjach losowych. Dotyczy ona przetwarzania i analizy struktur geometrycznych. W odróżnieniu od operacji punktowych, przekształcenia morfologiczne opierają się na związkach, które zachodzą pomiędzy analizowanym punktem, a jego sąsiedztwem. Z tego względu mają dużą złożoność obliczeniową. Dlatego stosowane są przede wszystkim przy przetwarzaniu obrazów binarnych. Podstawowe przekształcenia morfologiczne to: • • • erozja i dylatacja, otwarcie i zamknięcie, szkieletyzacja. Podstawowym terminem związanym z tego typu przekształceniami jest element strukturalny. Jest to zbiór punktów wykorzystywany przy przekształceniu. Można powiedzieć, że stanowi on szablon, który jest dopasowywany do kolejnych pikseli obrazu i jego sąsiedztwa. Na podstawie tego dopasowania określane jest czy w danym punkcie dochodzi do wykonania operacji związanej z danym przekształceniem. Elementy strukturalne mogą mieć różne wielkości i kształty. Przekształcenia morfologiczne należą do jednych z najważniejszych algorytmów w analizie obrazów. Dzięki analizowaniu sąsiedztwa danego punktu pozwalają bowiem na złożone operacje związane z badaniem kształtów obrazu. Oprócz tego używane są przy algorytmach segmentacji obrazu, a także przy poprawie jego jakości. 1. Przekształcenia morfologiczne obrazu rzeczywistego i nierzeczywistego Implementacja przykładów do obrazu rzeczywistego i nierzeczywistego znajdują się odpowiednio w plikach: PrzekszMorfologiczne2.m i PrzekszMorfologiczne.m. We wszystkich poniższych przykładach zastosowanym elementem strukturalnym jest obiekt ball o parametrach 10 oraz 4. Został stworzony przy pomocy funkcji strel programu Matlab. Każde przekształcenie morfologiczne zostało wykonany za pomocą funkcji wbudowanych takich jak: imdilate, imerode, imopen oraz imclose. a) Obraz nierzeczywisty o Erozja i dylatacja Erozja i dylatacja to jedne z podstawowych przekształceń morfologicznych. Można powiedzieć, że są względem siebie odwrotne. Erozja polega na obcinaniu brzegów obiektu na obrazie. Na obrazach binarnych erozję możemy więc interpretować jako odcięcie pewnego pasa 1 Natalia Kolasa o zadanej szerokości wzdłuż brzegu obiektów. Do jej praktycznych zastosowań można zaliczyć więc usuwanie drobnych szczegółów na obrazie i wygładzanie brzegów obiektów. Erozja powoduję więc generalizację obrazu. Dylatację natomiast można interpretować jako dodanie pasa o zadanej szerokości wzdłuż brzegu obiektów. Służy ona więc do zamykania małych otworów oraz zatok, a jeśli obiekty położone są blisko siebie, to dochodzi do ich połączenia. Dylatacja podobnie jak erozja prowadzi do generalizacji obrazu, ale w tym wypadku dochodzi do zwiększenia obiektów, wygładzenia brzegów obszaru i usunięcia drobnych wklęsłości na obiektach. Wynik zastosowania erozji: Jak widać na powyższym obrazku po dokonaniu erozji doszło do odcięcia fragmentów obiektów na obrazie wzdłuż ich brzegów, co zmniejszyło wielkość poszczególnych elementów. W przypadku obiektów o niewielkiej wielkości doszło do ich całkowitego usunięcia. Wynik zastosowania dylatacji: 2 Natalia Kolasa Jak widać na powyższym obrazku po dokonaniu dylatacji doszło do pogrubienia brzegów poszczególnych obiektów, przez co stały się one większe. W niektórych przypadkach doszło nawet do połączenia niektórych obiektów w jeden. o Otwarcie i zamknięcie Otwarcie i zamknięcie to operacje, które zostały wprowadzone w celu wyeliminowania wad związanych z erozją i dylatacją. Podczas ich zastosowania dochodzi bowiem do znacznych zmian pól powierzchni przekształcanych obiektów; w przypadku erozji do ich zmniejszenia, natomiast w przypadku dylatacji do zwiększenia. Otwarcie i zamknięcie stanowią złożenie operacji erozji i dylatacji w odpowiedniej kolejności. W przypadku otwarcia najpierw następuje erozja, a następnie dylatacja. Natomiast w przypadku zamknięcia odwrotnie. Dzięki temu nie zmieniają one kształtu obiektów o równym gładkim brzegu. Otwarcie pozwala na rozłączenie elementów obrazu z przewężeniami oraz usuwa z obrazów drobne obiekty oraz wypustki figur, nie zmieniając przy tym kształtu podstawowej części obiektu. Zamknięcie pozwala natomiast na połączenie obiektów leżących blisko siebie. Dodatkowo umożliwia zamknięcie wąskich szczelin i zatok. Wynik zastosowania otwarcia: Jak widać na powyższym przykładzie zastosowanie otwarcia spowodowało, że niewielkie elementy obrazu zniknęły, niektóre obiekty zostały otwarte. W przypadku koła z obręczami, znajdującego się w dolnej części obrazka, zastosowanie tego przekształcenia spowodowało, że główna część figury została niezmieniona zniknęły natomiast obręcze, które stanowiły wspomniane wcześniej wypustki. 3 Natalia Kolasa Wynik zastosowania zamknięcia: W wyniku zastosowania zamknięcia elementy na obrazie, które posiadały niewielkie szczeliny zostały zamknięte. Zmniejszyły się również otwory znajdujące się w poszczególnych elementach. W przypadku dwóch wielokątów, znajdujących się w środkowej części powyższego obrazka, doszło do ich połączenia. b) Obraz rzeczywisty W związku z tym, że zastosowanie powyższych przekształceń morfologicznych nie pokazało wszystkich jej istotnych cech poniżej znajdują się przykłady ich zastosowania do obrazu rzeczywistego. o Erozja i dylatacja Wynik zastosowania erozji: 4 Natalia Kolasa Jak widać obraz rzeczywisty po zastosowaniu erozji uległ generalizacji. Widoczne wcześniej szczegóły stały się niedostrzegalne. Zastąpiły je grube plamy symbolizujące najbardziej istotne elementy, w wypadku postaci są to oczy, nos i włosy. Erozji uległy przede wszystkim jasne elementy. Zostały znacznie bardziej rozmazane i niewidoczne. Wynik zastosowania dylatacji: Powyższy przykład doskonale pokazuje, że dylatacja jest przekształceniem, które działa odwrotnie niż erozja. Tutaj również obraz uległ generalizacji, ale w tym wypadku brzegi jasnych elementów zostały pogrubione, przez co to właśnie jaśniejsze elementy zostały bardziej wydobyte i stały się widoczne. o Otwarcie i zamknięcie Wynik zastosowania otwarcia: Jak widać otwarcie jest doskonalszym odpowiednim przekształcenia jakim jest erozja. Tutaj podobnie jak w pierwszym przykładzie jasne elementy zostały pomniejszone i uległy erozji 5 Natalia Kolasa przez co lepiej widoczne są ciemniejsze części obrazu. Zdjęcie nie jest jednak tak rozmazane jak wcześniej, co umożliwia lepszą jego późniejszą analizę. Wynik zastosowania zamknięcia: Powyższy przykład również udowadnia prawdziwość stwierdzenia, że operacje otwarcia i zamknięcia wyeliminowują wady związane z erozją i dylatacją. W tym wypadku zamknięcie, które jest doskonalsze niż dylatacja, również działa podobnie jak swój odpowiednik, ale nie pogarsza tak jakości obrazu. Nie jest on aż tak rozmazany jak wcześniej. Obraz ponownie uległ generalizacji, ale tutaj w przeciwieństwie do otwarcia jaśniejsze elementy uległy pogrubieniu. 2. Szkieletyzacja Implementacja przykładu znajduje się w plikach: Szkieletyzacja.m oraz Szkieletyzacja2.m. Szkieletyzacja obrazu polega na wydobyciu szkieletów obiektów znajdujących się na obrazie zbinaryzowanym. Szkielet jest to zbiór punktów, które są równoodległe od co najmniej dwóch punktów należących do brzegu figury. Algorytm tego przekształcenia polega więc na usuwaniu pikseli wzdłuż granic obiektów tak długo, aż powstanie szkielet. Dzięki szkieletyzacji możliwe jest między innymi rozdzielenie posklejanych figur, przeprowadzenie ich klasyfikacji na podstawie kształtu oraz określenie orientacji podłużnych obiektów. Istnieje kilka rodzaji szkieletyzacji. W poniższym przykładzie zastosowany został algorytm szkieletyzacji poprzez maskę. Użyta maska: 1 0 1 1 1 Piksel, który jest aktualnie sprawdzany symbolizuje środkowy element macierzy. Aby maska została spełniona sąsiednie piksele muszą mieć odpowiednie wartości, zgodne z podanymi w masce. Możliwe są trzy warianty: wartość 1, 0 lub X. Wartość 1 oznacza, że dany piksel powinien być czarny, 6 Natalia Kolasa natomiast 0 biały. Znak X oznacza, że wartość piksela w danym miejscu nie ma znaczenia dla działania algorytmu. Przebieg algorytmu: - każdy czarny piksel obrazu zbinaryzowanego należy przyrównać do powyższej maski oraz jej obrotów o 90°, 180° oraz 270°; jeśli otoczenie piksela spełnia warunki narzucone w masce do kopii należy wstawić biały piksel, natomiast jeśli maska nie została spełniona należy wstawić czarny piksel, -oryginalny obrazek należy zastąpić kopią, -czynności należy powtarzać tak długo, aż na obrazie nie będą już zachodziły żadne zmiany. W celu poprawnego działania algorytmu należy wokół obrazka zrobić białą ramkę o szerokości jednego piksela. Poniższy przykład przedstawia jak podany algorytm szkieletyzacji zadziałał na obraz nierzeczywisty: Jak widać z każdej figury udało się wydobyć jej szkielet, który stanowią pojedyncze linie. Składają się na nie punkty, które są równoodległe od co najmniej dwóch punktów należących do brzegu figury, co doskonale widać na powyższym obrazku. 7 Natalia Kolasa Przykład zastosowania danego algorytmu na obrazie rzeczywistym przedstawionym poniżej: Aby możliwe było wykonanie szkieletyzacji obraz został wcześniej zbinaryzowany z progiem dolnym równym 50. Wartości pikseli na obrazie mogły mieć bowiem tylko wartości białe lub czarne. Jak widać na powyższym obrazku opisany wcześniej algorytm pozwolił na wydobycie szkieletów elementów obrazu. Otrzymany efekt zależy od dobrania sposobu binaryzacji oraz jej progu. Im zostanie on lepiej określony tym na przykład zostanie utraconych mniej szczegółów. Jak widać na obrazku w wyniku binaryzacji zostały utracone informacje dotyczące prawej części obrazka, więc nie mogły zostać uwzględnione przy szkieletyzacji. 3. Segmentacja Implementacja przykładu znajduje się w plikach: Segmentacja.m oraz FunkcjaDoSegmentacji.m. Segmentacja obrazu jest to proces, który polega na podziale obrazu na części, które charakteryzuje pewna jednorodność, pod względem wybranych własności. Wybranymi kryteriami 8 Natalia Kolasa jednorodności mogą być między innymi; barwa obrazu bądź poziomy szarości. Segmentacja umożliwia podział obrazu na obiekty. Segmentacja jest jednym z najtrudniejszych, ale i najważniejszych zagadnień w analizie obrazów. Istnieje wiele możliwości jej realizacji. Podstawowe metody można podzielić na oparte na obszarach, czyli bazujące na sąsiedztwie pod kątem jednorodności pikseli oraz oparte na ekstrakcji krawędzi, opierające się na wyznaczaniu granic i konturów obiektów. Omawiany sposób segmentacji opiera się na obszarach i łączy w sobie techniki ich podziału i rozrostu. Polega on na tym, że na początku obraz jest dzielony tak długo na podobszary, aż wszędzie zostanie spełniony warunek jednorodności. W wyniku tej operacji niektóre sąsiadujące ze sobą obszary, chociaż zostały wcześniej podzielone, mogą posiadać te same własności. Dlatego powinno nastąpić ich połączenie. Przykład podziału obrazu na fragmenty o jednakowej jednorodności: Jak widać na powyższym przykładzie po zastosowaniu techniki podziału obraz został podzielony na fragmenty o podobnych właściwościach. Oddzielne części stanowi tło, a oddzielne fragmenty postaci przedstawionej na zdjęciu. Przykład podziału obrazu z jeszcze większą dokładnością : 9