![]() |
Pełny kod źródłowy |
Pierwsza aplikacja (używam też nazwy moduł GUI) została poświęcona algorytmowi Działów wodnych. Jej celem jest nie tylko uruchomienie tego algorytmu, ale również odpowiednie przygotowanie danych wejściowych. Dla niewtajemniczonych przypomnę, że algorytm ten umożliwia segmentację obrazu - rozbicie na obszary, które powinny odpowiadać rzeczywistym obiektom. Jego działanie zależy od właściwego przygotowanie obrazów wejściowych. Jednym z nich powinien być obraz wskazujący punkty (lub obszary) startowe, od których rozpoczyna się proces tzw. zalewania. Drugi obraz określa obszar i kierunek, w którym to zalewanie następuje (więcej na ten temat poniżej).
Interfejs użytkownika
Okienko programu zostało podzielone na dwie części - lewa zawiera panel opcji, natomiast prawa podgląd obrazów wejściowych lub wyniki segmentacji. Obraz po wczytaniu (menu [File] → [Open oryginal image]) można poddać operacji negatywu [Invert] lub rozmyciu [Blur]. Ta druga operacja jest szczególnie zalecana ponieważ usuwa nadmiar szumu z obrazu, a tym samym zmniejsza ilość wynikowych segmentów. Następna opcja na panelu [Show] pozwala obejrzeć obraz, na podstawie którego wyliczany jest obszar zalewania (opcja [Image for computations]). Obraz ten można przygotować na dwa sposoby (panel [Set image for computations]):
- Obraz gradientowy [Gradient image] - wskazuje na granice obiektów,
- Mapa odległości [Distance map] - określa odległość od wcześniej obliczonych obiektów z wykorzystaniem opcji [Binary image] na panelu [Set initial image].
- Lokalne minima [Local minimum point] - punkty, których wszystkie sąsiednie punkty mają wyższe wartości,
- Obraz binarny [Binary image] - każdy obiekt jasny (biały) będzie podstawą do zbudowania osobnego segmentu,
- Ręczne zaznaczenie obszarów startowych [Marker].
A teraz krótko, co jest pod maską aplikacji, czyli jakie operatory Pandore są używane:
- pgaussianfiltering - rozmycie obrazu filtrem Gaussa,
- pbinarization - binaryzacja obrazu,
- psobel - jeden z operatorów gradientu,
- pdistance - mapa odległości,
- plocalminima - wyliczanie lokalnych minimów,
- pwatershed - algorytm działów wodnych.
Możlwości
Poniżej zostaną wskazane przykładowe sposoby wykorzystania aplikacji. Nie każda kombinacja omówionych powyżej opcji ma sens, dlatego posłużę się dwoma różnymi obrazami - obrazem naturalnym przedstawiającym chłopca w kapeluszu (przykład 1 i 2) i obrazem pokazującym kilka podobnych elementów (przykład 3, 4 i 5).
1. Automatyczna segmentacja obiektów.
- obraz do obliczeń: [Gradient image]
- punkty startowe: [Local minima point]
Komentarz: Pomimo rozmycia obrazu filtrem Gaussa o wartości sigma = 1,1 otrzymano znaczne rozdrobnienie segmentów. Dalsze zwiększanie tej wartości skutkowało powstawaniem błędnych obiektów, które zawierały fragmenty dwóch obiektów.
2. Manualna segmentacja obiektów.
- obraz do obliczeń: [Gradient image]
- punkty startowe: [Marker]
Komentarz: Zastosowanie obrazu gradientowego i manualnie wskazywanych znaczników (markerów) pozwala na poprawną segmentację obiektów.
3. Wyznaczenie strefy wpływu poszczególnych obiektów.
- obraz do obliczeń: [Distance map]
- punkty startowe: [Binary image]
Komentarz: Algorytm działów wodnych może służyć do wyznaczenia tzw. strefy wpływu poszczególnych obiektów. W tym celu należy wykonać binaryzację obrazu (tutaj wartość progowa wynosiła 100) i policzyć mapę odległości.
4. Automatyczna segmentacja obiektów.
- obraz do obliczeń: [Gradient image]
- punkty startowe: [Binary image]
Komentarz: Korzystając z wcześniej przygotowanego obrazu binarnego i obrazu gradientowego można wyznaczyć granice obiektów. Niestety został pominięty jeden element na obrazie. Powodem tego jest brak punktu startowego wskazującego tło. Można to oczywiści rozwiązać w podejściu automatycznym, jednak aplikacja nie ma na razie takiej opcji. Jak to zrobić za pomocą Pandore, opiszę niebawem.
5. Manualna segmentacja obiektów.
- obraz do obliczeń: [Gradient image]
- punkty startowe: [Marker]
Komentarz: Wskazany powyżej problem można oczywiście rozwiązać poprzez manualne zaznaczenie wszystkich obiektów i tła.
Aby prześledzić sposób obsługi programu zachęcam do obejrzenia krótkiego filmu. Zostały na nim jeszcze raz pokazane wszystkie opisane przed chwilą przypadki użycia, co powinno jeszcze lepiej przybliżyć czytelnikowi możliwości jego działania.
0 komentarze:
Prześlij komentarz