wtorek, 31 sierpnia 2010

Moduły GUI do anlalizatora obrazu Pandore - Łączenie segmentów

Pełny kod źródłowy
Korzystając wyłącznie z algorytmu działów wodnych podczas segmentacji obrazu trudno uzyskać zadowalające efekty. Algorytm ten zależy nie tylko od ilości i położenia punktów startowych, ale również od obrazu wskazującego krawędzie. Jak można było przeczytać (i zobaczyć) w poprzednim wpisie, często dla obrazów o zróżnicowanym tle i niejednorodnych obiektach ilość segmentów jest znacznie wyższa od tej, którą byśmy sami wskazali. Warto zdawać sobie sprawę, że wskazane problemy w podobnym stopniu dotyczą wszystkich algorytmów segmentacji. Dlatego, aby poprawić jakość wyników celowe może się okazać wprowadzenie kolejnego etapu przetwarzania obrazu. Najczęściej stosuje się różnego rodzaju metody łączenia segmentów, tak aby ich wielkość lepiej odpowiadała wielkości rzeczywistych obiektów. Na szczęście analizator obrazu Pandore posiada zestaw popularnych operatorów służących do tego celu. Jednak są to operatory bez graficznego interfejsu użytkownika, przez co ich stosowanie może być kłopotliwe zarówno dla nowego użytkownika, który musi nauczyć się składni poszczególnych poleceń, jak również dla bardziej doświadczonego użytkownika, których od razu chce zobaczyć efekty ich działania po zmianie odpowiednich parametrów. Dlatego, podobnie jak w przypadku działów wodnych, przygotowałem graficzny interfejs, który ma ułatwiać korzystanie z operatorów łączenia segmentów dostępnych w Pandore. Jego pełny kod źródłowy na licencji BSD został umieszczony w publicznym repozytorium na GitHub.

Interfejs użytkownika

Okienko programu podobnie jak w przypadku modułu działów wodnych zostało podzielone na dwie części: panel opcji i ramkę wyświetlającą obrazy wejściowe lub wyniki działania wybranego algorytmu. Obrazy wejściowe mogą zostać otwarte za pomocą menu [File]. Mamy tutaj do wyboru następujące opcje:
  • [Open oryginal image] - otwarcie oryginalnego obrazka, który służy jedynie do prezentacji wyników,
  • [Open image for computation] - otwarcie obrazka, na podstawie którego będą wykonywane obliczenia spójności sąsiednich regionów; obraz ten warto wcześniej przygotować (można np. usunąć szum),
  • [Open prelabeled image] - poindeksowany obraz segmentów przygotowany za pomocą algorytmu działów wodnych lub innego algorytmu segmentacji.

Każdy z obrazów wejściowych jest wyświetlany automatycznie po otwarciu. Można je oczywiście w każdym momencie obejrzeć korzystając z ramki [Display] na panelu opcji. Poza wyświetleniem obrazów wejściowych w oryginalnej formie (3 pierwsze obrazki na rysunku poniżej), dodano jeszcze trzy opcje prezentujące w sposób graficzny wyniki łączenia segmentów (3 kolejne obrazki na rysunku poniżej):
  • [Color labeled image] - dla każdego segmentu zostaje przypisany losowy kolor; jeśli wybrane kolory nie są najlepiej dobrane można losować do skutku,
  • [Image with transparen labels] - kolorowe segmenty nanoszone są na obraz wejściowy; użytkownik ma możliwość zmiany ich przezroczystości,
  • [Image with border of labels] - na obrazie oryginalnym zaznaczane są kontury segmentów; istnieje możliwość określenia koloru.

Możliwości

W chwili obecnej program zawiera prawie wszystkie operatory łączenia segmentów dostępne w Pandore. Nie ma na razie operatora pmumfordshahmerging, który ma inną strukturę parametrów wywołania w porównaniu do pozostałych operatorów. Listę dostępnych w programie operatorów można zobaczyć na rysunku poniżej. Są to odpowiednio:pcontrastmerging, pentropymerging, pmeanmerging, puniformitymerging, pvariancemerging, pboundarymerging, phistomerging (wymieniam ponownie dodając odnośniki do oficjalnej dokumentacji).


Wybór określonego algorytmu powoduje jego automatyczne uruchomienie, a co zatem idzie wyświetlenie wyników jego działania. Dla każdego algorytmu dostępny jest opis jego działania (przycisk [?]) pochodzący z oficjalnej dokumentacji Pandore (pomoc jest on-line, dlatego do jej działania wymagane jest aktywne połączenie z Internetem). Dostępne są również podpowiedzi na suwakach opcji [Number of merging] i [Threshold].


Opisany interfejs działa w trybie pełnej interakcji. Zmiana algorytmu lub jego parametrów skutkuje natychmiastowym wyświetleniem wyników. Na szybkich komputerach sprawdza się to bardzo dobrze. Na starszych maszynach czas oczekiwania może być zauważalny.

Sposób działania opisanego programu można prześledzić na dołączonym filmie video.

0 komentarze:

Prześlij komentarz