spis treści 1 wstęp 4 2 przegląd literatury 6 3 projekt aplikacji

122

Upload: butest

Post on 12-Jan-2015

2.115 views

Category:

Documents


5 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji
Page 2: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Spis treści1 Wstęp................................................................................................................................ 4

2 Przegląd literatury............................................................................................................. 6

3 Projekt aplikacji................................................................................................................23

4 Wykorzystane algorytmy i metody..................................................................................27

4.1 Algorytmy ustawiające obrazy..................................................................................27

4.1.1 Algorytmy bezpośrednie...................................................................................27

4.1.1.1 Metryka błędu............................................................................................27

4.1.1.2 Poszukiwanie optymalnego rozmieszczenia obrazów................................28

4.1.2 Algorytmy bazujące na punktach kluczowych...................................................29

4.1.2.1 SIFT: Scale Invariant Feature Transform....................................................29

4.1.2.1.1 Wykrywanie ekstremów w przestrzeni skali...........................................29

4.1.2.1.2 Wyznaczanie dokładnego położenia punktów kluczowych.....................34

4.1.2.1.3 Usuwanie wpływu krawędzi....................................................................34

4.1.2.1.4 Przypisanie orientacji..............................................................................35

4.1.2.1.5 Lokalny deskryptor obrazu......................................................................36

4.1.2.1.6 Dopasowanie punktów kluczowych........................................................38

4.1.2.1.7 Wyznaczanie parametrów przekształcenia afinicznego..........................39

4.1.2.2 FAST: Features from Accelerated Segment Test........................................42

4.1.2.2.1 Podstawy algorytmu...............................................................................42

4.1.2.2.2 Implementacja detektora punktów kluczowych przy pomocy uczenia maszynowego...........................................................................................................43

4.1.2.2.3 Wytłumienie punktów niemaksymalnych...............................................44

4.1.2.2.4 Deskryptor punktów kluczowych i ich dopasowanie...............................45

4.1.2.3 Detektor narożników Harrisa.....................................................................45

4.1.2.3.1 Podstawy algorytmu...............................................................................45

4.1.2.3.2 Funkcja odpowiedzi narożnika................................................................48

4.1.2.3.3 Metoda implementacji algorytmu..........................................................48

4.1.2.3.4 Deskryptor narożników i ich dopasowanie.............................................49

4.2 Zniekształcenie soczewki..........................................................................................50

4.3 Algorytmy wygładzające połączenia między obrazami.............................................53

2

Page 3: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

4.3.1 Uśrednianie.......................................................................................................53

4.3.2 Płynne wygładzanie...........................................................................................53

4.3.3 Najbliższy środek...............................................................................................53

4.4 Korekcja fotometryczna............................................................................................54

4.4.1 Wyznaczanie parametrów korekcji...................................................................55

4.5 Obiektywna miara jakości dopasowania obrazów....................................................58

5 Implementacja aplikacji...................................................................................................59

5.1 Szczegóły implementacji...........................................................................................59

5.1.1 Dynamiczne wczytywanie algorytmów.............................................................59

5.1.2 Wybór i ustawienie obrazów.............................................................................59

5.1.3 Wybór algorytmów............................................................................................60

5.1.3.1 Algorytm bezpośredni................................................................................62

5.1.3.2 SIFT.............................................................................................................63

5.1.3.3 FAST........................................................................................................... 64

5.1.3.4 Detektor narożników Harrisa.....................................................................65

5.1.3.5 Dopasowanie manualne.............................................................................66

5.1.4 Przeglądanie wyników.......................................................................................67

5.2 Możliwości dalszego rozwoju...................................................................................68

6 Testy algorytmów............................................................................................................70

6.1 Badanie korzyści zastosowania wyszukiwania hierarchicznego dla algorytmu bezpośredniego...................................................................................................................70

6.2 Porównanie działania poszczególnych algorytmów..................................................73

6.3 Badanie zależności jakości dopasowania obrazów od rozmiarów obrazu................78

6.4 Badanie zależności czasu wykonywania algorytmów od rozmiarów obrazu............80

7 Podsumowanie................................................................................................................82

8 Bibliografia.......................................................................................................................84

9 Spis ilustracji....................................................................................................................87

10 Załączniki......................................................................................................................90

3

Page 4: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

1 WstępObrazy panoramiczne mają na celu oddanie złudzenia głębi przestrzennej, pokazując rozległy krajobraz pod szerokim kątem. Taka prezentacja terenu powoduje, że nie jest on zniekształcony, przez co obraz oddaje większy realizm. W malarstwie stosowane są one od wielu wieków, natomiast w fotografii istnieją praktycznie od jej początku, a zatem od pierwszej połowy XIX wieku. W czasach fotografii analogowej wymyślono wiele rozmaitych sprzętowych sposobów tworzenia panoram, począwszy od przesuwanych dagerotypów o dużych rozmiarach, poprzez obrotowe soczewki, kończąc na szerokokątnych obiektywach. W latach pięćdziesiątych XIX zauważono, że obrazy panoramiczne można również tworzyć poprzez sklejanie pojedynczych, zachodzących na siebie fotografii. Od tamtego czasu próbowano zabierać się do tego na różne sposoby, jednak sztuka była zbyt trudna, stosowano zatem droższe rozwiązania sprzętowe. Po wynalezieniu komputerów okazały się one doskonałym narzędziem mogącym służyć dopasowywaniu do siebie fotografii, tak, aby w rezultacie powstał obraz panoramiczny. Dziś jest to najpowszechniejsza metoda ich tworzenia. Tematyka fotografii panoramicznych staje się coraz popularniejsza, w związku z łatwością ich tworzenia jednym z istniejących komercyjnych rozwiązań oraz ogromnymi korzyściami wynikającymi ze wzrostu realizmu oddawanego przez takie fotografie. Istniejące aplikacje, służące do konstrukcji obrazów panoramicznych charakteryzują się wykorzystaniem jednego z algorytmów, bez większych możliwości ręcznego sterowania ich parametrami wejściowymi i obiektywnej oceny jakości końcowego obrazu.

Rysunek 1: Fotografia panoramiczna widoku San Francisco z Rincon Hill, zrobiona przez Martina Behrmana w 1851r. techniką dagerotypu. Źródło: Library of Congress Prints and Photographs Division, Washington, USA.

Wśród literatury dotyczącej tworzenia obrazów panoramicznych możemy znaleźć pozycje opisujące poszczególne algorytmy. Istnieją także prace, w których porównywane są algorytmy wyszukujące punkty szczególne w obrazach, ale porównania te odbywają się głównie w odniesieniu do rozpoznawania obrazów lub identyfikacji obiektów, a nie tworzenia obrazów panoramicznych. Oprócz tego, porównania takie pomijają algorytmy bezpośrednie. Nie istnieją również żadne aplikacje komputerowe pozwalające zarówno na proste tworzenie obrazów panoramicznych wybranym algorytmem i jednocześnie łatwe porównanie działania każdego z nich.

Celem niniejszej pracy jest zaprojektowanie, implementacja oraz przetestowanie aplikacji pozwalającej na tworzenie obrazów panoramicznych, umożliwiając obiektywne i subiektywne porównanie działania różnych algorytmów. Główną częścią jej tworzenia była własnoręczna budowa kompletnej, w pełni działającej i bezawaryjnej aplikacji według

4

Page 5: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

stworzonego projektu, przyjaznej użytkownikowi a jednocześnie umożliwiającej dalszy rozwój, gotowej do wykorzystania podczas badań lub pracy ze studentami.

Pracę otwiera przegląd literatury związanej z zagadnieniami podstaw przetwarzania obrazów, niezbędnych w zrozumieniu pracy, a także prac dotyczących tworzenia obrazów panoramicznych i wykorzystywanych w tym celu mechanizmów, zarysowując obraz istniejących w tej dziedzinie rozwiązań.

W trzecim rozdziale przedstawiono opis projektu aplikacji. Przedstawiono tam schemat działania aplikacji, projekt stworzenia jego interfejsu, a także rozwiązania problemów programistycznych, które występują podczas tworzenia tego typu aplikacji.

Czwarty rozdział zawiera szczegółowy opis wykorzystanych w aplikacji mechanizmów i algorytmów. Są tam zatem wyjaśnione szczegóły działania najważniejszych algorytmów aplikacji, czyli odpowiadających za prawidłowe ustawienie obrazów względem siebie, ale także tych poprawiających jakość wizualną końcowego efektu, czyli wygładzających połączenia między obrazami oraz korygujących zniekształcenie soczewki.

Następny, piąty rozdział obejmuje opis gotowej aplikacji, umożliwiającej tworzenie obrazów panoramicznych przy pomocy wielu algorytmów, pozwalając na ich porównanie. Zawiera szczegóły implementacji przedstawionych w poprzednim rozdziale algorytmów przy pomocy pseudokodu oraz mechanizmów wykorzystanych w aplikacji. Opisany jest tutaj także sposób obsługi programu i możliwości dalszego jego rozwijania.

W rozdziale szóstym opisano przebieg i wyniki testów przeprowadzonych przy pomocy stworzonej aplikacji na przedstawionych i zaimplementowanych wcześniej algorytmach. Wyniki tych testów dają pogląd na jakość działania każdego z algorytmów, pozwalając porównać je ze sobą i skojarzyć poszczególne algorytmy z obszarami ich zastosowania.

Mimo, że dziedzina, którą zajmuje się niniejsza praca nie jest nowa, wciąż jest w fazie rozwoju. Wynika to z ogromnej popularności, jaką cieszą się fotografie panoramiczne. Można się zatem spodziewać kolejnych odkryć i modyfikacji istniejących rozwiązań, dlatego stworzona aplikacja pozwala na łatwy dalszy rozwój z wykorzystaniem zaprogramowanych już mechanizmów. Intencją napisania pracy było umożliwienie poznania zaimplementowanych algorytmów, zarówno od strony teoretycznej jak i praktycznej, pozwalając porównać ich działanie przy pomocy jednego programu.

5

Page 6: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

2 Przegląd literaturyZajmując się tworzeniem obrazów panoramicznych należy zapoznać się z podstawowymi metodami rozpoznawania, przetwarzania obrazów i widzenia komputerowego, które bardzo często znajdują zastosowanie przy tworzeniu obrazów panoramicznych. Obszernym kompendium wiedzy na ten temat może być (Tadeusiewicz & Flasiński, Rozpoznawanieobrazów, 1991). Poruszono w niej cały wachlarz zagadnień, poczynając od teoretycznej interpretacji zadania rozpoznawania obrazów, poprzez klasyfikację poszczególnych metod do tego służących, kończąc na ich szczegółowym opisie. Zajmując się metodami rozpoznawania obrazów autor wyróżnia tutaj następujące typy: 1) metody minimalno odległościowe, w których zadany wzorzec należy do klasy, która znajduje się od niego w najmniejszej odległości, obliczonej według założonej metryki. W tym przypadku wybór metryki jest zatem kluczowy. Metody te są chętnie stosowane ze względu na prostotę rozumowania, jednak wymagają dużych nakładów obliczeniowych. 2) metody wzorców, są to metody, w których zawieranie się obiektu w obszarze wzorca danej klasy określane jest poprzez funkcję przynależności. 3) metody aproksymacyjne to takie, w których funkcje przynależności rozwinięto w szereg względem danej rodziny funkcji, co pozwala, po pewnych transformacjach, na stwierdzenie, że do określenia wszystkich funkcji przynależności wystarczy wyznaczenie występujących w szeregach współczynników, i tylko te współczynniki będą wymagały zapamiętania. 4) za metody specjalne autor uznaje modyfikacje poprzednich metod, na przykład metody potencjalne, które bazują na rozpisaniu funkcji przynależności na superpozycję funkcji przypominających rozkład potencjalny, metodę aproksymacji stochastycznej, czy zastosowanie sieci neuronowych. 5) metody probabilistyczne, są oparte o informacje o charakterze statystycznym, w samej metodzie przyjmując prawdopodobieństwa jako dane, w praktyce należy je jednak wcześniej przygotować, na przykład poprzez ich estymację z ciągu uczącego. 6) metody syntaktyczne, to metody, których stworzenie zostało spowodowane zbyt wielką złożonością obrazów. W metodach tych obraz rozkładany jest wielokrotnie na mniejsze podobrazy, których wzajemne relacje są wyodrębniane. Każdy z podobrazów jest następnie przetwarzany jako samodzielny obraz. 7) metody ciągowe, oparte o opis obrazu w specjalnych językach opisu obrazów. 8) metody drzewowe skonstruowane na bazie teorii języków drzewowych i automatów drzewowych, oraz 9) metody grafowe, rzadko stosowane ze względu na trudność analizy syntaktycznej gramatyk grafowych. Autor zilustrował opisane zagadnienia przy pomocy przejrzystych obrazów, pozwalających na lepsze zrozumienie tematu. Czytelników zainteresowanych informatyką zainteresuje kod źródłowy programów implementujących opisane metody. Wadą tej publikacji jest data wydania, ponieważ w dziedzinie tej od tamtego czasu dokonało się wiele zmian. Dlatego warto zwrócić uwagę na inne pozycje, takie jak (Tadeusiewicz &Korohda, Komputerowa analiza i przetwarzanie obrazów, 1997). Książka ta zawiera wszystkie podstawowe informację służące do budowy sztucznego systemu wizyjnego, którego metody działania mają odpowiadać zdolnościom widzenia człowieka. Widzenie jest procesem składającym się z następujących etapów: akwizycja obrazu, przetwarzanie obrazu (filtracja

6

Page 7: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

wstępna, eliminacja zakłóceń, kompresja), analiza obrazu oraz rozpoznanie obrazu i jego semantyczna interpretacja. Cały proces można scharakteryzować jako ciąg działań prowadzących do takiego opisu obrazu, który w skróconej formie informuje o wszystkich istotnych cechach treści obrazu. Autorzy zajmują się w tej publikacji pełnią zagadnień związanych z tym tematem. Znajdziemy tutaj zatem informacje o popularnych urządzeniach do akwizycji obrazu, jak również do przetwarzania obrazów, łącznie z wyjaśnieniem zalet i wad korzystania w tym celu z komputera klasy PC. Odrębny rozdział został poświęcony problematyce metod pozyskiwania i akwizycji obrazów. Zawarto tutaj podstawowe informacje z dziedziny budowy obrazów cyfrowych, od siatki sąsiedztwa zaczynając, a kończąc na modelach przestrzeni koloru. Obszerne zagadnienie przetwarzania obrazów zostało podzielone na kilka podtematów, podziału dokonano według różnych kryteriów, prezentując na przykład algorytmy liniowe i nieliniowe lub kontekstowe i bezkontekstowe przetwarzania obrazów. Możemy tu znaleźć takie tematy, jak przekształcenia geometryczne, przekształcenia oparte o arytmetyczne przeliczanie wartości pojedynczych punktów, w wersjach tradycyjnych oraz z wykorzystaniem tablicy LUT, operacje na histogramie. Opisano także metody filtracji obrazów, w dziedzinie częstotliwościowej, korzystając z transformacji widmowej, jak i za pomocą splotu, filtry konwolucyjne, filtry adaptacyjne, medianowe, podstawowe operacje logiczne na obrazach. Swoje miejsce znalazły także metody przetwarzania obrazów wywodzące się z morfologii matematycznej, takie jak erozja, dylacja, zamknięcie, otwarcie, detekcja ekstremów i inne. Autorzy poświęcili również sporo miejsca zagadnieniu analizy obrazów, czyli ekstrakcji cech charakterystycznych z obrazu, będących dużo bardziej podatnych na metody rozpoznawania obrazów. Opisano tutaj takie operacje jak segmentacja obrazów, pomiary obiektów znajdujących się na obrazie, a także obliczanie współczynników kształtu. Bardziej dogłębną analizę podobnych zagadnień możemy znaleźć w (Malina, Ablameyko, & Pawlak, 2002). Publikacja prezentuje wybrane metody i problemy cyfrowego przetwarzania obrazów, dziedziny będącej jedną z podstaw widzenia komputerowego, rozpoznawania obrazów i wzorców czy obróbki fotograficznej. Autorzy podzielili zagadnienia według sposobu dokonywania przemian w obrazie. Mamy zatem opisane operacje na pikselach obrazu, histogramy, progowanie obrazów, sporo miejsca zostało poświęcone filtrom, liniowym i nieliniowym, służącym do wykrywania krawędzi, usuwania szumu i tak dalej. Swoje miejsce znalazły tuta także metody szkieletyzacji. Ciekawym zagadnieniem są opisane w książce operacje morfologiczne, wywodzące się z morfologii matematycznej. Bezpośrednio związana z tematem generacji obrazów panoramicznych są przedstawione w publikacji zagadnienia transformaty Hougha oraz wyznaczania charakterystyk obrazu. Operacje te mogą zostać wykorzystane w procesie dopasowywania nakładających się obszarów obrazów do siebie. Transformata Hougha to podstawowa operacja służąca do wykrywania prostych struktur geometrycznych, takich jak linie proste, łuki czy koła. W książce opisane także zostały takie charakterystyki obrazów jak smukłość czy centryczność obiektów, momenty geometryczne czy długość krawędzi obrazów. Inną ciekawą pozycją z tej tematyki może być (Choraś, 2005). Książka zajmuje się tematyką komputerowej wizji, będącą złożeniem przetwarzania i rozpoznawania obrazów.

7

Page 8: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Jest to proces analogiczny do procesów zachodzących w ludzkim oku i nerwie wzrokowym razem z procesami zachodzącymi w mózgu. Autor opisuje poszczególne zagadnienia tego tematu porównując je do odpowiadającym im mechanizmom działającym w ciele człowieka. Opisano zatem procesy akwizycji obrazu, zajmując się zarówno przetwornikami optyczno-elektrycznymi jak i reprezentacją cyfrową stworzoną przez nie. Poruszono zagadnienia związane ze wstępnym przetwarzaniem obrazu, czyli modyfikacje histogramu, transformacje i filtrację obraz a także jego segmentację. Sporo miejsca poświęcił autor na analizę obrazu. Jest to bardzo szeroka tematyka, zostały opisane metody rozpoznawania poszczególnych elementów i konturów obiektu jak również metody ekstrakcji cech czy operacje morfologiczne. Z punktu widzenia generacji obrazów panoramicznych w lekturze tej znajduje się bardzo wiele ciekawych informacji na temat metod pozwalających pomóc w dopasowywaniu do siebie dwóch obrazów. Przykładem mogą być algorytmy detekcji punktów charakterystycznych, transformata Hougha, momenty geometryczne czy klasyfikatory odległościowe. Jeszcze ciekawszą i obszerniejszą propozycją, zawierającą również mnóstwo informacji praktycznych na temat implementacji danych metod jest (Sonka, Hlavac, & Boyle, 2008). Książka ta obejmuje praktycznie wszystkie zagadnienia związane z komputerową wizją. Począwszy na reprezentacji i opisie obrazów w pamięci komputera, poprzez analizę i morfologię matematyczną oraz zagadnienia związane z teksturami a skończywszy na interpretacji obrazów i budowie świata 3D. Bardzo wiele przydatnych przy tworzeniu obrazów panoramicznych algorytmów opisanych jest w sposób ułatwiający ich implementację, tak jak na przykład algorytm RANSAC czy detektor narożników Harrisa. Zapoznając się z zawartymi tam informacjami możemy zauważyć, że podawane są one chronologicznie, co pozwala poznać również historię tej dziedziny nauki. Oprócz przedstawionych w poprzednich pracach metod, narzędziem służącym do rozpoznawania obrazów może być również sieć neuronowa. Jej zastosowanie w tej dziedzinie zostało opisane w (Karkanis, Magoulas, & Theofanous). Odpowiednio zaprojektowany, inteligentny system komputerowy może stanowić doskonałe wsparcie dla pracownika zajmującego się interpretacją zdjęć, w przypadkach, gdy wynik potrzebny jest szybko, podając dokładną diagnozę w czasie rzeczywistym. W niniejszym dokumencie, w ramach systemów inteligentnych prosty schemat działania zaimplementowany został w praktyce, jako przykład aplikacji używającej systemów inteligentnych opisanego wyżej rodzaju – do klasyfikacji zdjęć kolonoskopowych, jako regionów normalnych bądź z rakiem. Wstępne wyniki testów pokazują, że opisany w artykule schemat zdolny jest wykrywać odchylenia od norm z wysoką trafnością. System może również zostać zmodyfikowany do detekcji odchyleń od norm w innego rodzaju obrazach, wystarczy tylko dostosować kryteria doboru, a następnie uruchomić uczenie sieci neuronowej podając jej jako przykłady odpowiednie zdjęcia. Tematykę rekonstrukcji sceny trójwymiarowej na podstawie dwuwymiarowych obrazów wejściowych, trochę bardziej związaną z tworzeniem obrazów panoramicznych poruszono w (Hartley & Zisserman, 2003). Techniki służące do rozwiązania tych problemów bazują na teorii geometrii i fotogrametrii. Autorzy opisują podstawy geometryczne i ich algebraiczne reprezentacje pod kątem opisu poprzez macierze

8

Page 9: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

transformacji kamery, macierze świata i tensory. Teoria i metody obliczeniowe z nią związane zostały opisane z użyciem przykładów wziętych z życia, aby ułatwić czytelnikowi zrozumienie sprawy. Oprócz tego wiele algorytmów zostało opisanych krok po kroku, aby ułatwić ich implementację. Zawarto także materiały wyjaśniające niezbędne podstawy teoretyczne, wymagane, aby w pełni zrozumieć treść. Książka podzielona jest na 6 części, z których każda opisuje inne relacje geometryczne. Znajdziemy tutaj zatem część ogólną, o generalnych ideach związanych z geometrią dwu- i trzywymiarową, następnie opis macierzy kamery dla pojedynczego widoku, opis macierzy świata tworzonej z dwóch widoków, metody wyznaczania odpowiednich tensorów dla trzech i czterech widoków. Każdy z rozdziałów zawiera szczegółowe informacje o danej relacji, jej właściwości i zastosowanie. Możemy również znaleźć informacje o budowie algorytmów pozwalających na estymację danej relacji z obrazów, poczynając od najprostszych i najbardziej prymitywnych, a kończąc na optymalnych algorytmach uznawanych za wiodące w chwili wydania książki. W aneksie do książki znajdziemy wszystkie podstawowe informacje, takie jak opis notacji tensorowej czy metody dekompozycji macierzy. Oprócz tego na końcu każdego rozdziału autorzy proponują ćwiczenia do samodzielnego wykonania przez czytelnika, których pomyślna realizacja pozwala mieć pewność o prawidłowym zrozumieniu tematu. W związku z tak pełnym opisem poruszanych tematów pozycja ta jest bardzo przydatna dla czytelników zajmujących się widzeniem komputerowym, i wszelkimi zagadnieniami związanymi z opisem świata trójwymiarowego na ekranie komputera. W kontekście generowania obrazów panoramicznych informacje zawarte w tej publikacji będą przydatne podczas opracowywania algorytmów mających na celu przekształcenie obrazu w taki sposób, aby nakładające się obszary pasowały do siebie, leżąc na jednej płaszczyźnie rzutowania.

Istnieje również duża ilość publikacji dotyczących wyłącznie tworzenia obrazów panoramicznych poprzez łączenie pojedynczych klatek. Najbardziej obszerną pozycją poruszająca większość zagadnień związanych z tym tematem jest (Szeliski, 2006). Prezentuje przegląd informacji o konkretnych rozwiązaniach, algorytmach, które potrafią znaleźć zależności między obrazami o różnym stopniu pokrycia. Autor opisuje poszczególne metody biorąc pod uwagę możliwość ich praktycznego zastosowania w takich zagadnieniach jak stabilizacja video, łączenie klatek czy tworzenie obrazów panoramicznych. Opisane zostały także algorytmy, które po znalezieniu położenia konkretnych obrazów względem siebie połączą je odpowiednio wygładzając miejsca łączenia tak, aby nie były one widoczne. Autor bierze pod uwagę trudności wynikające ze zjawiska paralaksy czy ruchu w fotografowanej scenie, podając rozwiązania pozwalające uniknąć występowania rozmytych czy ‘pół-przezroczystych’ obiektów w obrazie wyjściowym. W książce zaprezentowane są podstawowe modele przekształceń obrazów, z którymi można spotkać się stosując zaprezentowane algorytmy pozycjonowania względem siebie i łączenia obrazów, opisane są zarówno bezpośrednie algorytmy dopasowywania obrazów jak również bazujące na ekstrakcji punktów szczególnych. Metody bezpośrednie, polegające na porównywaniu wartości poszczególnych pikseli, zostały opisane wraz z uwzględnieniem rozmaitych metryk mierzących różnice pomiędzy wartościami tych pikseli.

9

Page 10: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Metody bazujące na ekstrakcji punktów szczególnych to bardzo obszerne zagadnienie, ponieważ metod takich istnieje obecnie bardzo dużo. Jedną z pierwszych tego typu metod był detektor narożników zaprezentowany w (Harris & Stephens, 1988). W artykule tym przedstawiono metodę wykrywania narożników, niewrażliwą na obroty i translacje obrazów. Detektor ten bazuje na założeniu, że w punkcie narożnika jasność będzie zmieniać się znacznie w wielu kierunkach. Obliczana jest macierz autokorelacji dla danego punktu, z wykorzystaniem funkcji ważącej Gaussa. Dzięki tej macierzy możemy wyliczyć stosunek krzywizn w danym punkcie, co pozwoli na sprawdzenie, czy dany punkt spełnia podstawowe założenie dla narożnika. Do wyliczenia stosunku krzywizn potrzebne byłoby wyznaczenie wartości własnych tej macierzy, co jest dość kosztowne obliczeniowo. W artykule zaprezentowano efektywną metodę wyliczania stosunku krzywizn bez potrzeby wyznaczania wartości własnych macierzy, opierając się o ślad oraz wyznacznik tej macierzy, co znacznie zmniejsza ilość obliczeń. Metoda ta ma bardzo duże znaczenie historyczne, będąc często używana przy rozpoznawaniu obiektów na scenie trójwymiarowej.

W artykule (Mikołajczyk & Schmid, Scale & affine invariant interest point detectors, 2004) zaprezentowano kolejną metodę wykrywania punktów kluczowych, będącą niezmienniczą wobec skalowania oraz przekształceń afinicznych. Takie właściwości zaprojektowanego detektora osiągnięto dzięki wcześniejszym badaniom, które wykazały, że punkty kluczowe wyznaczone za pomocą detektora Harrisa mogą zostać poddane przekształceniom afinicznym zachowując swoje właściwości i dając powtarzalne, geometrycznie stabilne wyniki. Detektor opiera się także o fakt, że skala charakterystyk struktury lokalnej jest określona poprzez lokalne ekstremum z zestawu znormalizowanych pochodnych, czyli Laplasjanu. Wykorzystane zostały także właściwości afinicznego otoczenia punktu, które może zostać wyestymowane za pomocą macierzy momentu drugiego rzędu. A zatem niewrażliwy na skalowanie detektor oblicza reprezentację detektora punktów kluczowych Harris dla wielu różnych skali, wybierając następnie punkty, w których lokalna wartość Laplasjanu jest maksimum we wszystkich skalach. To prowadzi do zestawu unikanych punktów będących inwariantnymi względem skali, obrotów, translacji jak również względem zmian w naświetleniu i ograniczonych zmian punktu widzenia. Skala charakterystyk określa niezmienniczy region dla każdego punktu. Autorzy proponują także rozszerzenie niezmienniczości detektora do niezmienniczości afinicznej, a zatem niezmienniczości względem przekształceń niezmieniających równoległości dwóch linii. Dokonano tego poprzez zdefiniowanie afinicznego sąsiedztwa każdego punktu kluczowego. Iteracyjny algorytm modyfikuje lokalizację, skalę i sąsiedztwo każdego punktu, dążąc do afinicznej niezmienniczości punktów. Ta metoda może sobie poradzić ze przekształceniami o dużej skali. Składając skalę charakterystyk i kształt afinicznego sąsiedztwa określamy afinicznie niezmienniczy region dla każdego punktu. W artykule zaprezentowano porównanie działania rozmaitych detektorów udowadniając, że opisany algorytm zapewnia znacznie lepsze wyniki, niż wcześniejsze metody. Jakość działania zaprezentowanego algorytmu jest poparta również znakomitymi efektami w dopasowywaniu dzięki opisaniu obrazu poprzez zestaw wyliczonych

10

Page 11: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

niewrażliwych na skalowanie i przekształcenia afiniczne deskryptorów danego regionu, skojarzonych z danym punktem kluczowym.

Ciekawą metodę ekstrakcji punktów szczególnych opisano w (Kadir, Zisserman, & Brady,2004). Detektor, który tego dokonuje działa za pomocą uogólnionych poprzez afiniczną niezmienność metod osądzających charakterystyczność danego regionu badając jego nieprzewidywalność zarówno pod względem przestrzennym jak i atrybutów. Detektor ten znacząco różni się od operatorów opartych o metody splotowe. Badane są trzy aspekty jego zachowania: niezmienniczość wobec zmiany punktu widzenia, wrażliwość na zmiany w obrazie a także powtarzalność wyników osiąganych mimo zmian wewnątrz badanych klas. Podczas gdy inne artykuły na ten temat skupiają się na osiągnięciu niezależności od zmiany punktu widzenia, ten poświęcony został badaniami nad projektem testu jakości działania by wspomóc rozwijanie dwóch pozostałych aspektów. Autorzy proponują porównanie detektora cech szczególnych do innych standartowych detektorów, uwzględniając afinicznie niezmienniczy detektor punktów kluczowych. Dzięki tym testom zostało dowiedzione, że zaproponowany detektor cech szczególnych wykazuje się porównywalną do innych detektorów niezmienniczością wobec zmiany punktu widzenia, natomiast znacznie mniejszą wrażliwością na perturbacje wewnątrz obrazu i zmiany wewnętrzne obrazów badanej klasy obiektów. Zaprezentowany przez autorów algorytm został dodatkowo zoptymalizowany stosując operacje lokalne. Zaprojektowany zestaw testów badający tego typu algorytmy pozwala dobrać odpowiedni dla danych warunków algorytm, a dzięki rozszerzonemu polu jego działania może stanowić wsparcie także dla dziedzin, w których nowe aspekty są ważne, takich jak rozpoznawanie obiektów poprzez wykrywanie części.

Prostym, ale dającym dobre wyniki jest detektor punktów kluczowych przedstawiony w (Rosten & Drummond, Machine learning for high-speed corner detection) zwany FAST. Detektor ten rozpatruje piksele leżące na obwodzie okręgu o promieniu trzech pikseli wokół badanego punktu. Punkt oznacza się jako szczególny, jeśli na obwodzie znajduje się określona ilość sąsiadujących ze sobą pikseli o jasności różniącej się co najmniej o ustaloną wartość od badanego piksela. W związku z tym, że okrąg taki ma obwód o długości szesnastu pikseli, autorzy proponują, aby punkt szczególny miał takich pikseli pomiędzy 9 a 15. Artykuł ten wart jest szczególnej uwagi, ponieważ metoda wykazuje się bardzo dobrą powtarzalnością, będąc niezmienniczą wobec przekształceń afinicznych jak również pewnych zmian w naświetleniu. Zaprezentowano również efektywną metodę implementacji algorytmu, opartą o generację kodu na podstawie stworzonego wcześniej drzewa decyzyjnego.

Innym dobrym przykładem takiej metody może być metoda zaprezentowana w (Lowe,Distinctive Image Features from Scale-Invariant Keypoints, 2004). Przedstawiona tam metoda wyszukiwania cech charakterystycznych obrazu, niewrażliwych na rozmaite przekształcenia, które można wykorzystać do dopasowania tych samych obiektów przedstawionych w różny sposób. Algorytm zaprojektowany przez autora, zwany powszechnie SIFT, czyli Scale Invariant Feature Transform, potrafi znaleźć punkty kluczowe

11

Page 12: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

zachowujące swoje właściwości pomimo obrotu lub przeskalowania obrazu, a także występowania szumów, zakłóceń, zmian w jasności obrazu czy przekształceń trójwymiarowych. Takie punkty kluczowe są również wysoce unikalne, dzięki czemu można z wysokim prawdopodobieństwem dopasować te same cechy występujące w dwóch różnych obrazach a nawet w całej bazie danych obrazów. Opisane zostały także metody wykorzystania opisanego algorytmu do rozpoznawania obiektów, poprzez dopasowanie danych punktów kluczowych do stworzonej wcześniej bazy punktów kluczowych występujących w znanych obiektach, za pomocą metody najbliższych sąsiadów. Autor opisuje także zastosowanie transformaty Hougha do przyporządkowania punktów kluczowych do danego obiektu. Dzięki zamieszczonym przykładom działania algorytmu można łatwo zorientować się w ogólnym jego działaniu.

O popularności algorytmu SIFT świadczy wykorzystywanie go w wielu dziedzinach nauki. Jednym z przykładów może być (Pawlik & Mikrut), gdzie opisano metodę dopasowywania fotogrametrycznych zdjęć lotniczych do tworzenia map cyfrowych lub cyfrowych modeli terenu. Autorzy zdecydowali, że najlepsza do ich celów będzie właśnie SIFT, ponieważ jest ona niewrażliwa na obroty i skalowanie obrazów. W dokumencie został przedstawiony opis algorytmu, oraz wyniki, jakie daje jego wersja zaimplementowana przez autorów metody. Autorzy porównują efekty dla różnych parametrów wejściowych podczas testowania algorytmu, znajdując optymalne ich wartości. W artykule brakuje jednak porównania działania z innymi algorytmami a także testu algorytmu w implementacji własnej autorów. Kolejnym przykładem zastosowania tej metody jest (Ostiak), opisujący implementację algorytmu do tworzenia obrazów panoramicznych typu HDR, czyli o zwiększonym zakresie jasności. Tego typu obrazy pozwalają przedstawić dużo większą liczbę szczegółów niż obrazy tradycyjne. Autor przedstawia rozmaite rozwiązania wybierając odpowiednie dla tego zagadnienia. Tutaj również najodpowiedniejszy okazał się algorytm SIFT, pozwalający dopasować obrazy do siebie, będąc nieczułym na podstawowe przekształcenia obrazów, takie jak skala, obrót czy zmiana iluminacji. W artykule przedstawiono również modyfikacje, których trzeba dokonać w tradycyjnej wersji algorytmu, aby był on odpowiedni dla obrazów o zwiększonym zakresie jasności. Został zaproponowany model transformacji perspektywicznej oraz sposób wygładzania połączeń między obrazami pozwalający stworzyć panoramę bez widocznych szwów. Autor ilustruje rozwiązania konkretnymi przykładami fotografii, pokazując w szczegółach korzyści ze stosowania obrazów o zwiększonym zakresie jasności. Rezultaty zastosowania zaimplementowanego algorytmu także zostały przedstawione i omówione.

Ten sam algorytm wykorzystywany jest w pomyśle zaprezentowanym w (Lowe & Brown,Recognising Panoramas, 2003). Jest to nowatorskie zagadnienie w pełni automatycznego rozpoznawania panoram. Zastosowanie zaproponowanego rozwiązania znacznie ułatwia użytkownikowi tworzenie panoram, skanując wszystkie wykonane zdjęcia z danej puli, szukając tych pasujących do siebie, a następnie tworząc z nich obrazy panoramiczne. Rozwiązanie to eliminuje występujące w tradycyjnych podejściach potrzeby manualnego

12

Page 13: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

wybrania obrazów do połączenia i wypozycjonowania ich przez użytkownika. Autorzy proponują metody dopasowywania niewrażliwe na obroty, skalowanie czy zmienne naświetlenie obrazów. Z powodu selektywnego dopasowywania obrazów do siebie, zaproponowany w dokumencie algorytm potrafi także usunąć z puli obrazów przypadkowe, nienależące do panoramy obrazy. Jest to zrealizowane na podstawie probabilistycznego modelu sprawdzającego przynależność do danego zestawu zdjęć. Zaprezentowane przykłady pokazują skuteczność algorytmu, dając jednocześnie pojęcie o przydatności praktycznej zaimplementowanego algorytmu.

Ciekawym rozwiązaniem jest, przedstawiona w (Ke & Sukthankar), modyfikacja algorytmu SIFT. Autorzy artykułu poddali testom i ulepszyli deskryptor obrazu używany w algorytmie SIFT. Zaproponowana przez nich modyfikacja tego algorytmu również opiera się o ekstrakcję najważniejszych właściwości gradientu w sąsiedztwie danego punktu kluczowego, jednak w odróżnieniu od tradycyjnego algorytmu SIFT opisana zmodyfikowana jego wersja korzysta z analizy najważniejszych komponentów PCA w obrębie znormalizowanego fragmentu gradientu, zamiast z wygładzonego, ważonego histogramu. Przeprowadzone przez autorów artykułu eksperymenty dowodzą, że zastosowanie PCA do opisu cech kluczowych nadaje im jeszcze bardziej unikalny charakter, zapewniając zwiększoną niezmienniczość wobec deformacji obrazu, a także sprawia, że deskryptor jest bardziej skondensowany. Zamieszczone rezultaty badań jasno pokazują, że zastosowanie przedstawionego algorytmu w aplikacjach służących do wydobywania obrazów z baz danych zwiększa dokładność jednocześnie przyspieszając dopasowywanie, dzięki bardziej skondensowanej budowie. Algorytm testowany i porównywany był przy pomocy sztucznie przekształconych obrazów, jak i naturalnie różniących się obrazów, dając zauważalnie lepsze efekty od tradycyjnej wersji algorytmu SIFT, wykonując takie zadania jak dopasowanie wzorców w czasie około 1/3 czasu wykonania algorytmu SIFT.

Algorytmy zajmujące się ekstrakcją punktów szczególnych z obrazów są ważnym zagadnieniem z dziedziny widzenia komputerowego, dlatego doczekały się wielu artykułów przedstawiających ich porównanie. Dzięki (Mikołajczyk, i inni, 2005) możemy uzyskać pogląd na wiodące obecnie metody wyszukiwania kowariantnych regionów w obrazach, porównując jakość ich działania na zestawie testowych obrazów pod rozmaitymi warunkami. Uwzględniono sześć rodzajów detektorów: bazujące na afinicznej normalizacji wokół punktów Harrisa oraz Hesjanu, detektory maksymalnie stabilnych regionów ekstremów, detektor regionów oparty o wyszukiwanie krawędzi, detektor bazujący na ekstremum intensywności oraz detektor wyróżniających się regionów. Jakość działania była porównywana testując wymienione algorytmy na obrazach poddanych przekształceniom takim jak zmiana punktu widzenia, skalowanie, zmiana naświetlenia, zmiana ostrości czy kompresji obrazu. Testowanie odbywało się poprzez zadanie algorytmowi znalezienia na obrazie przekształconym określonego regionu z obrazu wejściowego. Trafność znalezionego wyniku oceniana była na podstawie procenta powierzchni obszaru zadanego, który zawierał się w wyniku. Praca pozwala osobie znającej pobieżnie temat zapoznać się z całą gamą

13

Page 14: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

algorytmów i bez problemu wybrać odpowiedni do konkretnej potrzeby. W innym artykule tych samych autorów (Mikolajczyk & Schmid) porównano jakość działania deskryptorów, opisujących znalezione punkty szczególne. Deskryptory punktów szczególnych używane są do identyfikacji odpowiadających sobie par punktów, dzięki czemu możemy wyznaczyć opis ruchu kamery pomiędzy dwoma obrazami. W związku z tym wartość deskryptora powinna być unikalna a jednocześnie niewrażliwa na zmiany punktu widzenia, jak również odporna na pewne błędy w wykrywaniu punktów szczególnych. W celu porównania jakości działania deskryptorów zastosowano kryterium powtarzalności z uwzględnieniem precyzji, dla różnych przekształceń dokonanych na obrazach. Kolejne metody opisu punktu kluczowego porównywano dla punktów kluczowych znalezionych rozmaitymi metodami. Badania te wykazały, że działanie deskryptora tylko w niewielkim stopniu zależy od metody użytej do znalezienia punktów kluczowych, oraz że deskryptor punktów kluczowych SIFT, zaproponowany w (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004) okazuje się być najlepszym deskryptorem.

Przykładem zastosowania tego typu algorytmów w trochę innym kontekście przedstawiono w (Mikołajczyk & Schmid, Indexing based on scale invariant interest points, 2001). Autorzy zaprezentowali metodę wykrywania punktów charakterystycznych w obrazie, zachowujących się niezmienniczo w stosunku do skalowania, do celów indeksowania obrazów. Zaprezentowana metoda bazuje na dwóch podstawowych zasadach dotyczących tego przekształcenia: 1) punkty szczególne mogą być dostosowane do skali a ich wykrywanie daje powtarzalne, stałe rezultaty. 2) Ekstrema lokalne z grupy znormalizowanych pochodnych wskazują na obecność charakterystycznych struktur lokalnych. Opierając się na tych właściwościach zaproponowana przez autorów metoda korzysta na początku z wieloskalowego detektora punktów kluczowych Harrisa. Następnie wybierany jest punkt, dla którego wartość Laplasjana jest maksymalna dla wszystkich skali. Pozwala to na wybór unikalnych punktów, dla których znana jest skala charakterystyczna, będących jednocześnie niezmienniczymi względem zmiany skali, obrotów, translacji, jak również niewrażliwymi na zmiany iluminacji i ograniczone zmiany punktu widzenia. Jeśli chodzi o indeksację, obraz jest charakteryzowany poprzez grupę punktów niewrażliwych na skalowanie, skala skojarzona z każdym z punktów pozwala na wyliczenie niewrażliwego na skalowanie deskryptora. Deskryptory zaproponowane przez autorów są dodatkowo inwariantne wobec obrotów, afinicznych zmian naświetlenia a także niewielkich zmian w perspektywie. Zamieszczone wyniki testowania algorytmu dowodzą świetnych osiągów nawet dla baz obrazów zawierających więcej niż 5000 obiektów. Podobne algorytmy zastosowano w ciekawej pracy (Mikołajczyk, Zissermann, & Schmid, Shape recognition with edge-based features, 2003). Dokument opisuje sposób rozpoznawania obiektów słabo teksturowanych, dopuszczając zawieranie dziur i kształtów walcowatych. Obiekty mogą być umieszczone na nieuporządkowanej scenie, w dowolnych warunkach widoczności. Zaprojektowany został zestaw nowatorskich komponentów. Po pierwsze, autorzy dokumentu zaproponowali nowy detektor cech szczególnych oparty o znalezienie punktów znajdujących się na krawędziach, nie wrażliwy na przekształcenia zachowujące podobieństwo. Sąsiedztwo tych punktów

14

Page 15: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

estymowane jest w sposób niewrażliwy na skalowanie. Drugą ważną właściwością zaproponowanego rozwiązania jest niewrażliwość deskryptora sąsiedztwa obliczonego dla cech znajdujących się na pierwszym planie na dowolnie złożone tło, nawet, jeśli dany punkt kluczowy znajduje się na krawędzi obiektu. Trzecim wartym wspomnienia szczegółem jest fakt, że opisany deskryptor jest uogólnioną do działania dla krawędzi wersją znanego algorytmu SIFT. Obiekty będący modelem jest tworzony na podstawie jednego zdjęcia treningowego. Następnie obiekt ten może zostać rozpoznany na nowych obrazach w serii kroków narzucających progresywnie ciaśniejsze ograniczenia geometryczne. Końcowym celem autorów była możliwość rozpoznania obiektów z dopuszczalną granicą elastyczności w reprezentacji geometrycznej, co pozwala na efektywne wyszukiwanie obiektów należących do tej samej klasy czy kategorii.

Posiadając obrazy wraz z wykrytymi punktami specjalnymi niezmienniczymi względem przekształceń dokonanych na polu widzenia pomiędzy kolejnymi zdjęciami, jesteśmy w stanie wyliczyć parametry przekształcenia, któremu trzeba poddać obrazy wejściowe, aby pasowały do siebie. Algorytm zdolny do tego został przedstawiony w (Fischler & Bolles,1981). Algorytm ten, służący do dopasowywania danych eksperymentalnych do wzorca, nazywany Random Sample Consensus – RANSAC. Model ten zdolny jest do interpretacji i wygładzania danych zawierających nawet znaczący procent błędnych pomiarów, w związku z czym jest idealny do stosowania w komputerowym rozpoznawaniu obrazów, gdzie analiza jest przeprowadzana na danych zarejestrowanych przez matryce obarczone pewnym współczynnikiem błędu. Algorytm w działaniu zachowuje się odmiennie niż większość znanych podejść – zamiast estymować rozwiązanie na podstawie maksymalnej liczby danych, RANSAC oblicza rozwiązanie bazując na jak najmniejszej liczbie danych, próbując następnie dopasować pozostałe dane do rozwiązania, lub odrzucić, jeśli dopasowanie jest niemożliwe. Spora część artykułu została poświęcona zastosowaniu algorytmu RANSAC do rozwiązania problemu określenia lokalizacji – Location Determination Probem (LDP), który polega na estymowaniu pozycji kamery na podstawie zrobionych przez nią zdjęć, znając pozycję przedstawionych na zdjęciach obiektów. W związku z zastosowaniem tego algorytmu wyznaczono również minimalną liczbę znanych punktów, potrzebnych do jego prawidłowego działania, zaprezentowano również algorytmy pozwalające w prosty sposób wyznaczyć rozwiązanie problemu na podstawie tej minimalnej liczby punktów. Metody rozwiązania tego problemu stanowią bazę dla systemu potrafiącego automatycznie rozwiązywać problem LDP pomimo słabej jakości obrazów i różnorodnych warunków analitycznych. Autorzy zamieścili również detale dotyczące implementacji podobnego systemu, co podnosi atrakcyjność artykułu. Możemy również znaleźć przykłady obliczeniowe. Zaprezentowany algorytm RANSAC jest bardzo często wykorzystywany w podobnych rozwiązaniach. Jego zmodyfikowaną wersję przestawiono w (Chum & Matas, 2002). Autorzy proponują modyfikację poprzez zróżnicowanie kroku hipotetycznej ewaluacji. Jak wynika z zaprezentowanych w artykule danych, w sporym zakresie występujących warunków poprawiło to działanie algorytmu. Opisany w artykule, zróżnicowany algorytm RANSAC, nazwany R-RANSAC, charakteryzuje się również większą oszczędnością, operując tylko na

15

Page 16: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

części danych z modeli zawierających błędy. Autorzy zaimplementowali algorytm w procedurze dwukrokowej. Wprowadzono także klasę testów statystycznie, wstępnie sprawdzających próbki testowe. Dla zaproponowanych testów wyznaczono przybliżone relacje opisujące optymalne ustawienie każdego parametru. Zastosowanie tych testów sprawdzono na danych laboratoryjnych, stworzonych sztucznie, jak i na danych rzeczywistych, co wykazało znaczne przyspieszenie wykonywania algorytmu.

Innym podejściem do ustalenia pozycji obrazów wejściowych w końcowej panoramie może być zastosowanie transformaty Hougha, opisane w (Chitsobhuk, Chunhavittayatera, &Tongprasert, 2006). Metoda zakłada dopasowywanie obrazów poprzez kombinację transformaty Hougha i korelacji fazowej w dziedzinie Fouriera do estymacji parametrów obrotu i translacji obrazów. Parametry te są następnie wykorzystywane do nakładania obrazów i połączenia ich w płynny sposób w wyjściowy obraz zawierający wszystkie detale obrazów wejściowych. Pierwszy krok oparty jest o jednowymiarową korelację fazową, dzięki której jesteśmy w stanie wyliczyć translację kąta do przestrzeni Hougha, poprzez transformatę Hougha. Parametr obrotu uzyskany w ten sposób pozwala na obrócenie obrazów wejściowych w odpowiedni sposób. W drugim kroku poprzez dwuwymiarową korelację fazową wyliczane są parametry translacji wzdłuż osi x i y, której musimy poddać obrazy wejściowe. Zamieszczone w artykule wyniki przeprowadzonych badań pokazują dokładność zaproponowanej metody w znajdowaniu odpowiedniego dopasowania obrazów o różnych obrotach, wielkości i o różnej ilości szczegółów. Większy rozmiar i większa ilość szczegółów sprzyjają lepszemu dopasowaniu, co sprawia, że metoda ta jest atrakcyjna przy przetwarzaniu zdjęć. Autorzy opisują metodę jako prostą w implementacji i nieskomplikowaną obliczeniowo, dzięki wysokiej wydajności szybkiej transformaty Fouriera. Podobna metoda została zaprezentowana w (Bhuttichai Summar, 2005), jednak oprócz technik korelacji fazowej w dziedzinie Fouriera i transformaty Hougha korzysta ona z transformaty falkowej o różnych rozdzielczościach. Jest to rozwinięcie omawianej w innych artykułach metody, mające na celu przyspieszenie przetwarzania. Przed nałożeniem obrazów, poddawane są one transformacie falkowej. Przekształcenia kątowe mogą następnie zostać wyestymowane poprzez zastosowanie transformaty Hougha a później korelacji fazowej. Zastosowanie korelacji fazowej dwuwymiarowej jest następnie stosowane do znalezienia parametrów translacji względem osi X i Y. Stosowanie transformaty falkowej w tej metodzie podyktowane jest skróceniem czasu obliczeń, można także wykorzystać jej współczynniki jako informacje o krawędziach, zamiast stosować do tego inne narzędzia. Dzięki zastosowaniu transformaty falkowej o różnych rozdzielczościach możemy znacznie zredukować czas obliczeń. Obrazy są przekształcane zgodnie z uzyskanymi parametrami przekształceń. Następnie obrazy są komponowane i wygładzane w jednym, wyjściowym obrazie większym od wejściowych, zawierającym wszystkie detale obrazów wejściowych. Z przeprowadzonych praktycznych eksperymentów wynika, że algorytm działa z powodzeniem, osiągając wyniki lepsze niż wiele podobnych metod. Autorzy dokumentu poradzili sobie także z błędami akumulującymi się podczas kolejnych przekształceń, poprzez odpowiedni dobór parametrów dopasowania obrazów.

16

Page 17: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Ciekawe podejście do tworzenia obrazów panoramicznych z pojedynczych fotografii zaprezentowane zostało w (Shum & Szeliski, Construction and refinement of panoramicmosaics with global and local alignment, 1998). Polega ono na przypisaniu każdemu obrazowi macierzy rotacji i ewentualnie długości ogniskowej soczewki, a nie jak w innych podejściach na jawnym rzutowaniu kolejnych obrazów na wspólną powierzchnię, taką jak płaszczyzna czy walec. Pomysł autorów artykułu wiąże się z koniecznością radzenia sobie z nagromadzonymi błędami pochodzącymi z rejestracji, aby je zredukować zastosowano globalne, blokowe dopasowanie wszystkich obrazów wejściowych, co sprawia, że otrzymujemy optymalną mozaikę obrazów w sensie najmniejszych kwadratów. Natomiast do redukcji małych niedopasowań poszczególnych obrazów, spowodowanych efektem paralaksy związanym z przesunięciem kamery czy innymi niezamodelowanymi przekształceniami, zastosowano dodatkowo lokalne dopasowanie obrazów, które pozwala na połączenie każdej pary obrazów bazując na technikach nakładania. Takie złożenie globalnego i lokalnego modelu dopasowywania obrazów skutkuje wyraźną poprawą jakości obrazów wyjściowych, co według autorów pozwala na efektywne generowanie obrazów panoramicznych o szerokim kącie widzenia. Atrakcyjność zaprezentowanego podejścia skłania do rozważenia opłacalności jego implementacji pod względem kosztów obliczeniowych.

W (Eden, Uyttendaele, & Szeliski) zaprezentowano techniki automatycznego łączenia wielu obrazów różniących się pod względem naświetlenia i orientacji. Łączenie ma skutkować zwiększeniem zakresu jasności obrazu, czyli konstrukcją obrazu HDR, zachowując rozpiętość kątową. Ogromną zaletą przedstawionej metody jest to, że pozwala ona zachować duże różnice w ekspozycji, radzi sobie z dużymi zmianami pomiędzy poszczególnym klatkami wywołanymi ruchem na fotografowanej scenie, i nie wymaga dodatkowego sprzętu. Aby algorytm działał przy takich założeniach zaprojektowano dwustopniową metodę, w której najpierw ustala się pozycję ruchomych obiektów, a następnie wykorzystywana jest cała dostępna skala jasności obrazów wejściowych. Autorzy wprowadzają pojęcie kosztu opisujące korzyść wykorzystania danego piksela w obrazie wyjściowym, a także kosztu łączenia obrazów, którego minimalizacja zapewnia gładkie przejścia między obrazami. Minimalizacja tych wartości realizowana jest za pomocą metody zaproponowanej w dokumencie i zapewnia wybór właściwego dopasowania. Zamieszczone przykłady działania algorytmu ukazują różnice pomiędzy tradycyjnymi algorytmami a prezentowanym algorytmem konstrukcji obrazów o zwiększonym zakresie jasności HDR, a zachwalana przez autorów łatwość implementacji sprawia, że pozycja ta jest interesująca. Tematykę zwiększania jakości łączenia obrazów panoramicznych porusza także (Zomet, Levin, Peleg, &Weiss, 2006). W związku z potrzebą wykorzystania łączenia zdjęć na potrzeby różnego rodzaju operacji, takich jak składanie mozaik, potrzebne są dobre algorytmy wygładzające krawędzie między łączonymi zdjęciami. Jakość szwu między zdjęciami jest określana wizualne na podstawie podobieństwa między złączonym obrazem a każdym z wejściowych obrazów z osobna, oraz poprzez widoczność miejsca złączenia, tak zwanego szwu. Aby odpowiednio zdefiniować i znaleźć najlepszy sposób złączenia dwóch obrazów autorzy artykułu proponują

17

Page 18: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

zbiór formalnych funkcji kosztu, do pomiaru jakości złączenia. W funkcjach tych podobieństwo obrazów wejściowych oraz widoczność szwu są zdefiniowane w dziedzinie gradientu, minimalizując zakłócenia wzdłuż szwu. Właściwe złączenie zoptymalizuje funkcje kosztu, jednocześnie eliminując nieciągłości fotometryczne a także geometryczne niedopasowania pomiędzy złączonymi obrazami. W artykule zaprezentowano kilka rodzajów funkcji kosztu, porównując ich działanie dla różnych przykładów, w teorii i w praktyce. Wyniki przeprowadzonych badań zaprezentowano na rozmaitych przykładach, takich jak generacja obrazów panoramicznych, wygładzanie obiektów czy usuwanie pozostałości kompresji. Porównanie z istniejącymi metodami pozwala poznać zalety optymalizacji pomiarów w dziedzinie gradientu. Zamieszczone ilustracje wyraźnie pokazują poprawę jakości złączeń w wypadku zastosowania proponowanego rozwiązania. Warto zauważyć, że zaprezentowany algorytm jest tylko modyfikacją, która po wprowadzeniu do istniejących wcześniej rozwiązań znacznie poprawia ich efekt, jednak bardzo wydłuża czas działania. Ciekawą pozycją na ten temat jest również (Zomet & Peleg, Applying super-resoultion topanoramic mosaics, 1998). W artykule autorzy opisują jeden ze sposobów wykorzystania danych zawartych w sekwencji video do poprawy jakości odbioru obrazu. Mozaikowanie to proces prezentowania informacji zawartych w wielu klatkach w jednym obrazie, natomiast tzw. ‘super-resolution’ to proces poprawy jakości obrazu poprzez redukcję szumu i zwiększenie rozdzielczości wykorzystując informacje o regionach z wielu klatek sekwencji video. Obie operacje wykorzystują łączenie obrazów. Autorzy opisują metodę pozwalającą na połączenie zalet obu operacji, co dotychczas było kłopotliwe, ponieważ przekształcenie obrazów związane z ich dopasowaniem nie pozwala osiągnięcie jednakowej dokładności w całym regionie wymaganej do podniesienia jakości. Skonstruowany algorytm jest dwustopniowy: najpierw generowany jest gotowy obraz panoramiczny, a następnie niewielkie fragmenty z sekwencji video są dopasowywane do obrazu panoramicznego podnosząc jego jakość. Dzięki tym zabiegom produktem wyjściowym jest wysokiej jakości obraz panoramiczny. Dodatkowo, poprawianie jakości powoduje wygładzenie miejsc, w których łączone były klatki obrazu panoramicznego. W artykule (Jia & Tang, 2003) zaprezentowano metodę nakładania obrazów opartą na globalnym i lokalnym dopasowaniu luminancji. Metoda polega na bezpośrednim estymowaniu funkcji wymieniającej, poprzez redukcję skomplikowanego problemu estymacji do dwuwymiarowego wyboru tensorowego w odpowiedniej przestrzeni wyboru. Żaden model funkcji wymieniającej nie jest domniemany. Dane o luminancji obrazu są najpierw kodowane do postaci dwuwymiarowych tensorów. Poprzez propagację warunku gładkości korzystając z napiętego pola tensorowego, wybierana jest funkcja wymieniająca, biorąc pod uwagę tylko monotoniczne ograniczenia. Zaprezentowana metoda skutecznie wypełnia brakujące fragmenty krzywej i odrzuca błędne pomiary bez uproszczonego ani zbyt skomplikowanego modelu krzywej. Wybrane funkcje wymieniające są wykorzystane w zaproponowanym przez autorów iteracyjnym algorytmie dopasowującym w celu obliczenia najwłaściwszej macierzy przekształcenia. Metoda ta wygładza miejsce połączenia obrazów mimo dużych różnic w naświetleniu, także w przypadku, gdy nakładające się obrazy wymagają sporych przekształceń. Zaprezentowane

18

Page 19: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

przykłady ukazują skuteczność opisanej metody w trudnych zadaniach wymagających zmian naświetlenia czy eliminacji pozostałości kompresji, znacznie poprawiając dopasowanie obrazów. Przedstawione w publikacji wiadomości warte są przemyślenia, ponieważ prezentują odrębne od większości podejście. Na koniec zagadnienia poprawy jakości złączeń między obrazami warto spojrzeć do (Hasler & Süsstrunk). Autorzy artykułu skupili się na rzadko poruszanym temacie obróbki kolorów podczas generowania obrazów panoramicznych. Zainteresowanie tym tematem wynika z faktu, że istniejące algorytmy dopasowywania obrazów potrafią skutecznie znaleźć sposób połączenia obrazów, jednak różnice kolorów w połączonych obrazach często są dość znaczne, natomiast dobrej jakości obraz panoramiczny powinien mieć kolory dopasowane. Zwykle problem ten był maskowany stosując gładkie przejście między kolorami w obrazach. W dokumencie opisano metodę jednoczesnego wyliczania położenia obrazów względem siebie i sposobu transformacji kolorów pomiędzy obrazami. Poprzez estymację kolorów ze sceny do pikseli, opisana metoda radzi sobie z dopasowywaniem kolorów w miejscu łączenia obrazów, nawet w przypadku, gdy różnica jest znaczna. Zamieszczono także szczegółowe analizy problemów występujących podczas łączenia obrazów, takich jak winiety czy różnica balansu bieli. Zaprezentowana metoda prowadzi do wygenerowania panoramicznego obrazu wysokiej jakości. Potwierdzają to zamieszczone w artykule wyniki eksperymentów, przeprowadzonych dla obrazów o ustalonych parametrach rejestracji, a także dla obrazów zarejestrowanych aparatem cyfrowym o nieznanych parametrach przesłony, balansu bieli i czasu naświetlania. Dokument przedstawia ciekawy, rzadko poruszany problem, dlatego wart jest uwagi.

Trudnym zagadnieniem, na którego temat istnieje wiele prac, jest tworzenie obrazów panoramicznych obejmujących kąt widzenia równy 360°. W (Shum & Szeliski, Creating fullview panoramic image mosaics and enviroment maps, 1997) zaprezentowano nowatorskie podejście do tworzenia panoramicznych obrazów o zakresie pełnych 360° z sekwencji obrazów. Stosując tradycyjne metody, używane do łączenia obrazów w panoramy, w przypadku, gdy obraz pokrywał 360° błędy nagromadzone podczas przetwarzania sprawiały, że zamknięcie okręgu nie było możliwe. Autorzy zachwalając swój algorytm, zapewniają, że rozwiązali ten problem, nie wymagając od fotografa obracania aparatu idealnie poziomo, ponieważ zaproponowany algorytm radzi sobie z łączeniem obrazów zrobionych zwykłym aparatem bez statywu, o ile nie występuje zbyt duże przesunięcie aparatu ani obiektów na scenie. W zaproponowanym podejściu mozaika obrazów reprezentowana jest poprzez zestaw przekształceń, gdzie nie występują problemy związane z zastosowaniem cylindrycznej bądź sferycznej przestrzeni. Zastosowano metodę bezpośredniej estymacji trójwymiarowych obrotów, rezygnując z ośmioparametrowego przekształcenia rzutowania perspektywicznego. Autorzy opisują także algorytmy obliczające ogniskową soczewki, a także algorytm ekstrakcji mapy otoczenia z obrazu panoramicznego, dzięki czemu podczas oglądania efektów obraz może być rzutowany na wielościan charakteryzujący otoczenie. Takie podejście pozwala oglądać wirtualne otoczenie prezentowane za pomocą obrazu panoramicznego za pomocą programów odtwarzających grafikę 3D, bez użycia specjalistycznych aplikacji do oglądania panoram. Ciekawą pracą poruszającą tą samą tematykę jest (Capel, 2001). Autor pracy

19

Page 20: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

przeprowadził badania nad problemem wykorzystania danych zawartych w wielu nakładających się zdjęciach tej samej sceny, w celu stworzenia obrazu wysokiej jakości. Dzięki składaniu wielu obrazów w jeden możemy usunąć szum, zwiększyć pole widzenia, usunąć poruszające się obiekty, zmniejszyć rozmycie a także zwiększyć skalę jasności. Opisane zostały dokładnie poszczególne kroki prowadzące do stworzenia obrazu wyjściowego. Zaczynając od rejestracji obrazów, autor zaproponował efektywny algorytm mapujący jeden obraz na drugim, bazując tylko na informacjach z w nich zawartych, aby uzyskać informacje na temat przekształceń, których należy dokonać na obrazach, aby dopasować je do siebie. Przedstawione zostały osiągnięte wyniki. Kolejnym krokiem jest łączenie obrazów. Autor prezentuje dwa podejścia: pierwsze z nich, zwane ‘układaniem mozaiki’ polega na ułożeniu wielu obrazów w kompozycję, będącą reprezentacją pewnej sceny trójwymiarowej. Drugie podeście, nazwane przez autora ‘wysoka jakość’, prowadzi do polepszenia jakości sekwencji video poprzez usunięcie z nich zakłóceń pochodzących z procesu tworzenia sekwencji. Zaprezentowano model rejestracji sekwencji video, dzięki któremu stworzono algorytm wyszukujący najbardziej prawdopodobną estymatę obrazu pochodzącego z modelu. Zaprezentowano wyniki działania algorytmu, porównując je to istniejących wcześniej tego typu rozwiązań, dających znakomite efekty. Opisany algorytm okazuje się dawać porównywalne lub lepsze efekty, mając przy tym znacząco mniejszą złożoność obliczeniową. Jakość działania była testowana na prawdziwych zdjęciach, przedstawiających skomplikowane sceny, takie jak tekst czy twarze ludzkie, w operacjach tak złożonych jak tworzenie panoram o rozpiętości 360° czy wydobywanie informacji z sekwencji video niskiej jakości. Dodatkowo, w pracy przedstawiono nową metodę prezentacji stworzonego obrazu panoramicznego, która potrafi adaptacyjnie wybrać optymalny sposób rzutowania obrazu, odpowiedni dla danego przypadku. Również w (Xiong & Turkowski, 1998) przedstawiono system służący do generowania pełnych, obejmujących 360° panoram z prostokątnych obrazów zarejestrowanych z tego samego punktu. Rozwiązanie podzielono na trzy kroki, pierwszy z nich to nałożenie zachodzących obrazów na siebie, stosując do tego przekształcenie projekcji. Autorzy zaproponowali kombinację opartej na gradiencie metody optymalizacji i liniowego wyszukiwania opartego na korelacji. Taka metoda daje odpowiednie dopasowanie obrazów do siebie, nawet przy drastycznych różnicach naświetlenia dwóch obrazów i niewielkim zjawisku paralaksy. W drugim kroku, biorąc macierze opisujące projekcję oraz ich skojarzone macierze Hesjanu, jako argumenty wejściowe, wyliczane są wewnętrzne i zewnętrzne parametry każdego obrazu poprzez globalną optymalizację. Celem jest tutaj zminimalizowanie ogólnych rozbieżności obrazów w całym regionie, w którym obrazy na siebie zachodzą, jednocześnie konwertując macierze opisujące projekcję na parametry związane z aparatem, takie jak długość ogniskowej soczewki, format zdjęcia, jego środek, orientacja w trzech wymiarach itp. Osiągane jest to poprzez minimalizację odpowiedniej funkcji celu. Trzeci krok polega na złożeniu wszystkich obrazów w panoramę stosując piramidę opartą o Laplasjan. Taki zabieg pozwala wygładzić krawędzie złączeń obrazów oraz wyeliminować niewielkie pozostałości niedopasowań spowodowane efektem paralaksy lub niedokładnego ustawienia pary obrazów. Maski

20

Page 21: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

służące do wygładzania przejść między obrazami są generowane automatycznie dzięki odpowiedniej transformacie. Dodatkowo, autorzy opisali konstrukcję interfejsu użytkownika, w którym może on dokonać niezbędnych operacji, takich jak inicjalizacja, czy ustawienia własne. Artykuł jest przydatnym źródłem doprecyzowującym wiele niedomówień w innych źródłach. Ciekawa, nowatorska metoda została zaprezentowana w (Yoon & Ryoo). Autorzy proponują mapowanie otoczenia, z którego pobrane zostały obrazy na powierzchnię dwóch przecinających się prostopadle walców, nazwanych Orthogonal Cross Cylinder (OCC). Powierzchnia taka powstaje poprzez przecięcie cylindra osi Y z cylindrem osi Z. Dzięki zastosowaniu tej metody możemy pozbyć się dziwnych zachowań występujących w tradycyjnych metodach. Dodatkowo, każda jednostka powierzchni teksturowanej zajmuje w tym wypadku jednakową powierzchnię, nie będąc rozciągniętą. Tak reprezentowane otoczenie może być również oszczędniej przechowywane, dzięki bardziej dokładnemu dopasowaniu próbkowania. Autorzy piszą także, że w zaproponowanym przez nich podejściu renderowanie sceny mapowanej na OCC jest szybsze, dlatego polecają wykorzystanie tego modelu w systemach nawigacyjnych. Jest to ciekawe rozwiązanie, jednak trudne do wykorzystania w praktycznym systemie do tworzenia obrazów panoramicznych, ponieważ obrazy te wymagałyby specjalnej przeglądarki, sprawdzające się w przypadku gdy możemy zastosować dedykowaną aplikację do odtwarzania obrazów.

Warto zapoznać się z metodą tworzenia obrazów panoramicznych wspomaganych odpowiednim, specjalistycznym sprzętem fotograficznym. W (Bakstein & Pajdla, 2002) zaprezentowano technikę pozwalającą tworzyć obrazy panoramiczne obejmujące pole widzenia o rozpiętości 360° x 360° z użyciem soczewki o bardzo szerokim kącie widzenia typu ‘fish eye’. Został opisany sposób kalibracji aparatu rozszerzony o kalibrację aparatu z obiektywem szerokokątnym, o kącie widzenia szerszym niż 180°. Kalibrację zaprezentowano na praktycznym przykładzie, stosując obiektyw typu ‘fish eye’ firmy Nikon, będący przykładem niedrogiej soczewki wysokiej jakości, posiadającej kąt widzenia o rozpiętości aż 183°! Zastosowanie obiektywu zaprezentowano w użyciu w aplikacji, tworzącej mozaikę 360x360, o kącie widzenia do 360° w obu kierunkach! Artykuł ten jest dobrym przykładem kontrastującym z podejściem, prezentowanym w większości prac. Pokazuje, że obrazy panoramiczne można skutecznie tworzyć dzięki odpowiedniemu sprzętowi, a nie tylko w procesie obróbki i łączenia zdjęć. Programowe tworzenie panoram jest zatem tylko symulacją, usiłującą naśladować opisane w artykule podejście, zatem efekty uzyskane w sposób opisany w artykule mogą być celem, do którego dążyć powinny programy łączące obrazy w panoramy.

W związku z tym, że obrazy panoramiczne tworzone są zwykle ze zdjęć, zrobionych aparatem cyfrowym i zapisanych w formacie JPEG, warto zastanowić się nad zaprezentowaną w (Jachimski & Mikrut, 2006) analizą wpływu kompresji JPEG na automatyczne wykrywanie cech szczególny w obrazach cyfrowych. Autorzy badali takie cechy obrazu jak krawędzie obiektów czy punkty przecięcia się krawędzi. Następnie dokonano analitycznej oceny degradacji tych cech, poprzez miary oparte na statystyce, skupiając się na informacjach

21

Page 22: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

dotyczących geometrii obrazu. Wpływ kompresji badano na podstawie takich miar straty jakości jak na przykład średni błąd położenia punktu w obrazie skompresowanym w stosunku do obrazu bez kompresji, czy korelacja między obrazami. Autorzy oparli badania na rzeczywistych obrazach satelitarnych posiadających cztery kanały spektralne: R, G, B oraz IR. Z przedstawionych badań wynika, że najmniej wrażliwy na degradację pod wpływem kompresji jest kanał R. Warto też zauważyć, że przy stopniu kompresji 10:1 średni błąd położenia piksela nie przekracza wartości 0.5 piksela.

22

Page 23: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Wybór i rozmieszczenie obrazówWybór algorytmów i ustawienie ich parametrówWykonanie algorytmów i zapis obrazów wynikowych

3 Projekt aplikacjiAplikacja stworzona w ramach niniejszej pracy powinna dawać możliwość porównania działania algorytmów nie tylko na podstawie subiektywnej oceny wizualnego efektu działania, ale również na podstawie porównania określonych deterministycznych współczynników. Gotowa aplikacja musi zostać tak skonstruowana, aby użytkownik miał możliwość łatwego wyboru algorytmów, które mają zostać zastosowane do połączenia obrazów. W związku z łatwością użycia jak i dobrą szybkością działania postanowiono zaprojektować program pod wykonanie go w języku Java 1.6, implementując go w graficznym środowisku programistycznym Netbeans 6.0 ze względu na łatwość budowy graficznych interfejsów użytkownika, do których postanowiono wykorzystać dostępne biblioteki Swing oraz AWT. Dodatkowo, postanowiono zwrócić uwagę na możliwość łatwego rozwijania aplikacji poprzez dodawanie nowych funkcjonalności. Projektowanie aplikacji zostało podzielone na abstrakcyjny projekt ogólny opisujący schemat działania, oraz na projekt szczegółowy opisujący technologie wykorzystane w każdym z kroków, przedstawiony w następnym rozdziale.

Schemat działania aplikacji został sprowadzony do trzech kroków: wybór i rozmieszczenie obrazów, wybór algorytmów i ustawienie ich parametrów oraz wykonanie algorytmów na obrazach i zapis obrazów wynikowych (Rysunek 2).

Główne okno aplikacji będzie zawierać panel z trzema zakładkami, odpowiadającymi powyższym krokom. Korzystanie z aplikacji odbywać się będzie według schematu użycia przedstawionego na Rysunek 3.

23

Rysunek 2: Schemat działania aplikacji

Page 24: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Rysunek 3: Schemat UML użycia zaimplementowanej aplikacji

24

Page 25: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

W kroku pierwszym użytkownik będzie wybierał z dysku obrazy, które będzie chciał połączyć w panoramę. Obrazy będą wczytywane a następnie wyświetlane na ekranie. Użytkownik będzie określał położenie obrazów względem siebie poprzez przeciąganie ich przy pomocy wskaźnika myszy w odpowiednie miejsca. W związku z tym, że wykorzystywane biblioteki graficzne nie udostępniają komponentów udostępniających taką funkcję, postanowiono zbudować odpowiedni komponent rozszerzając klasę java.awt.Canvas. Jest to klasa komponentu pozwalającego na rysowanie na nim obrazów i kształtów; poprzez dołączenie do niej odpowiednich metod można zbudować z niej komponent odpowiadający postawionym wymaganiom. Struktura danych zawierająca obrazy wejściowe a także wektor opisujący położenie każdego z nich będą wykorzystywane w trzecim kroku w celu wyznaczenia kolejności przetwarzania obrazów.

Kolejnym krokiem jest wybór algorytmów oraz ustawienie ich parametrów. Również w tym przypadku z bogatej oferty komponentów dostępnych w bibliotekach Swing oraz AWT nie znalazło się nic, co pozwalałoby na efektywną prezentację na ekranie dostępnych algorytmów umożliwiając zmianę ich parametrów oraz łatwe dodanie każdego z nich do puli algorytmów, które mają zostać wykonane na obrazach. W związku z tym postanowiono rozwinąć istniejący komponent javax.swing.JTabbedPane o dodatkowy element Checkbox umieszczony na zakładce odpowiadającej danemu algorytmowi.

Aby umożliwić łatwe rozwijanie aplikacji o nową funkcjonalność zaplanowano użyć technologii pozwalającej na dynamiczne wczytywanie skompilowanych klas. Technologia ta zostanie wykorzystana na przykład do wczytywania klas implementujących algorytmy łączące obrazy w panoramy. Wykorzystanie jej oznacza, że aplikacja nie wymaga ponownej kompilacji w momencie dodania nowego algorytmu, wystarczy jedynie umieścić skompilowaną klasę algorytmu implementującą udostępniony interfejs w odpowiednim pakiecie, a będzie on widoczny i wykorzystywany w aplikacji. Klasa taka musi zawierać również metodę budującą graficzny interfejs pozwalający na sterowanie algorytmem. Ta sama technologia zostanie wykorzystana do ładowania funkcji wygładzających oraz do funkcji liczących różnicę między pikselami.

Ostatnim krokiem będzie uruchomienie działania algorytmów. Efektem są obrazy panoramiczne wykonane przez poszczególne algorytmy. Przetwarzanie obrazów będzie odbywało się w kolejności określonej podczas ustawiania obrazów wejściowych, od lewej do prawej. Rozważono dwie możliwe metody dopasowywania obrazów względem siebie. Jeśli będziemy wyliczać pozycję lewego obrazu względem nieruchomego prawego zyskujemy możliwość stworzenia prostej rekursywnej funkcji przyjmującej jako lewy obraz wynik poprzedniego wykonania funkcji, który będzie rósł wraz z każdym jej wykonaniem o kolejno dodawane nowe prawe obrazy. Zastosowanie takiej metody ma jednak bardzo ujemną właściwość akumulacji błędów aproksymacji, spowodowaną koniecznością wielokrotnego przekształcania powiększającego się lewego obrazu. Drugim z podejść jest dopasowanie pozycji obrazu prawego względem nieruchomego obrazu lewego. Aby uniknąć akumulacji błędów należy najpierw dopasowywać obrazy parami, a ostatecznie podczas rysowania

25

Page 26: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

kolejnego obrazu prawego dodać przekształcenia, którym poddano obraz leżący po jego lewej stronie. Do implementacji wybrano drugie podejście.

Aby umożliwić wizualne porównanie wyników obrazy prezentowane będą w oddzielnych zakładkach. Porównanie deterministycznych wartości odpowiadających każdemu algorytmowi umożliwione będzie dzięki prezentacji w tabeli wyliczonych wartości, przesłanych przez kolejne algorytmy poprzez odpowiedni mechanizm do klasy odpowiedzialnej za uzupełnianie tabeli. Aby przyspieszyć działanie programu, planuje się zastosowanie przetwarzania wielowątkowego, umożliwiając tworzenie obrazów wyjściowych wieloma algorytmami jednocześnie. Zapis wybranych obrazów wynikowych będzie obsługiwany poprzez przycisk umieszczony w zakładce zawierającej dany obraz.

Budowa aplikacji będzie odbywała się według zasady „od ogółu do szczegółu”. Na początku zostaną stworzone ramy aplikacji, graficzny interfejs użytkownika, narzędzia wykorzystywane podczas tworzenia obrazów panoramicznych oraz moduły służące do obsługi plików wejściowych i wyjściowych. Następnie dodawane będą kolejne algorytmy, spajając całość procesu tworzenia obrazów wyjściowych. W końcowym etapie należy zająć się dopracowaniem szczegółów i usunięciem pojawiających się błędów. Diagram klas UML widoczny jest w załącznikach. Aplikacja skonstruowana według powyższego projektu pozwoli nie tylko na łatwe tworzenie obrazów panoramicznych, ale również na efektywne i dokładne porównanie między sobą różnych algorytmów.

26

Page 27: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

4 Wykorzystane algorytmy i metodyRozdział przedstawia szczegółowy opis wykorzystanych w tworzonej aplikacji algorytmów i metod służących stworzeniu obrazów panoramicznych.

4.1 Algorytmy ustawiające obrazyMając dane dwa obrazy będące składowymi obrazu panoramicznego, musimy wyznaczyć metodę opisującą ruch kamery pomiędzy zarejestrowaniem tych obrazów. Dzięki temu będziemy mogli ustawić obrazy względem siebie w odpowiedni sposób (Szeliski, 2006). Algorytmy te dzielimy na dwie grupy: algorytmami bezpośrednimi nazywamy algorytmy bazujące na dopasowaniu obrazów piksel po pikselu, natomiast algorytmami bazującymi na punktach kluczowych nazywamy te, które dopasowują między sobą punkty kluczowe znalezione w poszczególnych obrazach.

4.1.1 Algorytmy bezpośrednieUżywanie algorytmów bezpośrednich wymaga w pierwszym kroku określenia metryki błędu do porównania obrazów. Następnie należy zaproponować metodę poszukiwania najlepszej pozycji obrazów względem siebie. Najprostszą metodą jest sprawdzenie wszystkich możliwych pozycji, jednak w praktyce może się to okazać zbyt kosztowne, dlatego możemy zastosować metodę wyszukiwania hierarchicznego. Techniki te opisano poniżej.

4.1.1.1 Metryka błęduNajprostszą metodą określenia położenia dwóch obrazów względem siebie jest przesunięcie jednego z obrazów względem drugiego (Szeliski, 2006). Mając dany obraz wzorcowy I 0(x) opisany poprzez dyskretne wartości pikseli {x i=(x i , y i)} chcemy znaleźć jego położenie wewnątrz obrazu I 1(x). Rozwiązanie bazujące na metodzie najmniejszych kwadratów polega na znalezieniu minimum sumy kwadratów różnic (sum of squared differences, SSD) danej wzorem

ESSD=∑i

[ I 1 (x i+u )−I 0 (x i ) ]2=∑i

ei2

1\*MERGEFORMAT

()

gdzie u=(u, v) to przesunięcie, natomiast e i=I 1 (x i+u )−I0( xi) nazywane jest błędem residualnym. W związku z tym, że w przypadku obrazów panoramicznych tylko niewielka część obrazów wejściowych zachodzi na siebie, wartość wyliczona powyższym wzorem byłaby zależna od ilości nakładających się pikseli. Należy zatem obliczoną sumę podzielić przez ilość pikseli dla których była liczona, otrzymując tym samym średnią różnicę dla piksela. Obrazy kolorowe można przetwarzać poprzez sumowanie różnicy dla trzech kolorów.

Powyższa formuła może zostać zmodyfikowana tak, aby była mniej wrażliwa na szum poprzez zamianę błędu kwadratowego na odpowiednio odporną funkcję, która rosłaby wolniej niż kwadratowa funkcja kary skojarzona z metodą najmniejszych kwadratów.

27

Page 28: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Przykładem takiej funkcji może być suma różnic bezwzględnych (sum of absolute differences, SAD) używana przy estymacji ruchu w kodowaniu sekwencji video z powodu małej złożoności obliczeniowej:

ESAD=∑i

|I 1 (x i+u )−I 0(x i)|=∑i

|e i|.2\*

MERGEFORMAT()

Inną korzystną funkcją, zachowującą się jak kwadratowa dla małych wartości, ale rosnąca wolniej z dala od początku układu może być funkcja Gemana-McClure’a (Szeliski, 2006):

EGM=∑i

[ I 1 (x i+u )−I0(x i)]2

1+[ I 1 ( xi+u )−I 0(x i)]2/a2,

3\*MERGEFORMAT

()

gdzie a jest stałą, uważaną za wartość odcięcia dla wyjątków, a jej wartość można wyznaczyć na przykład poprzez obliczenie mediany różnic bezwzględnych i pomnożenie przez 1.4.

4.1.1.2 Poszukiwanie optymalnego rozmieszczenia obrazówNajprostszym podejściem przy poszukiwaniu optymalnego rozmieszczenia obrazów jest obliczenie opisanej wyżej wartości błędu pomiędzy pikselami dla wszystkich możliwych pozycji a następnie wybranie tej, dla której wartość błędu jest najmniejsza. Biorąc jednak po uwagę fakt, że transformacja związana z ruchem kamery musi zostać skompensowana co najmniej obrotem i translacją obrazu, przy nawet niewielkiej rozdzielczości skutkuje to ogromnymi ilościami działań do wykonania. W związku z tym bardzo użyteczny okazuje się algorytm wyszukiwania hierarchicznego (Szeliski, 2006): najpierw konstruowana jest piramida zawierająca obraz wejściowy przeskalowany do mniejszej rozdzielczości, a następnie poszukiwane jest położenie obrazów względem siebie dla najmniejszej rozdzielczości. Znaleziona pozycja na niższym poziomie szczegółów jest pozycją startową do wyszukiwania dokładniejszej pozycji w małym jej sąsiedztwie na wyższym poziomie. Algorytm ten nie gwarantuje uzyskania identycznego wyniku jak przy sprawdzeniu wszystkich możliwych pozycji, ale wynik powinien być zadowalający przy znacznie krótszym czasie działania. W celu opisu formalnego, zdefiniujmy

I k(l )(x j)←

~I k(l−1 )(2x j)

4\*MERGEFORMAT

()

jako obraz na poziomie l piramidy skonstruowany poprzez zmniejszenie rozdzielczości obrazu na poziomie l-1 o połowę. Na najwyższym poziomie szukamy pozycji u(l) , która minimalizuje różnicę pomiędzy obrazami I 0

(l) oraz I 1(l). Zwykle jest to wykonywane poprzez przeszukanie

wszystkich możliwych pozycji (w zadanym zakresie) u(l)ϵ 2−l [−S ,S ]2, gdzie S to zadany zakres na poziomie o oryginalnej rozdzielczości.

Kiedy właściwy wektor przemieszczenia zostanie wybrany, jest on wykorzystywany do wyznaczenia prawdopodobnego wektora przemieszczenia

28

Page 29: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

u(l−1 )←2u(l)5\*

MERGEFORMAT()

na poziomie o większej ilości szczegółów. Poszukiwanie optymalnego wektora przemieszczenia jest następnie powtarzane w niewielkim sąsiedztwie wokół wartości wyznaczonych w poprzednim kroku, na przykład u(l−1 )±1. W ostatnim kroku możemy wyszukać optymalne parametry wektora przemieszczenia nie tylko pośród liczb całkowitych, ale również wśród ich ułamków. Wartości dla ułamkowych pozycji pikseli muszą zostać interpolowane przy pomocy odpowiedniej techniki.

Aby zautomatyzować proces tworzenia obrazów panoramicznych przy pomocy opisywanego algorytmu warto zastanowić się nad formułą pozwalającą na wyznaczenie optymalnej liczby poziomów piramidy, która będzie zastosowana w wyszukiwaniu hierarchicznym. Liczba poziomów musi być możliwie duża, ale ograniczona tak, aby ilość szczegółów na najniższym poziomie była wystarczająca do znalezienia właściwej pozycji obrazów względem siebie. W związku z tym, że wymiary obrazu będą zmniejszane o połowę, co poziom piramidy, ilość poziomów może być obliczona ze wzoru:

n=log2wt+1,

6\*MERGEFORMAT

()

gdzie: w – długość jednego z boków obrazu,

t- minimalna długość tego boku, pozwalająca na właściwe dopasowanie.

Metodą prób i błędów ustalono, że optymalnym ograniczeniem dla dłuższego boku obrazu jest 16 pikseli.

4.1.2 Algorytmy bazujące na punktach kluczowychAlgorytmy bazujące na cechach w pierwszym kroku zajmują się znalezieniem punktów szczególnych w danych obrazach. Następnie te punkty szczególne są dopasowywane parami, i na podstawie ich położenia wyliczany jest wektor przemieszczenia. Jakość algorytmu w ogromnym stopniu zależy od jakości znalezionych punktów szczególnych i ich opisu. Algorytm powinien znajdować te punkty w odpowiednich miejscach niezależnie od zmian w naświetleniu, położeniu, orientacji obrazu a także w pewnym stopniu od zmian punktu widzenia czy skali.

4.1.2.1 SIFT: Scale Invariant Feature TransformAlgorytm ten jest obecnie najpowszechniej stosowanym algorytmem przy tworzeniu obrazów panoramicznych, ze względu na jego bardzo dobre wyniki w porównaniu do innych tego typu algorytmów (Mikolajczyk & Schmid). Operuje na obrazach w skali szarości.

29

Page 30: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

4.1.2.1.1 Wykrywanie ekstremów w przestrzeni skaliPunkty mogące być kluczowymi identyfikowane są za pomocą wydajnego algorytmu, a następnie dalej sprawdzane pod względem ich niezależności od przekształceń (Lowe,Distinctive Image Features from Scale-Invariant Keypoints, 2004). W pierwszym kroku punkty te są lokalizowane w obrazie oraz w konkretnej skali w taki sposób, aby mogły one być identycznie zlokalizowane w innym widoku tego samego obiektu. Następnie znajdowane są punkty niewrażliwe na zmianę skali poprzez wyszukiwanie cech stabilnych we wszystkich możliwych skalach, korzystając z ciągłej przestrzeni skali.

Przestrzeń skali obrazu zdefiniowana jest jako funkcja L(x , y , σ ) będąca splotem funkcji Gaussa o różnych skalach G(x , y , σ ) z obrazem wejściowym I ( x , y ):

L ( x , y , σ )=G ( x , y , σ )∗I ( x , y ) ,7\*

MERGEFORMAT()

Gdzie ¿ jest operatorem splotu oraz

G ( x , y , σ )= 1

2π σ 2e−( x2+ y2)/2σ 2

8\*MERGEFORMAT

()

Aby znalezione punkty kluczowe były stabilne w przestrzeni skali, stosuje się wyszukiwanie ekstremów tej przestrzeni stworzonej poprzez splot różnic funkcji Gaussa (Difference-of-Gaussian) z obrazem, D(x , y , σ ), która może zostać obliczona poprzez różnicę dwóch sąsiadujących skali z uwzględnieniem stałego mnożnika k:

D ( x , y , σ )=(G ( x , y , kσ )−G ( x , y , σ ) )∗I ( x , y )=L ( x , y , kσ )−L (x , y , σ ) .9\*

MERGEFORMAT()

Funkcja ta wykorzystywana jest z powodu łatwości w obliczeniu, ponieważ wygładzony obraz L musi zostać wyznaczony w każdym przypadku opisu cech w przestrzeni skali, a D jest obliczana przez proste odjęcie obrazów (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004).

Oprócz tego udowodniono, że różnica funkcji Gaussa, zwana DoG, jest bliską aproksymacją znormalizowanego Laplasjanu z funkcji Gaussa σ 2∇2G, którego to ekstrema według (Mikolajczyk K. , 2002) są najbardziej stabilnymi punktami kluczowymi w obrazach, w porównaniu do wielu innych dostępnych funkcji.

Zależność pomiędzy D a σ 2∇2G może zostać wyprowadzona ze wzoru na dyfuzję ciepła:

∂G∂σ

=σ∇2G .10\*

MERGEFORMAT()

30

Page 31: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Wynika stąd, że ∇2G może zostać wyliczone ze skończonej aproksymacji ∂G∂σ

korzystając z

różnicy pomiędzy sąsiadującymi skalami kσ oraz σ :

σ ∇2G=∂G∂σ

≈G ( x , y , kσ )−G(x , y , σ )

kσ−σ,

11\*MERGEFORMAT

()

a zatem:

G ( x , y , kσ )−G ( x , y , σ )≈ (k−1 )σ2∇2G .12\*

MERGEFORMAT()

To pokazuje, że jeśli funkcja DoG posiada skale różniące się o stałą wartość, automatycznie uwzględnia wtedy normalizację skali σ 2 wymaganą przez Laplasjan niezależny od skali. Współczynnik (k – 1) w równaniu jest stały dla wszystkich skali i nie wpływa na położenie ekstremów. Błąd aproksymacji zbliża się do zera wraz ze zbliżaniem się k do 1, jednak w praktyce okazało się (Lowe, Distinctive Image Features from Scale-Invariant Keypoints,2004), że aproksymacja ma znikomy wpływ na stabilność wykrywania ekstremów i ich lokalizacji, nawet dla stosunkowo dużych różnic między skalami, jak k=√2.

31

Page 32: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Na Rysunek 4. została zaprezentowana wydajna metoda konstrukcji D(x , y , σ ). Obraz wejściowy jest przyrostowo splatany z funkcją Gaussa, aby dawać w wyniku obrazy oddzielone w przestrzeni skali stałą wartością współczynnika k, zaprezentowana w lewej kolumnie. Każda oktawa w przestrzeni skali (odpowiadająca podwajaniu σ ) została podzielona na stałą ilość interwałów s, takich, że k=21/ s. Należy stworzyć s + 3 obrazy rozmyte dla każdej oktawy, tak, aby końcowe wykrywanie ekstremów obejmowało pełną oktawę. Sąsiadujące obrazy są od siebie odejmowane, aby stworzyć obrazy różnicowe DoG, pokazane po prawej stronie. Po przetworzeniu pełnej oktawy obraz rozmyty funkcją Gaussa o σ równej dwukrotności początkowej jej wartości (obraz ten będzie trzecim obrazem od początku stosu obrazów) jest skalowany poprzez wzięcie co drugiego piksela z każdej

32

Rysunek 4: Dla każdej oktawy przestrzeni skali obraz jest poddawany splotowi z funkcją Gaussa, dając w wyniku zestaw obrazów w lewej kolumnie. Sąsiadujące obrazy są odejmowane od siebie tworząc różnice w prawej kolumnie. Po każdej oktawie obraz rozmyty jest zmniejszany dwukrotnie.

Page 33: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

kolumny i każdego wiersza. Jakość próbkowania zależna od σ nie różni się od tej na początku poprzedniej oktawy, podczas gdy ilość obliczeń jest mocno zredukowana.

Rysunek 5: przykład piramidy rozmytych obrazów oraz piramidy DoG. Źródło: (Ostiak).

W celu wykrycia ekstremów w D(x , y , σ ) każdy piksel porównywany jest z jego ośmioma sąsiadami w danym obrazie oraz z dziewięcioma w skali ponad i poniżej, tak jak na Rysunek6. Piksel oznaczany jest jako ekstremum tylko gdy jest większy bądź mniejszy od wszystkich jego sąsiadów. Koszt takiego sprawdzenia jest dość stosunkowo niski, ze względu na fakt, że większość sprawdzanych punktów jest odrzucana podczas kilku pierwszych porównań.

Ważnym zagadnieniem jest ustalenie częstotliwości próbkowania przestrzeni obrazu i skali koniecznej do wiarygodnego znalezienia ekstremów. Niestety okazuje się, że nie istnieje określona minimalna odległość pomiędzy dwoma ekstremami, jako że mogą one leżeć bardzo blisko siebie. Można to zauważyć rozważając przypadek białego koła na czarnym tle, które będzie miało pojedyncze maksimum w przestrzeni skali w miejscu, gdzie pozytywny region centralny funkcji DoG dopasuje się do rozmiaru i położenia okręgu. Dla bardzo wydłużonej elipsy znajdziemy dwa ekstrema położone blisko jej końców, ale skoro położenie maksimów jest ciągłą funkcją obrazu, dla elipsy o umiarkowanym wydłużeniu znajdziemy się pomiędzy powyższymi przypadkami, z dwoma maksimami leżącymi bardzo blisko siebie. Z tego powodu należy znaleźć złoty środek pomiędzy wydajnością a dokładnością. W praktyce jednak okazuje się (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004), że ekstrema leżące blisko siebie są dość niestabilne nawet przy niewielkich zmianach w obrazie. Najlepsze wartości znajdowane są eksperymentalnie poprzez przestudiowanie wyników dla różnych częstotliwości próbkowania i wybranie tych dających najbardziej rzetelne rezultaty w warunkach symulacyjnych.

33

Page 34: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Rysunek 6: Ekstrema funkcji DoG są wykrywane poprzez porównanie piksela (oznaczonego jako X) z jego 26 sąsiadami (oznaczone kołami) w obszarze 3x3 w obrazie oraz jego dwóch sąsiednich skalach.

Częstotliwość próbkowania w dziedzinie skali została wyznaczona na podstawie badania 32 naturalnych obrazów o różnej tematyce. Każdy z obrazów został poddany różnym transformacjom, takim jak obrót, skalowanie, rozciąganie, zmiana kontrastu czy zaszumienie. Zmian dokonano syntetycznie, a zatem możliwe było precyzyjne określenie gdzie powinien znajdować się każdy punkt kluczowy znaleziony przed transformacją, co pozwoliło na pomiar powtarzalności i dokładności metod. Eksperyment wyraźnie wykazał, że największa powtarzalność osiągana jest przy 3 skalach na oktawę. Wynika to z faktu, że większa ilość skali na oktawę powoduje wykrycie znacznie większej ilości ekstremów lokalnych, które okazują się być mało stabilne i nie są znajdowane w obrazach po przekształceniu. Dzięki tak małej częstotliwości wykrywanie ekstremów jest mało kosztowne obliczeniowo.

Po określeniu częstotliwości próbkowania w dziedzinie skali należało określić częstotliwość próbkowania w przestrzeni zależną od skali wygładzania. Również w tym przypadku istnieje zależność pomiędzy częstotliwością a jakością wykrywania ekstremów, wynikająca z możliwej małej odległości pomiędzy ekstremami. Eksperymenty wykazały bardzo dobrą powtarzalność przy zastosowaniu σ=1,6 do wygładzania przed zbudowaniem oktawy skali. Oczywiście wygładzanie takie powoduje efektywną stratę dużej ilości informacji o wysokiej częstotliwości. Z tego powodu zdecydowano się na rozszerzenie obrazu, aby otrzymać większą ilość punktów kluczowych. Rozmiar obrazu jest zwiększany dwukrotnie przed zbudowaniem pierwszego poziomu piramidy, używając interpolacji liniowej. Zakładając, że obraz wejściowy charakteryzuje się rozmyciem o co najmniej σ=0,5 (jest to minimum, wymagane aby uniknąć efektu aliasingu), stąd obraz o dwukrotnie większym rozmiarze rozmyty jest z σ=1,0. Oznacza to, że potrzebne jest jedynie niewielkie dodatkowe rozmycie otrzymanego obrazu przed rozpoczęciem tworzenia oktawy skali. Działanie takie zwiększa

34

Page 35: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

liczbę stabilnych punktów kluczowych prawie czterokrotnie, jednak nie zauważono żadnych innych pozytywnych skutków dalszego rozszerzania obrazu (Lowe, Distinctive Image Featuresfrom Scale-Invariant Keypoints, 2004).

4.1.2.1.2 Wyznaczanie dokładnego położenia punktów kluczowychPo znalezieniu punktów mogących być kluczowymi, poprzez porównanie ich z sąsiednimi, następnym krokiem jest dokładne przeanalizowanie posiadanych danych na temat ich lokalizacji, skali oraz stosunku krzywizn w sąsiedztwie. Pozwala to na odrzucenie punktów o słabym kontraście (a tym samym wrażliwych na szum) lub źle zlokalizowanych na krawędzi.

Dzięki opracowaniu metody (Lowe, Distinctive Image Features from Scale-InvariantKeypoints, 2004) dopasowania trójwymiarowej funkcji kwadratowej do lokalnych punktów próbkowych w celu określenia interpolowanej lokalizacji ekstremum udało się znacznie polepszyć dopasowanie i stabilność punktów kluczowych znalezionych jako piksele. Dokonuje się tego używając rozszerzenie Taylora do funkcji przestrzeni skali, D(x , y , σ ), przesuniętej tak, że początek układu współrzędnych znajduje się w punkcie próbkowania:

D ( x )=D+ ∂DT

∂ xx+ 12xT∂2D∂x2

x13\*

MERGEFORMAT()

gdzie D i jego pochodne przetwarzane są w punkcie próbkowania oraz x=(x , y , σ )T jest przesunięciem względem tego punktu. Położenie ekstremum, x, wyznaczane jest poprzez przyrównanie różniczki powyższej funkcji względem x do zera, co daje

x=−∂2D−1

∂ x2∂D∂ x

.14\*

MERGEFORMAT()

Hesjan oraz pochodna D są aproksymowane korzystając z różnic sąsiednich punktów. Jeśli przesunięcie x jest większe niż 0,5 w którymkolwiek z kierunków, oznacza to, że ekstremum leży bliżej innego piksela. W takim przypadku próbkowany punkt jest zmieniany i interpolacja odbywa się na tym punkcie. Wynikowe przesunięcie x jest dodawane do położenia tego punktu aby otrzymać interpolowane położenie tego ekstremum.

Obliczenie wartości funkcji w ekstremum, D( x ), jest przydatne przy odrzucaniu niestabilnych punktów kluczowych o niskim kontraście. Wartość tej funkcji można obliczyć ze wzoru

D ( x )=D+ 12∂DT

∂ xx .

15\*MERGEFORMAT

()

4.1.2.1.3 Usuwanie wpływu krawędziZe względów stabilności usuwanie punktów kluczowych o niskim kontraście nie jest konieczne, natomiast funkcja DoG daje wysoką wartość wzdłuż krawędzi nawet, jeśli

35

Page 36: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

zlokalizowanie tam punktu kluczowego nie jest silnie uzasadnione (Lowe, Distinctive ImageFeatures from Scale-Invariant Keypoints, 2004). Skutkuje to brakiem stabilności na niewielki szum. Maksimum funkcji DoG niewiele wyróżniające się ponad otaczające je wartości będzie charakteryzowało się wysoką wartością krzywizny poprzecznej do krawędzi, natomiast niską wzdłuż krawędzi. Krzywizny mogą zostać wyliczone z macierzy Hesjanu 2x2, H, wyznaczonej dla miejsca i skali związanej z punktem kluczowym:

H=[Dxx D xy

Dxy D yy] 16\*

MERGEFORMAT()

Wartości pochodnych wyliczane są poprzez różnice sąsiednich pikseli.

Wartości własne macierzy H są proporcjonalne do krzywizn D. W związku z tym, że interesują nas nie same wartości własne, ale ich stosunek, możemy wprowadzić α jako większą z wartości własnych oraz β jako mniejszą. Sumę tych wartości możemy obliczyć jako ślad H, natomiast iloczyn jako wyznacznik:

Tr (H )=D xx+D yy=α+β ,17\*

MERGEFORMAT()

Det (H )=D xxD yy−¿

18\*MERGEFORMAT

()

W przypadku, w którym wyznacznik jest ujemny wartości krzywizn są różnych znaków, oznacza to, że punkt nie jest ekstremum i jest odrzucany. Niech r będzie stosunkiem większej wartości własnej do mniejszej, tak, że α=rβ . Wówczas

Tr (H )2

Det (H )=

(α+ β)2

αβ=

(rβ+β)2

rβ2=

(r+1)2

r,

19\*MERGEFORMAT

()

jest zależne jedynie od stosunku wartości własnych, a nie ich wartości. Wyniki powyższego równania jest minimalny, jeśli wartości własne są sobie równe, a rośnie wraz ze wzrostem r. A zatem chcąc sprawdzić czy stosunek wartości własnych jest większy od jakiejś wartości, r, musimy jedynie sprawdzić

Tr (H )2

Det (H )<(r+1)2

r.

20\*MERGEFORMAT

()

Sprawdzenie tej nierówności jest bardzo wydajne obliczeniowo, zajmując zwykle mniej niż 20 operacji zmiennoprzecinkowych dla każdego punktu kluczowego.

36

Page 37: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

4.1.2.1.4 Przypisanie orientacjiPoprzez przypisanie orientacji do każdego znalezionego punktu kluczowego deskryptor tego punktu będzie stworzony relatywnie do jego orientacji przez co będzie niezależny od orientacji. Pomimo kilku wad, takich jak ograniczenie możliwości wykorzystania deskryptorów do tych niebazujących na spójności orientacji, metoda ta okazała się najbardziej stabilna (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004). Skala punktu kluczowego wykorzystywana jest do wybrania obrazu L spleconego z funkcją Gaussa o najbliższej skali, dzięki czemu wszystkie obliczenia dokonywane są niezależnie od skali. Dla każdej próbki L(x , y ) w danej skali obliczany jest kierunek θ ( x , y ) i wielkość m(x , y ) gradientu. Wartości te obliczane są na podstawie różnic pomiędzy pikselami:

m ( x , y )=√ (L ( x+1 , y )−L(x−1, y ))2+ (L ( x , y+1 )−L(x , y−1))221\*

MERGEFORMAT()

θ ( x , y )=tan−1 (( L ( x , y+1 )−L(x , y−1))/ (Lx+1 , y¿−L (x−1 , y )) )22\*

MERGEFORMAT()

Histogram orientacji jest tworzony na podstawie orientacji gradientów w sąsiedztwie wokół danego punktu. Histogram ten ma 36 przedziałów pokrywających 360 stopni. Każda wartość dodawana do histogramu jest ważona wielkością gradientu oraz oknem gaussowskim o σ równym 1,5 razy skala danego punktu kluczowego.

Maksima histogramu orientacji odpowiadają dominującym kierunkom lokalnego gradientu. Wybierany jest najwyższy wierzchołek, i jeśli w histogramie istnieje inne maksimum o wielkości co najmniej 80% najwyższego, tworzony jest kolejny punkt kluczowy z tą orientacją. Oznacza to, że w punktach, dla których w histogramie istnieje wiele wierzchołków o podobnej wielkości zostanie stworzonych wiele punktów kluczowych o tej samej lokalizacji, ale różnych orientacjach. Zwykle około 15% punktów posiada wiele orientacji, ale wpływa to znacząco na stabilność dopasowania punktów kluczowych (Lowe, Distinctive Image Featuresfrom Scale-Invariant Keypoints, 2004). Na koniec trzy wartości histogramu najbliższe każdego wierzchołka interpolowane są parabolą, aby lepiej wyznaczyć położenie wierzchołka.

Przykład zastosowania algorytmu SIFT można zobaczyć na Rysunek 11A.

4.1.2.1.5 Lokalny deskryptor obrazuOpisane powyżej operacje przyporządkowały każdemu punktowi kluczowemu lokalizację, skalę oraz orientację. Parametry te zostały wyliczone z powtarzalnością zapewniającą niezmienniczość względem nich. Następnym krokiem jest zatem stworzenie deskryptora obszaru obrazu będącego bardzo indywidualnym a jednocześnie możliwie niezmienniczym względem pozostałych przekształceń, takich jak zmiana naświetlenia czy punktu widzenia. Autor algorytmu po wielu badaniach (Lowe, Distinctive Image Features from Scale-InvariantKeypoints, 2004) zdecydował się na zastosowanie podejścia bazującego na biologicznym modelu widzenia jako funkcji neuronów w korze mózgowej.

37

Page 38: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Kierunki i wartości gradientu Deskryptor punktu kluczowego

Rysunek 7. przedstawia sposób tworzenia deskryptora. W pierwszym kroku wyznaczane są wielkość i kierunek gradientu w punktach wokół punktu kluczowego, używając skali punktu kluczowego jako poziomu rozmycia gaussowskiego obrazu. Dla osiągnięcia niezmienniczości względem obrotu współrzędne deskryptora oraz kierunki gradientów obracane są relatywnie do orientacji punktu kluczowego. Ze względów wydajności gradienty są wyliczane zawczasu dla wszystkich poziomów piramidy. Widoczne są one jako małe strzałki po lewej stronie Rysunek 7.

Gaussowska funkcja ważąca o σ równym połowie wielkości okna deskryptora stosowana jest do wyliczenia wielkości gradientu w każdym punkcie. Taki zabieg stosuje się aby zapobiec nagłym zmianom w deskryptorze przy niewielkich zmianach w pozycji okna, oraz aby nadać mniejsze znaczenie gradientom leżącym daleko od środka deskryptora, ponieważ są one bardziej narażone na błędy.

Deskryptor punktu kluczowego pokazany jest po prawej stronie Rysunek 7. Pozwala on na znaczne zmiany w położeniu gradientów dzięki zastosowaniu podobszarów o wielkości 4x4 pola. Na rysunku widocznych jest osiem kierunków dla każdego histogramu, z długościami strzałek odpowiadającymi wielkościom gradientów. Próbka gradientu po lewej stronie może przemieścić się aż o 4 pozycje próbkowania dając wciąż ten sam histogram po prawej stronie.

38

Rysunek 7: Deskryptor punktu kluczowego tworzony jest poprzez obliczenie wartości i kierunku gradientów w każdym punkcie w danym sąsiedztwie, widoczne po lewej stronie. Wartości gradientów ważone są za pomocą okna gaussowskiego, oznaczonego zielonym okręgiem. Wartości te są następnie akumulowane w histogramach obejmujących podobszary 4x4, widoczne po prawej stronie.

Page 39: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Ważne jest, aby zapobiec wszelkim efektom wynikającym z granicznego przejścia danej próbki z jednego histogramu do drugiego lub z jednego kierunku gradientu w inny. W związku z tym używana jest trójliniowa interpolacja przy przyporządkowywaniu danej wartości do odpowiedniego przedziału histogramu. Innymi słowy, każda wartość mnożona jest przez wagę równą 1 – d dla każdego wymiaru, gdzie d równe jest odległości próbki od środkowej wartości przedziału histogramu.

Deskryptor budowany jest z wektorów zawierających wartości ze wszystkich histogramów, odpowiadające długościom strzałek po prawej stronie Rysunek 7. Widać tam macierz 2x2 histogramów, jednak eksperymentalnie (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004) najlepsze rezultaty zostały osiągnięte dla macierzy 4x4 histogramy zawierających 8 przedziałów każdy. Daje to 128 wartości w deskryptorze dla każdego punktu kluczowego.

Na sam koniec tworzenia deskryptora jest on modyfikowany tak, aby zapewnić punktowi kluczowemu stabilność względem naświetlenia. Wektor wartości deskryptora jest normalizowany do długości jednostkowej. Zmiana kontrastu w obrazie, podczas której wartość każdego piksela jest mnożona przez stałą spowoduje pomnożenie wartości gradientów przez tą samą stałą, a zatem taka zmiana zostanie zredukowana przez normalizację. Zmiana jasności poprzez dodanie stałej do każdego piksela nie wpłynie na zmianę wartości gradientów, ponieważ są one liczone z różnicy pomiędzy pikselami. Wynika z tego, że deskryptor jest niezmienniczy względem liniowych zmian w naświetleniu. W przypadkach rzeczywistych występują jednak również nieliniowe zmiany w naświetleniu, wynikające z zmian w nasyceniu kamery lub oświetlenia przy zmianie punktu widzenia. Zmiany te mogą powodować duże różnice w wartościach gradientów, jednak mało prawdopodobne jest, że spowodują zmiany kierunków gradientów. Dlatego należy zredukować wpływ dużych wartości gradientów poprzez obcięcie wartości w znormalizowanym wektorze tak, aby żadna z nich nie była większa od 0,2, a następnie ponownie znormalizować wektor. Oznacza to ograniczenie wpływu dużych wartości gradientu na dopasowanie, a zwiększenie wpływu dopasowania kierunków gradientu. Wartość 0,2 została wyznaczona eksperymentalnie (Lowe, Distinctive Image Features fromScale-Invariant Keypoints, 2004).

4.1.2.1.6 Dopasowanie punktów kluczowychZastosowanie algorytmów wyszukujących punkty kluczowe do rozpoznawania obiektów polega na dopasowaniu znalezionych punktów lub grup punktów do odpowiadających im punktów dla obiektu modelowego. Zwykle najpierw szuka się dopasowania dla pojedynczych punktów do punktów będących już w bazie danych. Wiele z takich dopasowań jest błędnych, dlatego grupy co najmniej 3 punktów są następnie dopasowywane w taki sposób, aby zgadzały się one co do klasy obiektu i jego pozycji. Dopasowuje się grupy punktów, ponieważ mają one znacznie wyższe prawdopodobieństwo co do poprawności dopasowania niż pojedyncze punkty. Następnie każda z dopasowanych grup punktów jest sprawdzana dokładniej poprzez dopasowanie i zastosowanie przekształceń geometrycznych, jakim został

39

Page 40: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

poddany model, aby osiągnąć ułożenie takie jak na obrazie. Znalezienie tych przekształceń przesądza o poprawności interpretacji.

Najlepsze dopasowanie dla każdego punktu kluczowego znajdowane jest poprzez wyszukanie najbliższego jego sąsiada wśród punktów drugiego obrazu. Najbliższym sąsiadem jest punkt o najmniejszej odległości euklidesowej pomiędzy wektorami deskryptorów, opisanych w poprzednim rozdziale. Wiele ze znalezionych punktów szczególnych będzie leżało poza obszarem dopasowania, w związku z czym nie znajdą one właściwego dopasowania. Dlatego potrzebne jest zastosowanie kryterium pozwalającego na odrzucenie źle dopasowanych punktów. Niestety odrzucenie dopasowań, dla których odległość od najbliższego sąsiada jest większa od jakiejś ustalonej wartości nie spełnia tego zadania (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004), dlatego zaproponowano porównywanie odległości najbliższego sąsiada do drugiego najbliższego. Podejście takie będzie skuteczniejsze, ponieważ wiadomo, że prawidłowe dopasowanie będzie oparte na najbliższym sąsiedzie leżącym znacznie bliżej niż przy nieprawidłowym dopasowaniu, dla którego będzie występować wiele prawdopodobnych złych dopasowań o podobnych odległościach. Dopasowanie odległości drugiego najbliższego sąsiada może być uważane za estymowanie gęstości niewłaściwych dopasowań w danym fragmencie przestrzeni skali. Z przeprowadzonych eksperymentów (Lowe, Distinctive Image Featuresfrom Scale-Invariant Keypoints, 2004) wynika, że odrzucając dopasowania o stosunku odległości pierwszego do drugiego najbliższego sąsiada większym niż 0,8, odrzucamy aż 90% niewłaściwych dopasowań oraz zaledwie 5% właściwych.

Posiadając 128-wymiarowy wektor deskryptora potrzebujemy wydajnego algorytmu pozwalającego wyszukać najbliższych sąsiadów. Niestety nie istnieje żaden znany algorytm będący bardziej wydajny dla tak dużej ilości wymiarów, niż dokładne przeszukanie. W związku z tym wyszukiwaniem zajmuje się algorytm Best-Bin-First (BBF) (Lowe, DistinctiveImage Features from Scale-Invariant Keypoints, 2004). Algorytm ten korzysta ze zmodyfikowanego porządku przeszukiwania zastosowanego w algorytmie k-d tree. Wymaga on konstrukcji stosu jako kolejki pozwalającej na określenie porządku. Deskryptory w bazie są przeszukiwane względem ich odległości od przetwarzanego punktu. Przybliżona odpowiedź może zostać podana po sprawdzeniu określonej liczby punktów, zagłębiając się w kolejne poziomy stosu i estymując odległość znajdujących się tam punktów do aktualnie przetwarzanego, aż do stwierdzenia, że z dużym prawdopodobieństwem nie istnieje bliższy punkt. Modyfikacja polega na przerwaniu przeszukiwania po sprawdzeniu pierwszych 200 punktów. Przy około 100 000 punktów w bazie działanie takie przyspiesza wyszukiwanie dokładnego dopasowania o około dwa rzędy wielkości przy stracie mniej niż 5% prawidłowych dopasowań.

4.1.2.1.7 Wyznaczanie parametrów przekształcenia afinicznegoPoprawność dopasowania każdej grupy punktów kluczowych jest ostatecznie weryfikowana geometrycznie przy pomocy odpowiedniej metody znajdującej parametry przekształcenia afinicznego opisującego położenie obrazów względem siebie. Autor algorytmu SIFT

40

Page 41: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

proponuje metodę najmniejszych kwadratów (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004), jednak obecnie lepszymi rezultatami cechuje się metoda zwana RANSAC (RANdom SAmple Consensus), zastosowana nawet przez tego samego autora w aplikacji ilustrującej działanie algorytmu SIFT.

Transformacja afiniczna odpowiada obrotom trójwymiarowym płaszczyzny przy rzutowaniu prostopadłym na płaszczyznę ekranu, jednak może być złą aproksymacją obrotów trójwymiarowych obiektów niebędących płaszczyznami. Z tego powodu lepsze byłoby rozwiązanie macierzy fundamentalnej przekształcenia, jednak wymaga ono aż 7 par dopasowanych punktów a nawet więcej dla dobrej stabilności, podczas gdy rozwiązanie przekształcenia afinicznego wymaga tylko 3 par. Chcielibyśmy rozwiązywać dopasowania mając tylko 3 pary dopasowanych punktów, w związku z czym przekształcenie afiniczne jest lepszym punktem startowym, a słabą aproksymację tego przekształcenia możemy zniwelować pozwalając na duże błędy residualne.

Przekształcenie afiniczne punktu modelu [ x y ]T do punktu obrazu [uv ]T może zostać zapisane jako

[uv ]=[m1 m2m3 m4] [ xy ]+[ t xt y ]

23\*MERGEFORMAT

()

gdzie przesunięciem modelu jest [ t x t y ]T natomiast afiniczny obrót, skalowanie i rozciągnięcie

opisane są parametrami mi.

Chcemy rozwiązać powyższe równanie względem parametrów transformacji, a zatem przekształcamy je tak, aby zgrupować niewiadome w jednym wektorze:

[ x y 00 0 x

0 1 0y 0 1

……

] [m1m2m3m4t xt y

]=[uv⋮ ] 24\*MERGEFORMAT

()

Równanie to opisuje pojedynczą parę dopasowanych punktów, jednak każda następna para może zostać dodana, tworząc kolejne dwa rzędy w pierwszej i ostatniej macierzy. Co najmniej 3 pary potrzebne są do rozwiązania tego równania. Zapisując powyższe równanie w formie symbolicznej, otrzymamy

Ax=b25\*

MERGEFORMAT()

które może być rozwiązane metodą najmniejszych kwadratów. Rozwiązując

41

Page 42: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

x=[ AT A ]−1 AT b26\*

MERGEFORMAT()

minimalizujemy sumę kwadratów odległości punktów modelu rzutowanych na punkty obrazu. W przypadku, jeśli nasze dopasowania zawierają błędne pary, dane nie są idealne, w związku z czym uzyskane rozwiązanie również nie będzie idealne. W wielu przypadkach nie ma to dużego znaczenia, ponieważ może okazać się, że otrzymaliśmy najlepsze możliwe rozwiązanie, w sensie statystycznym, jednak, jeśli dane zawierają punkty leżące w sporej odległości od idealnego modelu, wyliczony model może być błędny.

W takim przypadku możemy zidentyfikować punkty o największych residuach w stosunku do znalezionego modelu (Sonka, Hlavac, & Boyle, 2008), mogą one zostać odrzucone a model dopasowania przeliczony. Taka metoda może wydawać się atrakcyjna i często pozwala osiągnąć pożądany efekt, jednak zakłada ona pewne z góry ustalone schematy na temat pochodzenia błędnych danych, co nie jest właściwe, ponieważ istnieją dwa rodzaje błędnych danych:

Błędy pomiarowe: obserwacje dokonane na obrazie lub parametry z nich wyliczone są błędne. Są one zwykle niewielkie a ich rozrzut opisany jest rozkładem normalnym a ich średnia wartość oscyluje wokół zera.

Błędy klasyfikacji: występują przy niewłaściwej klasyfikacji pewnych danych. Są one stosunkowo duże i nie ma powodów, aby sądzić, że ich średnia wartość będzie zbliżona do zera.

Błędy drugiego typu mogą wprowadzić tak duże zakłócenia, że opisana wyżej metoda częściej pogarsza niż polepsza rozwiązanie. Wynika to z założenia leżącego u podstaw metody najmniejszych kwadratów, że używanie jak największej ilości dostępnych danych będzie miało pozytywny efekt wygładzający. Jak opisano powyżej, w niektórych przypadkach jest to błędne założenie, i przeciwne podejście używania jak najmniejszej ilości danych może być lepsze. Takie podejście zastosowano w algorytmie RANSAC, czyli random sample consensus, który można opisać na następującym przykładzie (Sonka, Hlavac, & Boyle, 2008): przy rozważaniu dopasowania liniowego, dwa punkty wystarczająco definiują linię biegnącą przez nie. Można zatem wybrać losowo dwa punkty z dostępnego zestawu danych i założyć, że linia je łącząca jest prawidłowym modelem. Model ten możemy przetestować przez sprawdzenie ile z pozostałych danych leży „blisko” znalezionego rozwiązania – są to punkty consensusu. Jeśli ich liczba jest duża, przeliczenie wylosowanego modelu bazując na zestawie punktów consensusowych poprawi rozwiązanie bez potrzeby zajmowania się punktami leżącymi daleko od rozwiązania, mogącymi powodować błędy.

Formalnie algorytm RANSAC można przedstawić w następujących krokach (Sonka, Hlavac, &Boyle, 2008):

42

Page 43: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

1. Dane jest n punktów X={x1 , x2 ,…, xn }, których rozkład chcemy opisać modelem określonym przez co najmniej m punktów (m≤n, dla linii m=2).

2. Ustaw licznik iteracji k=1.3. Wybierz losowo m punktów z X i wylicz model na ich podstawie.4. Dla ustalonej tolerancji ε, określ ile elementów X leży w odległości mniejszej niż ε od

wyliczonego modelu. Jeśli liczba ta przekracza ustaloną wartość t, przelicz model bazując na grupie consensusowej.

5. Ustaw licznik iteracji k=k+1. Jeśli dla ustalonego K ,k<K , idź do kroku 3, w przeciwnym przypadku przyjmij model o największej grupie consensusowej lub zgłoś brak rozwiązania.

Algorytm wymaga ustalenia następujących parametrów:

ε, akceptowalne odchylenie od wyliczonego modelu, jego wartość nie może zostać ustalona analitycznie, empirycznie można na przykład dopasować model do m punktów, zmierzyć odchylenia i ustalić wartość ε, jako ilość punktów o odchyleniach poniżej średniej.

t, zadowalająca wielkość grupy consensusowej, sugeruje się (Fischler & Bolles, 1981) ustalenie wartości na t−m>5.

K, ilość iteracji algorytmu w poszukiwaniu zadowalającego dopasowania. Statystycznie uzasadniona wartość (Fischler & Bolles, 1981) to K=w−m, gdzie w jest prawdopodobieństwem z jakim losowo wybrany punkt będzie leżał w odległości mniejszej niż ε od ustalonego modelu.

Algorytm RANSAC okazuje się być godnym zaufania rozwiązaniem znajdującym zastosowanie w wielu dziedzinach związanych z widzeniem komputerowym.

4.1.2.2 FAST: Features from Accelerated Segment TestAlgorytm ten został wybrany do implementacji z powodu jego dużej szybkości działania oraz stabilność znalezionych punktów kluczowych. Operuje na obrazach w skali szarości.

4.1.2.2.1 Podstawy algorytmuKryterium testu segmentowego bazuje na okręgu stworzonym przez 16 pikseli wokół badanego punktu p (Rosten & Drummond, Machine learning for high-speed cornerdetection). Detektor punktów kluczowych klasyfikuje p jako punkt kluczowy jeśli w okręgu istnieje n sąsiadujących ze sobą pikseli, z których wszystkie mają jasność większą niż badany punkt I pplus ustalona wartość t, lub ciemniejsze niż I p−t , jak zaprezentowano na Rysunek 8. Widzimy tam test segmentowy wykonany dla n=12. Jest to wartość, dla której odrzucanie punktów niebędących punktami kluczowymi jest ułatwione, ponieważ wystarczy sprawdzić 4 piksele: pierwszy, piąty, dziewiąty i trzynasty – odpowiadające kierunkom kompasu. Jeśli ta część testu powiedzie się, należy sprawdzić wszystkie pozostałe punkty.

43

Page 44: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Rysunek 8: Dwunastopunktowy test segmentowy wykrywający narożniki w obrazie. Oznaczone piksele wykorzystywane są przy wykrywaniu, piksel p jest środkiem prawdopodobnego narożnika. Łuk oznaczony linią przerywaną przechodzi przez 12 sąsiadujących ze sobą pikseli jaśniejszych od p, o co najmniej wartość t. Źródło: (Rosten & Drummond, Machine learning for high-speed corner detection)

Metoda ta może zostać zastosowana dla innych wartości n jednak daje odrobinę gorsze rezultaty. Mimo takiej zalety testu segmentowego przeprowadzonego dla n=12, do implementacji wybrano wartość n=9. Uzasadnieniem jest wyraźnie lepsza powtarzalność wykrywania punktów kluczowych, co widać na Rysunek 9.

Rysunek 9: Wykres powtarzalności wykrywania punktów kluczowych w zależności od ilości punktów kluczowych, dla różnych wartości n. Dla n<9 wpływ krawędzi jest zbyt duży. Źródło: (Rosten & Drummond, Machine learning for high-speed corner detection)

4.1.2.2.2 Implementacja detektora punktów kluczowych przy pomocy uczenia maszynowego

Autorzy algorytmu zaprezentowali (Rosten & Drummond, Machine learning for high-speedcorner detection) sposób efektywnej implementacji niniejszego algorytmu przy pomocy uczenia maszynowego. Jest to proces dwustopniowy. Budując detektor oparty o daną

44

Pow

tarz

alno

ść

%

Ilość punktów

Page 45: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

wartość n, musimy najpierw wykryć wszystkie punkty kluczowe w zbiorze przykładowych obrazów korzystając z testu segmentowego dla danego n oraz t, opartego na powolnym algorytmie testującym po prostu wszystkie 16 pozycji położonych na okręgu wokół badanego punktu. Dla każdej pozycji względem badanego punktu p, x∈ {1…16 }, piksel w niej leżący oznaczony jako p→x może przyjmować jeden z trzech stanów:

Sp→x={d ,s ,b , I p−t<¿ I p−t ≤I p→x

I p→x

I p→x

≤ I p−t¿ I p+ t

¿

Wybierając kolejne x i obliczając ich Sp→x dla każdego p∈P (zbiór wszystkich pikseli we wszystkich obrazach) dzielimy P na trzy podzbiory: Pd , Ps , Pb, gdzie każde p jest przypisane do PS p→x.

W drugim etapie wprowadzamy zmienną K p typu boolean przyjmującą wartość prawda jeśli p jest punktem szczególnym, oraz fałsz w przeciwnym wypadku. Korzystamy z algorytmu, który zaczyna od wyboru x mówiącego najwięcej o tym, czy badany piksel jest punktem szczególnym, poprzez zmierzenie entropii K p. Entropia K zbioru P opisana jest wzorem:

H (P )=(c+c) log2 (c+c )−c log2 c−¿c log2 c¿27\*

MERGEFORMAT()

gdzie c=|{ p|K p jest prawd ą}| (ilość punktów szczególnych)

oraz c=|{ p|K p jest fa ł szem}| (ilość punktów nie będących szczególnymi)

Przyrost informacji związany z wybranym x jest dany wzorem:

H (P )−H (Pd )−H (Ps )−H (Pb)28\*

MERGEFORMAT()

Po wybraniu x o największym przyroście informacji, proces ten jest powtarzany rekursywnie dla każdego z trzech podzbiorów, na przykład xb wybierane jest aby podzielić Pb na Pb , d ,Pb ,soraz Pb , s, analogicznie dla xs oraz xd, gdzie każdy x wybierany jest tak, aby przynosić najwięcej informacji dla danego podzbioru. Proces jest zakończony, jeśli entropia podzbioru jest zerowa, czyli gdy wszystkie punkty p w podzbiorze mają tą samą wartość K p, a zatem wszystkie są punktami szczególnymi lub wszystkie nimi nie są. Wystąpienie takiej sytuacji jest pewne, ponieważ K jest funkcją danych uczących (Rosten & Drummond, Machine learningfor high-speed corner detection).

Stworzony w ten sposób zbiór danych pozwala zbudować drzewo decyzyjne mogące skutecznie klasyfikować punkty szczególne w obrazach ze zbioru uczącego, a to oznacza, że z dobrą aproksymacją drzewo zawiera zasady wybranego detektora punktów szczególnych FAST. To drzewo decyzyjne jest następnie konwertowane do kodu języka programistycznego,

45

Page 46: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

tworząc długi ciąg zagnieżdżonych dyrektyw if-else, który może zostać skompilowany i używany jako detektor punktów szczególnych.

4.1.2.2.3 Wytłumienie punktów niemaksymalnychPonieważ test segmentowy nie oblicza wartości funkcji odpowiedzi dla punktów szczególnych, wytłumienie punktów niebędących maksymalnymi nie jest możliwe bezpośrednio po ich wykryciu. Z tego powodu musi zostać wyznaczona funkcja V przypisująca wartość odpowiedzi każdemu punktowi, i na jej podstawie można usunąć punkty sąsiadujące z punktami o wyższej wartości V, dokonując tym samym wytłumienia punktów niemaksymalnych. Istnieje kilka intuicyjnych definicji opisujących funkcję V (Rosten& Drummond, Machine learning for high-speed corner detection):

1. Maksymalna wartość n, dla której p jest wciąż punktem szczególnym.2. Maksymalna wartość t, dla której p jest wciąż punktem szczególnym.3. Suma różnic bezwzględnych pomiędzy wartościami pikseli sąsiadujących leżących na

okręgu wokół punktu p oraz badanego punktu p.

Ponieważ definicje 1 i 2 zwracają wartości skwantowane, wiele punktów szczególnych posiadałoby te same wartości. W związku z tym używana jest definicja trzecia zmodyfikowana w celu przyspieszenia obliczeń:

V=max❑ (∑x∈ Sb|I p→x−I p|−t ,∑

x∈ Sd

|I p−I p→x|−t )29\*

MERGEFORMAT()

gdzie

Sb={x∨I p→x≥ I p+t }Sd={x∨I p→x≤ I p−t }

Przykład zastosowania algorytmu FAST można zobaczyć na Rysunek 11B.

4.1.2.2.4 Deskryptor punktów kluczowych i ich dopasowaniePo wykryciu punktów kluczowych w obu obrazach mających tworzyć panoramę, należy dopasować odpowiadające sobie punkty znalezione w obu obrazach w pary. Aby punkty te były jednoznacznie identyfikowalne, należy przyporządkować każdemu z nich deskryptor opisujący dany punkt. W związku z brakiem możliwości stworzenia deskryptora z danych zwracanych przez algorytm FAST, ponieważ wartości opisanej powyżej funkcji V nie są dostatecznie unikalne, zdecydowano się na zastosowanie i implementację deskryptora używanego przez algorytm SIFT, opisany wcześniej w rozdziale Lokalny deskryptor obrazu. Dopasowanie punktów kluczowych w pary odbywa się zatem również tak samo jak dla algorytmu SIFT, czego opis można znaleźć w rozdziale Dopasowanie punktów kluczowych. Do wyznaczenia parametrów przekształcenia afinicznego opisującego położenie obrazów tworzących panoramę względem siebie wybrano algorytm RANSAC, opisany w rozdziale Wyznaczanie parametrów przekształcenia afinicznego.

46

Page 47: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

4.1.2.3 Detektor narożników HarrisaDetektor narożników Harrisa został opracowany w 1988 roku i od tamtego czasu jest często wykorzystywanym algorytmem. Jego zaletą jest niezmienniczość względem przesunięć 2D oraz obrotów, niewielkich zmian nasycenia oraz punktu widzenia a także niska złożoność obliczeniowa (Sonka, Hlavac, & Boyle, 2008). Niestety jest on wrażliwy na większe zmiany skali oraz duże zmiany kontrastu. Operuje na obrazach w skali szarości.

4.1.2.3.1 Podstawy algorytmuDetektor narożników Harrisa opiera się o zasadę, że jasności pikseli wokół narożnika będą się silnie zmieniać w wielu kierunkach. Detektor jest ulepszoną wersją detektora Moravca, będącego najprostszym istniejącym detektorem narożników. Wykrywa on punkty o maksymalnym kontraście, czyli narożniki lub ostre krawędzie. Odbywa się to poprzez przesuwanie lokalnego okna prostokątnego w różnych kierunkach badając średnie zmiany jasności z tym związane (Harris & Stephens, 1988). Występują tutaj trzy przypadki:

1. Jeśli badane regiony są o stałej jasności, przesunięcie okna spowodują tylko niewielką zmianę jego wartości.

2. Jeśli okno leży na krawędzi, przesunięcie go wzdłuż krawędzi spowoduje niewielką zmianę jego wartości, natomiast przesunięcie prostopadłe do krawędzi spowoduje dużą zmianę.

3. Jeśli okno leży na narożniku lub pojedynczym punkcie, wówczas każde przesunięcie go spowoduje dużą zmianę jego wartości. Punkty takie możemy zatem wykryć poprzez znalezienie punktów, dla których najmniejsza różnica wartości związana z przesunięciem okna jest duża.

Zmiana E wartości okna związana z przesunięciem (x,y) dana jest wzorem:

E x , y=∑u , v

wu , v|I x+u , y+v−I u , v|2 30\*

MERGEFORMAT()

gdzie w opisuje zastosowane okno: jedność w obrębie prostokątnego regionu, zero poza nim, a obraz wejściowy opisany jest symbolem I. Przesunięcia (x,y) pochodzą ze zbioru {(1,0 ) , (1,1 ) , (0,1 ) ,(−1,1)}. Detektor Moravca poszukuje lokalnego maksimum dla min{E} powyżej pewnej wartości odcięcia.

Detektor Moravca niestety nie jest wolny od błędów. To właśnie ich korekcja pozwoliła skonstruować detektor Harrisa. Problemy te wraz z rozwiązaniami opisano poniżej (Harris &Stephens, 1988):

1. Odpowiedź detektora nie jest izotropowa, ponieważ rozważane są tylko dyskretne wartości przesunięć co 45°. Wszystkie możliwe pośrednie przesunięcia można obsłużyć dokonując analitycznego rozwinięcia wokół punktu startowego:

47

Page 48: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

β

narożniki

krawędzie

E x , y=∑u , v

wu , v [ I x+u , y +v−I u , v ]2=∑u , v

wu , v [ xX+ yY +O(x2 , y2)]231\*

MERGEFORMAT()

gdzie gradienty aproksymowane są poprzez:

X=I⨂ (−1,0,1 )≈ ∂ I∂ x

32\*MERGEFORMAT

()

Y=I⨂ (−1,0,1 )T ≈ ∂ I∂ x

33\*MERGEFORMAT

()A zatem, dla małych przesunięć, E może zostać zapisane jako

E ( x , y )=A x2+2Cxy+B y2 ,34\*

MERGEFORMAT()

gdzieA=X2⨂w

B=Y 2⨂wC=(XY )⨂w

2. Odpowiedź jest zaszumiona z powodu prostokątnego okna binarnego – należy użyć gładkiego okna kolistego, na przykład gaussowskiego:

wu , v=exp−(u2+v2)/w σ235\*

MERGEFORMAT()

3. Detektor zbyt często odpowiada na krawędzie, ponieważ tylko minimum funkcji E brane jest pod uwagę – należy sformułować nową funkcję rozpoznawania narożników korzystającą z wartości odchylenia E w różnych kierunkach.Funkcja zmiany wartości, E, związana z niewielkim przesunięciem (x,y) okna może zostać zwięźle zapisana w formie

E ( x , y )=( x , y )M ( x , y )T ,36\*

MERGEFORMAT()

gdzie macierz M jest symetryczną macierzą 2x2 postaci

M=[A CC B ]

Można zauważyć, że E jest podobne do lokalne funkcji autokorelacji, z macierzą M opisującą jej kształt w badanych punkcie. Niech zatem α,β będą wartościami własnymi macierzy M. α i β będą proporcjonalne do krzywizn funkcji autokorelacji, tworząc niezmienniczy względem obrotu opis macierzy M. Tak jak przy detektorze Moravca, musimy rozważyć trzy przypadki:

A. Jeśli obie krzywizny są niewielkie, tak, że funkcja autokorelacji jest płaska, wówczas badany region obrazu jest o

48

Page 49: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

mniej więcej jednakowej jasności. Odpowiada to przypadkowi, kiedy przesunięcie okna w dowolnym kierunku wprowadza niewielką zmianę wartości funkcji E.

B. Jeśli jedna z krzywizn jest duża, a druga niewielka, nadając funkcji autokorelacji kształt grzbietu, wówczas tylko przesunięcie okna w poprzek tego grzbietu wprowadza zmiany w E. Oznacza to, że mamy do czynienia z krawędzią.

C. Jeśli obydwie krzywizny są duże, funkcja autokorelacji ma kształt ostrego szczytu. Przesunięcie okna w dowolnym kierunku spowoduje wzrost wartości E. Badany punkt jest narożnikiem.

Rozważając wykres przestrzeni (α,β), w przypadku idealnym krawędź miałaby wysoką wartość α oraz zerową β, jednak w rzeczywistości β przyjmie wartość większą od zera, ale niewielką w porównaniu do α. Wynika to z szumu, pikselizacji oraz kwantyzacji skali jasności. Narożnik będzie opisany wysokimi wartościami α oraz β, natomiast region płaski, jednobarwny da niewielkie wartości α i β. Ponieważ wzrost kontrastu w obrazie o wartość p spowoduje wzrost α oraz β proporcjonalnie o p2, wówczas jeśli (α,β) należy do części wykresu opisującej krawędzie, (αp2 , βp2 ) powinno również do niej należeć, dla dodatnich wartości p. Podobna zasada dotyczy narożników. Z tych powodów przestrzeń (α,β) podzielona jest jak na Rysunek 10.

4.1.2.3.2 Funkcja odpowiedzi narożnikaDo efektywnej klasyfikacji narożników, oprócz opisanego powyżej podziału przestrzeni krzywizn, potrzebna jest nam jeszcze miara jakości odpowiedzi narożnika. Pomoże to w identyfikacji maksymalnych narożników.

Funkcja taka, oznaczona jako R, musi być funkcją jedynie α oraz β, dzięki czemu zachowa niezmienniczość względem obrotów. Warto w tym momencie użyć śladu macierzy M oraz jej wyznacznika, co pozwoli uniknąć bezpośredniego obliczania wartości własnych tej macierzy. A zatem (Harris & Stephens, 1988):

Tr (M )=α+β=A+B ,37\*

MERGEFORMAT()

Det (M )=αβ=AB−C2 .

38\*MERGEFORMAT

()Bazując na powyższym, funkcję odpowiedzi narożnika R zdefiniowano jako:

R=Det−k Tr2 .39\*

MERGEFORMAT()

49

Rysunek 10: Przestrzeń krzywizn autokorelacji. Liniami przerywanymi oznaczono klasyfikację na regiony narożników, krawędzi bądź płaskie-o stałej barwie.

Page 50: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Funkcja ta przyjmuje wartości pozytywne dla narożników, negatywne dla krawędzi oraz oscyluje wokół zera dla regionów o podobnej barwie. Można zauważyć, że zwiększanie kontrastu obrazu zwiększa wartość odpowiedzi narożnika. Regiony o podobnej barwie rozpoznawane są poprzez opadanie wartości śladu poniżej ustalonej wartości odcięcia. Wartość k jest parametrem sterującym algorytmu, w literaturze (Sonka, Hlavac, & Boyle,2008) proponuje się, aby jego wartość była z przedziału (0.04, 0.15).

Piksel oznaczany jest jako narożnik jeśli posiada lokalne maksimum dla funkcji odpowiedzi.

Przykład zastosowania algorytmu Harrisa można zobaczyć na Rysunek 11C.

4.1.2.3.3 Metoda implementacji algorytmuPlanując implementację algorytmu można rozpisać go w postaci następujących kroków (Sonka, Hlavac, & Boyle, 2008):

1. Wprowadź do obrazu rozmycie gaussowskie.2. Oblicz gradient nasycenia dla każdego piksela w dwóch prostopadłych kierunkach,

∂ f (x , y)∂x

, ∂ f (x , y)∂ y

. Można tego dokonać splatając obraz z jednowymiarową maską

aproksymującą pochodną.3. Dla każdego piksela oraz jego sąsiedztwa:

Oblicz wartości macierzy M. Oblicz wartość funkcji odpowiedzi R(M).

4. Wybierz punkty narożników jako punkty o wartości R powyżej pewnej wartości odcięcia, a następnie usuń punkty nie będące maksymalnymi.

4.1.2.3.4 Deskryptor narożników i ich dopasowanieW związku z brakiem możliwości stworzenia deskryptora z danych zwracanych przez algorytm, ponieważ wartości funkcji odpowiedzi nie są dostatecznie unikalne ani stabilne, zdecydowano się na zastosowanie i implementację deskryptora używanego przez algorytm SIFT oraz FAST, opisany wcześniej w rozdziale Lokalny deskryptor obrazu. Dopasowanie punktów kluczowych w pary odbywa się zatem również tak samo jak dla algorytmu SIFT, czego opis można znaleźć w rozdziale Dopasowanie punktów kluczowych. Do wyznaczenia parametrów przekształcenia afinicznego opisującego położenie obrazów tworzących panoramę względem siebie wybrano algorytm RANSAC, opisany w rozdziale Wyznaczanieparametrów przekształcenia afinicznego.

50

Page 51: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

A.

B.

51

Page 52: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

C.

Rysunek 11: Punkty kluczowe wykryte przy pomocy opisanych algorytmów. A) SIFT – strzałki opisują położenie, kierunek i skalę punktu kluczowego. B) FAST – parametr n=9. Czerwone krzyżyki to punkty kluczowe, zielone to maksymalne punkty kluczowe. C) Detektor narożników Harrisa – k=0.05, niemaksymalne punkty kluczowe zostały usunięte.

4.2 Zniekształcenie soczewkiW przypadku tworzenia obrazów przy pomocy aparatu fotograficznego z obiektywem szerokokątnym może się okazać koniecznym zredukowanie zniekształcenia soczewki, takiego jak zniekształcenie promieniste. W praktyce, fotografie panoramiczne używane są do pokazywania jak najszerszego kąta widzenia, a zatem wykorzystywanie obiektywów szerokokątnych jest w pełni uzasadnione i często spotykane. Zniekształcenie promieniste (Szeliski, 2006) polega na przesunięciu punktów w obserwowanym obrazie od (zniekształcenie beczkowate) lub do (zniekształcenie poduszkowate) środka obrazu o wartość proporcjonalną do ich odległości od środka obrazu. Efekt zniekształcenia beczkowatego przypomina rzutowanie obrazu na powierzchnię kuli, ponieważ powiększenie obrazu rośnie proporcjonalnie do odległości od jego środka, co można zobaczyć na Rysunek 12A. Takie zniekształcenie spotyka się na przykład przy soczewkach typu Fish-eye. Odwrotnie jest w przypadku zniekształcenia poduszkowatego. Efektem jego występowania jest wygięcie linii nieprzebiegających przez środek obrazu w jego stronę, tak jak to widać na Rysunek 12B. Spotyka się je przy starszych lub niższej klasy soczewkach. Korzyść usuwania zniekształcenia soczewki można zauważyć porównując Rysunek 13 A i B.

52

Page 53: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

A. B.

Rysunek 12: Ilustracja zniekształceń promienistych: A) beczkowate, B) poduszkowate.

Najprostsze zniekształcenia radialne opisane są przy pomocy wielomianów niskich stopni (Szeliski, 2006), na przykład:

x '=x (1+κ1r2+κ2r 4 ) ,

y '= y (1+κ1 r2+κ2 r4 ) ,

40\*MERGEFORMAT

()

gdzie r2=x2+ y2, natomiast κ1 oraz κ2 nazywane są parametrami zniekształcenia promienistego. Bardziej skomplikowane zniekształcenia mogą uwzględniać zniekształcenia decentrujące, ale zwykle nie są one wymagane przy łączeniu obrazów panoramicznych.

53

Page 54: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

A.

B.

Rysunek 13: Zdjęcia połączone w obraz panoramiczny. A) bez korekcji zniekształcenia soczewki, wartość średniej różnicy między nakładającymi się pikselami: 48.08. B) Z korekcją zniekształcenia soczewki, wartość średniej różnicy między nakładającymi się pikselami: 42.07. Zastosowano algorytm uśredniający wartość pikseli nakładających się, aby pokazać korzyści z korekcji zniekształcenia soczewki, widoczne najlepiej na krawędzi ulicy.

Do redukcji zniekształcenia potrzebne są nam parametry zniekształcenia spowodowanego daną soczewką. W literaturze (Szeliski, 2006) możemy znaleźć wiele metod ich wyznaczania. Jedną z nich jest kalibracja poprzez wykonanie fotografii sceny zawierającej wiele prostych linii, szczególnie w okolicach brzegów obrazu. Następnie dopasowuje się parametry zniekształcenia tak długo, aż wszystkie linie na obrazie będą proste. Inna metoda przewiduje wyznaczenie parametrów zniekształcenia równolegle z dopasowywaniem do siebie obrazów, korzystając z hierarchicznej estymacji modelu ruchu kamery.

Metoda wybrana do implementacji jest jednak znacznie prostsza. Bazując na założeniu, że obrazami, na których działamy są fotografie wykonane aparatem cyfrowym, można spodziewać się, że fotografie takie zapisane w plikach typu JPEG będą wyposażone w metadane EXIF. Exchangeable Image File Format jest to standard zapisu informacji na temat obrazów obsługiwany przez większość aparatów cyfrowych. Składa się on ze znaczników zawierających określone dane, takie jak na przykład nazwę i producenta aparatu, długość ogniskowej soczewki, datę wykonania i rozdzielczość zdjęcia, czy sposób pomiaru światła.

54

Page 55: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Posiadając uzyskaną z danych EXIF nazwę modelu aparatu oraz długość ogniskowej, możemy na tej podstawie przeszukać istniejącą bazę danych zawierającej potrzebne nam parametry korekcji zniekształcenia soczewki dla konkretnego modelu. Baza taka jest dostępna w Internecie a korzystanie z niej nie jest ograniczone prawami autorskimi. Długość ogniskowej soczewki potrzebna jest dla aparatów wyposażonych w Zoom, ponieważ parametry zniekształcenia są różne dla różnego przybliżenia. Usuwanie zniekształcenia odbywać się będzie zgodnie z opisanymi powyżej wzorami, przed ustaleniem wzajemnej pozycji obrazów.

4.3 Algorytmy wygładzające połączenia między obrazamiMając ustaloną dokładną pozycję obrazów względem siebie, pozostaje jedynie narysować te obrazy w odpowiedni sposób. Każdy piksel obrazu odpowiada punktowi sceny, której fotografię przedstawia obraz. W przypadku obrazu panoramicznego, stworzonego z zachodzących na siebie obrazów, w obszarach, w których obrazy zachodzą na siebie każdemu punktowi sceny odpowiadają dwa piksele, pochodzące z dwóch różnych obrazów. Rysując piksel obrazu wyjściowego powinniśmy zdać się na informacje o jego kolorze pochodzące z różnych obrazów wejściowych. Wartości tych pikseli powinny zostać przetworzone przy pomocy wybranej funkcji wygładzającej dając wyjściową wartość dla piksela. Poniżej przedstawiono najpopularniejsze funkcje wygładzające (Capel, 2001), a wyniki ich zastosowania można zobaczyć na Rysunek 14.

4.3.1 UśrednianieWartość piksela wyjściowego jest wybierana jako średnia wartość pikseli wejściowych. Średnia liczona jest osobno dla każdego kanału RGB.

4.3.2 Płynne wygładzanieFunkcja ważąca przypisana jest do obrazów wejściowych, zmniejszając wagę wraz z oddalaniem się od środka obrazu, aż do zera na krawędzi. Przykładami takich funkcji może być funkcja liniowa:

f ( x , y )= xw,

41\*MERGEFORMAT

()

lub kwadratowa:

f ( x , y )=(1−( x−w2 )2)(1−( y−h2 )

2) ,42\*

MERGEFORMAT()

gdzie w oraz h to odpowiednio szerokość i wysokość obrazu.

4.3.3 Najbliższy środekPrzy ustalaniu wartości dla danego piksela, obliczana jest jego odległość od środków obrazów wejściowych. Zestaw wartości dla danego piksela jest sortowany względem tego

55

Page 56: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

dystansu i wybierana jest wartość z obrazu, którego środek leży najbliżej przetwarzanego piksela. Funkcja ta różni się od wyżej wymienionych tym, że nie wprowadza do obrazu żadnych nowych wartości.

A.

B.

C.

D.

Rysunek 14: Połączenie obrazów o czterech kolorach wygładzonych różnymi funkcjami: A) uśrednianie, B) płynne wygładzanie liniowe, C) płynne wygładzanie kwadratowe, D) najbliższy środek.

4.4 Korekcja fotometrycznaMimo odpowiednich funkcji wygładzających nie zawsze udaje się uzyskać pełną ciągłość obrazu, bez zauważalnych okiem ludzkim złączeń. W wielu przypadkach dzieje się tak,

56

Page 57: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

ponieważ wykonane fotografie tej samej sceny prezentują różne kolory tych samych obiektów. Są dwa główne powody takiego zjawiska (Capel, 2001):

Automatyczne nastawy aparatu fotograficznego, takie jak ustawienie balansu bieli, nasycenia czy długości czasu naświetlania, tak jak na Rysunek 15.

Zmiany obserwowanej barwy wynikające ze zmian rozproszonego światła, pory dnia lub sposobu interakcji źródła światła i fotografowanego obiektu.

Rysunek 15: Fotografie składowe obrazu panoramicznego, różniące się balansem bieli.

Aby dokonać korekcji kolorów w jednym z obrazów należy wyprowadzić model opisujący przekształcenie kolorów. Każdy kanał RGB traktowany jest osobno. W ramach każdego kanału, różnice barw pomiędzy obrazami opisane są przy pomocy funkcji liniowej (Capel,2001), mającej dwa parametry: współczynnik kierunkowy α oraz wyraz wolny β. Zapisując wartość piksela, jako trójelementowy wektor, transformacja kolorów może zostać przedstawiona w następującej postaci:

(r2g2b2)=[αr 0 00 α g 00 0 α b

](r1g1b1)+( βrβgβb)43\*

MERGEFORMAT()

posiadającej 6 nieznanych parametrów. Ten prosty model jest wystarczający dla potrzeb korekcji fotometrycznej.

4.4.1 Wyznaczanie parametrów korekcjiAby móc wyznaczyć parametry korekcji fotometrycznej, obrazy wejściowe muszą najpierw zostać dokładnie dopasowane do siebie, jedną z metod opisanych w rozdziale Algorytmyustawiające obrazy. Pozostałe różnice pomiędzy odpowiadającymi sobie pikselami z dużym prawdopodobieństwem może udać się usunąć przy pomocy korekcji fotometrycznej. Traktując każdy z kanałów odpowiadających kolorom RGB osobno, wyznaczanie parametrów α oraz β polega na dopasowaniu funkcji liniowej opisującej wartości odpowiadających sobie pikseli.

57

Page 58: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Niestety w niektórych przypadkach różnice pomiędzy wartościami odpowiadających sobie pikseli nie będą pasować do liniowego modelu. Wynika to z różnic w nasyceniu przy końcach skali nasycenia, przysłonięcia niektórych obiektów przez inne, cieni czy ruchu na fotografowanej scenie. Z tego powodu algorytm wykorzystany do wyznaczenia parametrów korekcji fotometrycznej powinien być odporny na wpływ występowania punktów leżących z daleka od najlepszego możliwego modelu. W takich przypadkach dobrze powinien spisywać się opisany już w rozdziale „Wyznaczanie parametrów przekształcenia afinicznego” algorytm RANSAC, jednak okazuje się, że nawet prostsza iteracyjna metoda najmniejszych kwadratów spełnia swoje zadanie.

Metoda najmniejszych kwadratów jest jedną z najpopularniejszych metod wyznaczania linii trendu na podstawie zbioru danych w postaci par liczb. W metodzie tej żądamy minimalizacji funkcji χ2 mierzącej odchylenie zadanej funkcji od punktów doświadczalnych. W omawianym przypadku korekcji fotometrycznej mamy do czynienia z funkcją liniową postaci f ( x )=αx+β, a zatem χ2 sprowadza się do:

χ2 (α , β )=∑i=1

n ( y i−α x i−β )2

σ i2 ,

44\*MERGEFORMAT

()

gdzie σ i to odchylenie standardowe danego punktu pomiarowego w zmiennej y. Aby znaleźć minima tej funkcji ze względu na parametry α i β, należy zróżniczkować ją po α i β i przyrównać do zera. Następnym krokiem jest sprawdzenie czy wszystkie dane punkty leżą w obszarze zadanej tolerancji wokół wyznaczonej prostej. Jeśli nie, usuwany jest punkt leżący najdalej, a parametry prostej wyliczane są na nowo bez tego punktu. Działanie to jest powtarzane iteracyjnie aż do osiągnięcia zadowalającego wyniku. Efekt zastosowania tej metody do zbioru rzeczywistych danych można zobaczyć na Rysunek 16.

A.

58

Page 59: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

B.

C.

59

Page 60: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Rysunek 16: Obrazy wejściowe połączone w obraz panoramiczny: A) bez korekcji fotometrycznej, wartość średniej różnicy między nakładającymi się pikselami: 76.89, B) z korekcją fotometryczną, wartość średniej różnicy między nakładającymi się pikselami: 54.94, C) wykresy wartości odpowiadających sobie pikseli (czerwone) oraz dopasowana metodą najmniejszych kwadratów prosta o parametrach korekcji fotometrycznej (niebieska).

4.5 Obiektywna miara jakości dopasowania obrazówGłównym celem projektowanej aplikacji ma być możliwość porównania zaimplementowanych algorytmów. Ponieważ efektem wielu z opisywanych algorytmów są obrazy, efekt ich działania jest głównie wizualny, i niemożliwy do obiektywnego porównania. Przykładem takich algorytmów mogą być algorytmy wygładzające połączenia między obrazami, gdzie w zależności od charakterystyki obrazów wejściowych inny algorytm będzie spisywał się lepiej, jednak będzie to i tak tylko subiektywna ocena oglądającego. Istnieje jednak możliwość obiektywnego porównania jakości dopasowania obrazów wejściowych w końcowym obrazie panoramicznym, poprzez porównanie konkretnych wartości liczbowych, co daje możliwość porównania algorytmów obliczających przekształcenia pomiędzy obrazami. Zdecydowano się na pomiar różnicy pomiędzy wartościami pikseli RGB z dwóch obrazów wejściowych, mających w obrazie wyjściowym te same współrzędne. Wartość takiego piksela w obrazie wyjściowym zostanie wyliczona za pomocą odpowiedniej funkcji wygładzającej. Wartość różnicy będzie mówiła o prawidłowości dopasowania, opierając się na fakcie, że jeśli zachodzące na siebie fragmenty dwóch obrazów będą identyczne, wartość tej różnicy powinna być zerowa, a zatem im lepsze dopasowanie, tym mniejsza wartość różnicy. W związku z tym, że dla różnych przekształceń afinicznych ilość nakładających się pikseli będzie inna, należy obliczyć uśrednioną wartość różnicy dla jednego piksela. Zdecydowano się na zastosowanie średniego błędu kwadratowego, który można wyliczyć przy pomocy następującego wzoru:

RMS=√∑n [ (R1−R2 )2+(G1−G2)2+(B1−B2)

2 ]n

,

45\*MERGEFORMAT

()

gdzie n jest liczbą nakładających się pikseli, natomiast R,G,B, z indeksami to wartości piksela danego obrazu z odpowiedniego kanału.

Taka miara jakości dopasowania stosowana jest również w rozmaitych rozwiązaniach komercyjnych.

60

Page 61: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

5 Implementacja aplikacjiAplikację zaprogramowano w języku Java 1.6 korzystając z graficznego środowiska programistycznego Netbeans 6.0. Obsługa programu odbywa się w języku angielskim.

Ramą aplikacji jest klasa PRamaView rozszerzająca klasę FrameView. Klasa ta reprezentuje główny graficzny interfejs użytkownika.

5.1 Szczegóły implementacjiNa głównym ekranie aplikacji został umieszczony panel z trzema zakładkami, odpowiadającymi trzem krokom działania programu, tak jak na Rysunek 2. Sposób działania został opisany poniżej.

5.1.1 Dynamiczne wczytywanie algorytmówPo uruchomieniu programu ładowane są dostępne algorytmy, zaprogramowane implementując odpowiedni interfejs. Mechanizm ten znacznie ułatwia rozwijanie aplikacji, pozwalając dodawać kolejne funkcjonalności bez potrzeby ponownej kompilacji całej aplikacji. Program, za pomocą klasy prama.stitch.StitchUtil wczytuje do odpowiedniej struktury danych wszystkie klasy znajdujące się w danym folderze, implementujące specjalny interfejs IStitch, a zatem będące algorytmami łączącymi kolejne obrazy w obraz panoramiczny. Implementacja tego interfejsu wymusza na programiście implementację wymaganych metod, co zapewnia zgodność z całą aplikacją. Dodanie nowej funkcjonalności wymaga od programisty kompilacji jedynie klasy implementującej nowy algorytm i umieszczenie pliku class w odpowiednim katalogu, bez potrzeby jakiejkolwiek interakcji z użytkownikiem aplikacji. Metoda dynamicznego wczytywania klas została zastosowana nie tylko do algorytmów łączących obrazy (pakiet prama.stitch), ale również do algorytmów liczących różnicę pomiędzy wartościami pikseli (pakiet prama.utils.distance) oraz do algorytmów wygładzających połączenia obrazów (pakiet prama.utils.blending). Aplikacja została skonstruowana tak, aby odpowiednie działania były wykonywane niezależnie od ilości dostępnych algorytmów.

5.1.2 Wybór i ustawienie obrazówW pierwszej zakładce Image Selection użytkownik wybiera i ustawia obrazy wejściowe. Wybór obrazów odbywa się poprzez kliknięcie na przycisku Open i wybranie plików z obrazami z dysku. Wyboru plików dokonuje się przy pomocy klasy javax.swing.JFileChooser. Można wybrać wiele plików, dokonując zaznaczenia z przyciśniętym klawiszem Ctrl. Wybrane pliki są wczytywane, a zawierane przez nie obrazy umieszczane są w panelu na środku okna. Następnie użytkownik może ustawić wczytane obrazy w kolejności takiej, w jakiej powinny być one dopasowane. Aby zmienić położenie obrazu, należy przeciągnąć go w inne miejsce na panelu. Aby umożliwić przeciąganie obrazów metodą drag&drop rozszerzono klasę java.awt.Canvas tworząc klasę prama.gui.Canva. Aplikacja umożliwia tworzenie obrazów panoramicznych poziomych jednowymiarowych, a zatem wybrane obrazy powinny zostać

61

Page 62: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

ułożone w pierwszym rzędzie. Widoczne na panelu obrazy mają wielkość 10% oryginalnej wielkości, co sprawia, że algorytmy działają szybciej i łatwiej jest je porównać, jest również łatwiej ustawiać obrazy. Aby zmienić rozmiary obrazów można użyć przycisków Zoom In oraz Zoom Out umieszczonych na górze okna. Do usunięcia wszystkich obrazów z panelu można użyć przycisku Remove All, natomiast aby usunąć zaznaczony obraz, należy użyć przycisku Remove Selected. Wygląd opisywanej zakładki widoczny jest na Rysunek 17. Po dokonaniu ustawienia obrazów można przejść do następnego kroku, otwierając kolejną zakładkę.

Rysunek 17: Panel wyboru i ustawienia obrazów.

5.1.3 Wybór algorytmówW zakładce Algorithm Selection umieszczony jest panel zakładek odpowiadających poszczególnym algorytmom dostępnym w programie. W tym miejscu użytkownik musi zdecydować, których algorytmów chce użyć do konstrukcji obrazów panoramicznych. Wybór algorytmów odbywa się poprzez zaznaczenie odpowiadających algorytmom checkboxów umieszczonych na listkach zakładek. Konstrukcja tego elementu graficznego interfejsu użytkownika wymagała zbudowania klasy prama.gui.CheckBoxTabPane rozszerzającej klasę javax.swing.JTabbedPane. Rozszerzenie polegało na dodaniu wymienionych już checkboxów oraz metod pozwalających w prosty sposób sczytywać stan danego elementu.

Kolejność operacji wykonywanych na obrazach dla każdego z wybranych algorytmów jest następująca:

1. Korekcja zniekształcenia soczewki dla każdego obrazu I x dla x=1 ,…,n.2. Obliczenie przekształcenia afinicznego między kolejnymi parami I x oraz I x+1 obrazów

przy pomocy wybranego algorytmu.

62

Page 63: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

3. Dla każdego obrazu I x , x=1,…,n:a. Jeśli x=1 obraz rysowany jest na płaszczyźnie.b. W przeciwnym wypadku:

i. model kolorów obrazu I x dopasowywany jest do obrazu I x−1ii. aplikowane jest wygładzenie obszaru wspólnego dla obrazów I x oraz

I x−1 zgodnie z wybranym algorytmem wygładzaniaiii. obraz I x rysowany jest na płaszczyźnie po przekształceniu

odpowiednim przekształceniem afinicznym obliczonym w kroku 2.4. Płaszczyzna rysowania zwracana jest jako obraz wynikowy.

W zależności od wybranych parametrów niektóre z wymienionych powyżej punktów mogą być pominięte.

Przekształcenia afiniczne reprezentowane przez klasę java.awt.geom.AffineTransform można do siebie dodawać za pomocą metody append. Dzięki temu algorytmy mogą zwracać wektor lokalnych transformacji afinicznych opisujących przekształcenie pomiędzy dwoma kolejnym obrazami. Następnie kolejne obrazy rysowane są z uwzględnieniem przekształcenia poprzednich obrazów względem początku układu współrzędnych płaszczyzny rysowania. Takie podejście jest dużo lepsze od rozważanego w początkowej fazie implementacji podejścia polegającego na stosowaniu kolejnych przekształceń afinicznych na rysowanym obrazie bez ich dodawania, ponieważ wielokrotne przekształcanie obrazów sprzyja kumulacji błędów wynikających z interpolacji pikseli.

Po wybraniu algorytmów, należy ustawić ich parametry wejściowe. Każdy z algorytmów posiada odrębne parametry do ustawienia, widoczne w jego zakładce, jednak pewne z nich są dostępne dla każdego z algorytmów. Te parametry to:

Wybór metody interpolacji: należy wybrać metodę interpolacji wartości pomiędzy dyskretnymi współrzędnymi pikseli, ponieważ przekształcenie obrazów wymaga obliczenia nowych współrzędnych dla każdego piksela. Dostępne są metody: kwadratowa, liniowa oraz najbliższego sąsiada.

Wybór metody wygładzania połączenia: użytkownik może wybrać metodę wygładzania połączenia pomiędzy obrazami osobno dla każdego algorytmu, wybierając spośród metod opisanych w rozdziale Algorytmy wygładzające połączeniamiędzy obrazami.

Zastosowanie korekcji zniekształcenia soczewki. Zastosowanie dopasowania modelu kolorów. Po pierwszym wykonaniu algorytmów dostępna jest opcja, po wybraniu której model

przekształcenia nie jest przeliczany na nowo, parametry jego brane są z poprzedniego wykonania, a aplikowane są na nowo jedynie opisane powyżej elementy. Udostępnienie takiej opcji pozwala użytkownikowi na łatwe wybranie odpowiedniej metody wygładzania połączeń oraz zauważenie różnic między nimi, jak również przegląd metod interpolacji.

63

Page 64: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Rysunek 18: Panel wyboru algorytmów.

Dodatkowo, dla algorytmów opartych o wyszukiwanie punktów kluczowych udostępniono opcję, pozwalającą na wyświetlenie obrazów wejściowych wraz z lokalizacją punktów kluczowych oraz dopasowanych punktów kluczowych.

W aplikacji dostępne są algorytmy opisane w rozdziale Projekt aplikacji. Schemat, według którego wyliczają one przekształcenie afiniczne dla danego obrazu opisany został poniżej.

5.1.3.1 Algorytm bezpośredniParametrami wejściowymi charakterystycznymi dla tego algorytmu są:

pionowy i poziomy zakres wyszukiwania, ilość poziomów piramidy, zakres stopni obrotu obrazu, metoda obliczania różnicy między pikselami, zastosowanie przeszukiwania z dokładnością podpikselową

Działanie odbywa się według następującego schematu:

Dla każdej pary obrazów:

1. Dla każdego poziomu l=1 ,…,n piramidy, zaczynając od l=n:a. Zainicjuj zmienną diff=∞.b. Jeśli poziom l=n:

Dla każdego przesunięcia w poziomie x l , w pionie y loraz obrotu rl, w obrębie wskazanego zakresu z krokiem 1:

64

Page 65: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Dla każdego piksela obrazu lewego:

1. Oblicz różnicę między danym pikselem lewego obrazu a odpowiadającym mu pikselem prawego obrazu poddanym przesunięciu i obrotowi wybraną metodą i dodaj do zmiennej tymczasowej tempdiff.

2. Jeśli tempdiff<diff zapisz parametry przekształcenia x l , y l , r l oraz diff = tempdiff.

Jeśli poziom l=¿2 ,…,n−1>:

Dla każdego przesunięcia w poziomie x l=(2∗x¿¿ l+1)±2¿, pionie y l=(2∗ y¿¿ l+1)±2¿ oraz obrotu rl=rl+1±1 z krokiem 1:

Dla każdego piksela obrazu lewego:

1. Oblicz różnicę między danym pikselem lewego obrazu a odpowiadającym mu pikselem prawego obrazu poddanym przesunięciu i obrotowi wybraną metodą i dodaj do zmiennej tymczasowej tempdiff.

2. Jeśli tempdiff<diff zapisz parametry przekształcenia x l , y l , r l oraz diff = tempdiff.

Jeśli poziom l=1 oraz nie wybrano dokładności podpikselowej, stosowany jest schemat powyższy, jeśli jednak wybrano zastosowanie dokładności podpikselowej:

Dla każdego przesunięcia w poziomie x l=(2∗x¿¿ l+1)±0.5¿, w pionie y l=(2∗ y¿¿ l+1)±0.5¿, oraz obrotu rl=rl+1±0.4 z krokiem 0.1:

Dla każdego piksela obrazu lewego:

1. Oblicz różnicę między danym pikselem lewego obrazu a odpowiadającym mu pikselem prawego obrazu poddanym przesunięciu i obrotowi wybraną metodą i dodaj do zmiennej tymczasowej tempdiff.

2. Jeśli tempdiff<diff zapisz parametry przekształcenia x l , y l , r l oraz diff = tempdiff.

c. l−−¿ .2. Zapisz przekształcenie afiniczne znalezione przy l=1 jako najlepiej dopasowane.

5.1.3.2 SIFTAlgorytm SIFT (Saalfeld) sterowany jest za pomocą następujących parametrów:

65

Page 66: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Ilość stopni na jedną oktawę skali Wielkość początkowego rozmycia gaussowskiego Wielkość deskryptora punktu szczególnego Ilość kierunków w deskryptorze punktu Minimalny rozmiar obrazu Maksymalny rozmiar obrazu Minimalny błąd dopasowania dla algorytmu RANSAC Maksymalny błąd dopasowania dla algorytmu RANSAC Minimalny ułamek dopasowanych punktów dla algorytmu RANSAC Wybór czy zastosować powiększenie obrazu przed przetwarzaniem

Przetwarzanie wykonywane jest według następującego schematu:

Dla każdego obrazu wejściowego I x , x=1,…,n:

1. Jeśli wybrano powiększenie obrazu I x, przeskaluj go do rozmiarów dwukrotnie większych od wejściowych.

2. Rozmyj (przeskalowany) obraz wejściowy I x funkcją Gaussa o zadanej σ.3. Stwórz piramidę rozmytych obrazów o zadanej ilości stopni na oktawę, zaczynając od

maksymalnego zadanego rozmiaru, a zmniejszając obraz dopóki nie przekroczy minimalnego zadanego rozmiaru.

4. Znajdź punkty szczególne we wszystkich oktawach poprzez wyszukanie ekstremów w obrazach będących różnicami kolejnym obrazów piramidy, przyporządkuj im orientacje i stwórz deskryptory, a następnie zapisz w wektorze punktów szczególnych.

5. Posortuj elementy w wektorze punktów szczególnych według skali, w jakiej zostały znalezione.

6. Jeśli x>1:a. Dopasuj pary odpowiadających sobie punktów szczególnych z obrazów I x oraz

I x−1 jako punkty o najmniejszej różnicy pomiędzy deskryptorami.b. Znajdź przekształcenie afiniczne między obrazami I x oraz I x−1 na podstawie

dopasowanych par punktów, uruchamiając algorytm RANSAC o zadanych parametrach. Algorytm wykonywany jest dla zadanego minimalnego błędu dopasowania, w przypadku braku znalezienia rozwiązania po 1000 iteracji, dopuszczalny błąd jest zwiększany. W przypadku, gdy osiągnie on zadaną wartość maksymalną zgłaszany jest brak możliwości dopasowania parametrów.

c. Zapisz znalezione przekształcenie afiniczne w wektorze przekształceń.7. Jeśli x=n zakończ działanie algorytmu zwracając wektor przekształceń afinicznych.

5.1.3.3 FASTZaimplementowany algorytm FAST (Rosten, FAST Corner Detection, 2006) sterowany jest za pomocą następujących parametrów:

Wartość odcięcia dla różnicy jasności pikseli

66

Page 67: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Wielkość deskryptora punktu szczególnego Ilość kierunków w deskryptorze punktu Minimalny błąd dopasowania dla algorytmu RANSAC Maksymalny błąd dopasowania dla algorytmu RANSAC Minimalny ułamek dopasowanych punktów dla algorytmu RANSAC Wybór czy rozmyć obraz przed przetwarzaniem

Zastosowano algorytm o parametrze n=9. Wyznaczanie właściwych przekształceń afinicznych odbywa się według poniższego schematu:

Dla każdego obrazu wejściowego I x , x=1,…,n:

1. Przekształć obraz I x do skali szarości.2. Jeśli wybrano rozmycie obrazu, rozmyj obraz I x funkcją Gaussa.3. Znajdź punkty szczególne posiadające co najmniej 9 sąsiadujących pikseli w promieniu

r=3 różniące się od danego punktu o co najmniej zadaną wartość różnicy i zapisz w wektorze punktów szczególnych. Wyszukiwanie odbywa się poprzez iterację po pikselach i sprawdzenie każdego z nich przy pomocy serii instrukcji warunkowych if – else.

4. Z wektora punktów szczególnych usuń punkty niemaksymalne w danym otoczeniu.5. Dla każdego z pozostałych punktów wylicz deskryptor znormalizowany kierunkiem

gradientu w danym punkcie.6. Jeśli x>1:

a. Dopasuj pary odpowiadających sobie punktów szczególnych z obrazów I x oraz I x−1 jako punkty o najmniejszej różnicy pomiędzy deskryptorami.

b. Znajdź przekształcenie afiniczne między obrazami I x oraz I x−1 na podstawie dopasowanych par punktów, uruchamiając algorytm RANSAC o zadanych parametrach. Algorytm wykonywany jest dla zadanego minimalnego błędu dopasowania, w przypadku braku znalezienia rozwiązania po 1000 iteracji, dopuszczalny błąd jest zwiększany. W przypadku, gdy osiągnie on zadaną wartość maksymalną zgłaszany jest brak możliwości dopasowania parametrów.

c. Zapisz znalezione przekształcenie afiniczne w wektorze przekształceń.7. Jeśli x=n zakończ działanie algorytmu zwracając wektor przekształceń afinicznych.

5.1.3.4 Detektor narożników HarrisaDetektor narożników Harrisa (Burger & Burge, 2008)posiada następujące parametry wejściowe:

Wartość odcięcia dla funkcji odpowiedzi narożnika Wartość współczynnika k. Wielkość deskryptora punktu szczególnego Ilość kierunków w deskryptorze punktu Minimalny błąd dopasowania dla algorytmu RANSAC Maksymalny błąd dopasowania dla algorytmu RANSAC

67

Page 68: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Minimalny ułamek dopasowanych punktów dla algorytmu RANSAC.

Wyznaczanie właściwych przekształceń afinicznych odbywa się według poniższego schematu:

Dla każdego obrazu wejściowego I x , x=1,…,n:

1. Przekształć obraz I x do skali szarości.2. Oblicz pochodne obrazu we wszystkich kierunkach.3. Oblicz wartość funkcji odpowiedzi narożnika, korzystając z zadanej wartości

współczynnika k.4. Wybierz jako punkty szczególne punkty o wartości funkcji odpowiedzi narożnika większej

od zadanej wartości odcięcia. 5. Dla każdego z punktów wylicz deskryptor znormalizowany kierunkiem gradientu w

danym punkcie. 6. Z wektora punktów szczególnych usuń punkty niemaksymalne w danym otoczeniu.7. Jeśli x>1:

a. Dopasuj pary odpowiadających sobie punktów szczególnych z obrazów I x oraz I x−1 jako punkty o najmniejszej różnicy pomiędzy deskryptorami.

b. Znajdź przekształcenie afiniczne między obrazami I x oraz I x−1 na podstawie dopasowanych par punktów, uruchamiając algorytm RANSAC o zadanych parametrach. Algorytm wykonywany jest dla zadanego minimalnego błędu dopasowania, w przypadku braku znalezienia rozwiązania po 1000 iteracji, dopuszczalny błąd jest zwiększany. W przypadku, gdy osiągnie on zadaną wartość maksymalną zgłaszany jest brak możliwości dopasowania parametrów.

c. Zapisz znalezione przekształcenie afiniczne w wektorze przekształceń.8. Jeśli x=n zakończ działanie algorytmu zwracając wektor przekształceń afinicznych.

5.1.3.5 Dopasowanie manualneDodatkowo, zaimplementowano algorytm pozwalający użytkownikowi na ręczne określenie położenia punktów korespondujących w każdej parze obrazów, odgrywających taką samą rolę jak dopasowane punkty kluczowe. Na podstawie ich położenia wyliczane jest przekształcenie jednego obrazu względem drugiego. Parametrami wejściowymi są parametry algorytmu RANSAC, a także dopasowane pary punktów wybranych przez użytkownika. Przekształcenie afiniczne między obrazami wyliczane na podstawie zadanych par punktów, wykonywane jest dla zadanego minimalnego błędu dopasowania, w przypadku braku znalezienia rozwiązania po 1000 iteracji, dopuszczalny błąd jest zwiększany. W przypadku, gdy osiągnie on zadaną wartość maksymalną zgłaszany jest brak możliwości dopasowania parametrów. Po wyznaczeniu przekształceń afinicznych dla wszystkich par obrazów, wektor zawierający je jest zwracany do modułu rysującego obrazy na płaszczyźnie.

68

Page 69: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

5.1.4 Przeglądanie wynikówZakładka Output Images pozwala porównać i zapisać obrazy panoramiczne stworzone poprzez połączenie obrazów wejściowych przy pomocy wybranych algorytmów. Uruchomienie procesu łączenia obrazów odbywa się poprzez przyciśnięcie guzika Stitch znajdującego się na górze panelu zakładki. Uruchomienie algorytmów odbywa się z zastosowaniem obiektów klasy javax.swing.SwingWorker ułatwiającej przetwarzanie wielowątkowe, a zatem wykonywane są one równolegle. W czasie wykonywania algorytmów widoczne jest okno dialogowe. Po zakończeniu wszystkich uruchomionych wątków okno dialogowe znika, a obrazy wynikowe widoczne są w zakładkach odpowiadających dostępnym algorytmom. Zastosowanie zakładek umożliwia łatwe porównanie obrazów wynikowych, ponieważ przełączając zakładki kolejne obrazy pojawiają się w tym samym miejscu. Oprócz wizualnego porównania jakości obrazu wynikowego użytkownika ma do dyspozycji zakładkę zawierającą informacje dotyczące efektów wykonania poszczególnych algorytmów. W zakładce tej, zatytułowanej Statistics, umieszczona jest tabela pozwalająca łatwo porównać zastosowane algorytmy. Kluczowymi informacjami na temat działania algorytmu są pozycje Working Time, mówiąca o czasie wykonywania algorytmu, podanym w milisekundach, oraz RMS, mówiąca o wartości średniego błędu kwadratowego pomiędzy wartościami RGB nakładających się pikseli na jeden piksel. Oprócz informacji dotyczących parametrów wejściowych algorytmów, takimi jak metoda wygładzania połączenia między obrazami, można znaleźć tam parametry przekształcenia afinicznego zastosowanego na danym obrazie, oraz dla algorytmów bezpośrednich, ilość sprawdzonych pozycji obrazów, a dla algorytmów bazujących na punktach kluczowych ilość znalezionych punktów kluczowych w danym obrazie, i ilość dopasowanych oraz ilość prawidłowo dopasowanych punktów w danej parze obrazów. Statystyki pozwalają poprawić parametry wejściowe algorytmów oraz wybrać najlepszy algorytm w danej sytuacji.

Niezależnie od efektów działania algorytmu, użytkownik może zapisać obraz wyjściowy poprzez przyciśnięcie guzika Save znajdującego się pod obrazem wyjściowym w każdej z zakładek. Wybór nazwy pliku dokonywany jest z zastosowaniem klasy javax.swing.JFileChooser. Plik wyjściowy ma format JPEG.

69

Page 70: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Rysunek 19: Panel przeglądu obrazów wyjściowych.

5.2 Możliwości dalszego rozwojuJednym z celów postawionych podczas projektowania aplikacji było umożliwienie łatwego rozwinięcia aplikacji. Główna część tego zadania została zrealizowana poprzez wykorzystanie mechanizmu dynamicznie ładującego klasy implementujące określony interfejs. Dzięki temu dodanie nowej funkcjonalności nie wymaga ingerencji w istniejący kod źródłowy, narzucając na programistę jedynie ograniczenia określone w konkretnym interfejsie. Dla użytkownika aplikacji zastosowanie takiego mechanizmu oznacza, że może on rozszerzyć funkcjonalność aplikacji poprzez dodanie nowo zaimplementowanych algorytmów, na przykład ściągniętych z Internetu, bez konieczności ponownej instalacji aplikacji, a jedynie umieszczając nowe pliki klas w odpowiednich katalogach pakietów.

W związku z obecnością w aplikacji kilku algorytmów opartych na punktach kluczowych, programista może dodać kolejny taki algorytm implementując jedynie metodę wyszukiwania punktów kluczowych, pozostawiając takie sprawy jak stworzenie deskryptora dla każdego z punktów oraz dopasowanie punktów parami istniejącym i działającym już metodom dostępnym w aplikacji. Pole do rozwoju w tym kierunku jest dość duże, ponieważ liczba wynalezionych algorytmów wyszukujących punkty kluczowe w obrazach jest duża, a zatem możliwe jest dodanie każdego z nich do opisywanej aplikacji.

Zaimplementowany już algorytm RANSAC potrafi wyszukać parametry przekształcenia afinicznego, a zatem możliwe jest również rozbudowanie jego działania tak, aby wyszukiwał parametry innych przekształceń, opisujących ruch kamery między obrazami, co może w niektórych przypadkach skutkować lepszą jakością końcowego obrazu panoramicznego.

70

Page 71: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Możliwa jest również implementacja kolejnych algorytmów wygładzających połączenia między obrazami oraz obliczających różnice pomiędzy wartościami pikseli, ponieważ ich klasy wczytywane są również dynamicznie. Odbywa się to na dokładnie tej samej zasadzie, co algorytmy obliczające położenie kolejnych obrazów, a zatem dodanie nowej funkcjonalności wymaga dodania nowej klasy do odpowiedniego pakietu, a musi ona implementować dany interfejs.

71

Page 72: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

6 Testy algorytmówWykonana aplikacja pozwala przeprowadzić na algorytmach szereg testów umożliwiających ich efektywne porównanie jak również udowodnić zasadność zastosowania zaimplementowanych rozwiązań. Informacje statystyczne zwracane przez program umożliwiają dokonanie obiektywnego porównania jakości i czasu działania poszczególnych algorytmów, niezależnie od subiektywnej oceny wizualnej obrazu wyjściowego. Niestety nie wszystkie udostępnione w programie rozwiązania można poddać deterministycznej, obiektywnej ocenie. Przykładem takich elementów mogą być funkcje wygładzające połączenia między obrazami, będące bardzo istotną częścią mechanizmu tworzenia obrazów panoramicznych, jednak ocenienie ich możliwe jest tylko wizualnie. Uzyskane wyniki starano się porównać z innymi pracami, jednak jest to utrudnione z powodu niewielkiej ilości istniejących materiałów na ten temat.

6.1 Badanie korzyści zastosowania wyszukiwania hierarchicznego dla algorytmu bezpośredniego

Przed porównaniem poszczególnych rozwiązań warto zwrócić uwagę na algorytm wyróżniający się od pozostałych – algorytm bezpośredni. W związku z ogromną ilością pozycji obrazów względem siebie, które muszą zostać sprawdzone, algorytm ten jest bardzo skomplikowany obliczeniowo i wymaga dużej ilości czasu, rosnącej wraz ze wzrostem rozdzielczości obrazu. Mimo to jest konkurencyjny dzięki zastosowaniu wyszukiwania hierarchicznego. Warto zatem przyjrzeć się korzyściom, które takie wyszukiwanie daje. Algorytm bezpośredni zastosowano dla trzech testowych par obrazów o wymiarach 227 na 170 pikseli, zapisując czas wykonywania algorytmu oraz jakość dopasowania. Przeszukiwano obszar od 10% do 50% szerokości obrazu od krawędzi w poziomie, oraz od -30% do 30% wysokości w pionie. Wyniki widoczne są na Rysunek 20. W części A przedstawiona jest zależność czasu wykonania algorytmu od ilości poziomów piramidy. Widać, że ogromne czasy wykonania drastycznie maleją wraz z dodawaniem kolejnych poziomów, zatrzymując się przy 4 poziomach. Część B przedstawia zależność jakości dopasowania obrazów od ilości poziomów piramidy. Dobrze widoczny fakt, że średni błąd kwadratowy pomiędzy nakładającymi się pikselami w końcowym obrazie panoramicznym praktycznie nie rośnie aż do 4 poziomów w piramidzie, wraz z wnioskami z części A, pozwala postawić tezę, że piramida użyta do hierarchicznego wyszukiwania właściwej pozycji obrazów o rozdzielczości 227 na 170 pikseli powinna posiadać 4 poziomy.

Uogólniając, po powtórzeniu testu dla obrazów o innych rozdzielczościach można zauważyć, że obrazy dopasowywane są właściwie, z optymalną prędkością i dostateczną dokładnością, jeśli na najniższym poziomie piramidy dłuższy bok obrazu ma więcej niż 16 pikseli. Taka wiedza pozwala wyprowadzić formułę wyliczającą optymalną ilość poziomów piramidy, co ma wielkie znaczenie dla używalności algorytmu. Automatyczne wyliczanie ilości poziomów piramidy sprawia, że algorytm działa poprawnie nie wymagając ingerencji użytkownika, jak

72

Page 73: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

również zwiększa jego konkurencyjność w stosunku do pozostałych zaimplementowanych algorytmów. Główną wadą algorytmu bezpośredniego jest znaczne wydłużanie się czasu działania przy zwiększaniu wielkości obrazu, co ma miejsce w znacznie mniejszym stopniu przy algorytmach opartych o wyszukiwanie punktów szczególnych. Zastosowanie automatycznego wyliczania liczby poziomów piramidy w algorytmie bezpośrednim pozwala zredukować wpływ zmiany wielkości łączonych obrazów do minimum, i z tego powodu zostało również zaimplementowane w programie. Potwierdzeniem tego jest Rysunek 21, który przedstawia porównanie czasów wykonywania algorytmu dla obrazów o różnych wielkościach w jego podstawowej wersji oraz z wykorzystaniem wyszukiwania hierarchicznego z automatycznym wyliczaniem liczby poziomów piramidy.

A.

73

Page 74: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

B.

Rysunek 20: Korzyści ze stosowania wyszukiwania hierarchicznego: A) Zależność czasu wykonania algorytmu od ilości poziomów piramidy, B) Zależność jakości dopasowania obrazów od ilości poziomów piramidy.

74

Page 75: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Rysunek 21: Porównanie czasów wykonania algorytmu bezpośredniego.

6.2 Porównanie działania poszczególnych algorytmówObiektywne porównanie działania algorytmów wymaga zastosowania obiektywnej, deterministycznej miary jakości dopasowania, która nie zawsze będzie odpowiadać jakości wizualnej gotowego obrazu. Wizualne porównanie jakości obrazów zależy w ogromnym stopniu od wykorzystanej funkcji wygładzającej połączenia między obrazami, jest ono również bardzo niedokładne i subiektywne. Problem ten widoczny jest na Rysunek 23, na którym przedstawiono ten sam zestaw obrazów wejściowych połączonych w obraz panoramiczny różnymi algorytmami. Wizualnie nie widać między nimi prawie żadnej różnicy. Niestety nie istnieją obiektywne miary porównujące jakość wizualną, dlatego zdecydowano porównać wielkość średniego błędu kwadratowego oraz czas wykonywania poszczególnych algorytmów, który jest drugorzędnym, ale ważnym kryterium oceny algorytmu. Bardzo dokładny, ale powolny algorytm może cieszyć się dużym powodzeniem podczas tworzenia wyszukanych obrazów panoramicznych, jednak będzie bezużyteczny w przypadkach, w których obraz powinien być tworzony w czasie rzeczywistym. Testy muszą zostać przeprowadzone wielokrotnie na różnych danych wejściowych, aby sprawdzić działanie algorytmów w każdych warunkach, jednak warunki te powinny być jednakowe dla każdego z algorytmów. Oznacza to, że podczas testowania algorytmów łączących obrazy, wszelkie ustawienia mogące mieć wpływ na zmianę czasu wykonania bądź jakości dopasowania, ale nie będące parametrami sterującymi konkretnym algorytmem, powinny być jednakowe dla wszystkich algorytmów. Przykładem takiego ustawienia może być dopasowanie modelu kolorów.

Istniejące prace zajmujące się porównywaniem rozwiązań z tej tematyki (Mikołajczyk, i inni,2005) nie obejmują algorytmów zaimplementowanych w testowanej aplikacji, lub zajmują się jedynie porównaniem deskryptorów punktów kluczowych (Mikolajczyk & Schmid).

75

Page 76: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Zbiór danych testowych przedstawia Rysunek 22. Są to fotografie cyfrowe jak również obrazy wygenerowane sztucznie przy pomocy edytora graficznego. Obrazy zostały połączone dostępnymi algorytmami, jednak łączenie było wykonywane wielokrotnie, tak, aby dla każdego algorytmu osiągnąć możliwie najlepszy wynik.

Parametry osiągnięte podczas łączenia grup obrazów prezentuje Tabela 1 oraz Tabela 2, widać je również na Rysunek 24 i Rysunek 25.

A B

C D

E F

G H

I J

K

Rysunek 22: Zbiór danych testowych. A-J to fotografie wykonane aparatem cyfrowym, K to obrazy stworzone sztucznie.

76

Page 77: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

A. B.

C. D.

Rysunek 23: Zestaw A obrazów połączonych w obrazy panoramiczne kolejnymi algorytmami, ukazując brak możliwości obiektywnego porównania wizualnego. Obrazy stworzone następującymi algorytmami: A) FAST, B) Detektor narożników Harrisa, C) Algorytm bezpośredni, D) SIFT.

Algorytm FAST Detektor Harrisa Alg. Bezpośredni SIFT

Zest

aw

A 85.75 86.02 85.52 86.01B 56.22 56.15 55.99 54.23C 43.33 43.98 41 42.37D 108.34 112.44 104.74 104.8E 117.15 118.53 113.88 114.07F 79.50 85.82 82.97 77.78G 51.93 44.36 54.72 42.45H 103.18 91.55 95.91 91.47I 24.58 25.51 28.45 24.01J 54.45 56.3 52.72 50.77K ∞ ∞ 62.9 ∞

Tabela 1: Średni błąd kwadratowy przy łączeniu poszczególnych grup obrazów kolejnymi algorytmami.

77

Page 78: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Rysunek 24: Wykres umożliwiający porównanie jakości dopasowania przy łączeniu poszczególnych grup obrazów kolejnymi algorytmami.

Dane przedstawione powyżej pozwalają dokonać porównawczego osądu zaimplementowanych algorytmów. Porównanie jakości dopasowania obrazów do siebie poprzez porównanie średniego błędu kwadratowego pomiędzy wartościami nakładających się pikseli, dla algorytmów opartych o wyszukiwanie punktów kluczowych, pozwala wydać osąd o jakości punktów kluczowych. W aspekcie tworzenia obrazów panoramicznych punkty te powinny być jak najbardziej stabilne i niewrażliwe na podstawowe przekształcenia, takie jak przesunięcia kamery czy niewielkie zmiany w naświetleniu. Widać wyraźnie, że w większości przypadków najmniejszy średni błąd kwadratowy osiąga algorytm SIFT. Potwierdza to jego ogromną popularność w komercyjnych aplikacjach do tworzenia obrazów panoramicznych, śledzenia ruchu czy rozpoznawania obiektów. Na drugim miejscu możemy postawić algorytm FAST, osiągający wyniki niewiele lepsze niż detektor narożników Harrisa. O braku stabilności znajdowanych przez ten około dwudziestoletni algorytm punktów kluczowych można przekonać się spoglądając na inne dane statystyczne zwracane przez aplikację. Wypisywana jest tam ilość znalezionych punktów kluczowych dla każdego obrazu, ilość dopasowanych par punktów kluczowych w sąsiadujących obrazach, a także ilość prawidłowo dopasowanych par punktów, czyli takich, na podstawie których udało się wyliczyć przekształcenie afiniczne pomiędzy obrazami. Dla detektora narożników Harrisa ilość punktów zidentyfikowanych jako kluczowe zwykle nie różni się wiele od innych algorytmów, jednak ilość prawidłowo dopasowanych jest stosunkowo bardzo niewielka. Oznacza to, że punkty kluczowe znalezione w jednym obrazie, nie są tożsame z punktami z drugiego obrazu, a zatem wykrywanie ich nie jest dostatecznie stabilne. Warto zwrócić uwagę, że algorytm bezpośredni osiąga często lepsze wyniki niż niektóre z algorytmów opartych o wyszukiwanie punktów kluczowych. Ze względu na niezbyt skomplikowaną

78

Page 79: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

budowę jest ciekawym rozwiązaniem, niestety jednak bardzo długie czasy wykonywania przechylają szalę na jego niekorzyść.

Warto zwrócić uwagę na parametry dopasowania obrazów w zestawie K. Obrazy te, stworzone sztucznie, są zbyt mało skomplikowane, aby algorytmy mogły znaleźć w nich wystarczającą do dopasowania ilość punktów kluczowych, kończąc wykonanie błędem. Do łączenia tego typu obrazów bezkonkurencyjny jest algorytm bezpośredni, który jako jedyny zdołał je dopasować, osiągając przy tym przyzwoity wynik.

Algorytm FAST Detektor Harrisa Alg. Bezpośredni SIFT

Zest

aw

A 2149 2268 8705 5629B 2477 1878 8463 2999C 1908 1836 7512 2647D 2828 2971 9695 3171E 6317 2822 8569 3748F 2918 3166 13483 4542G 3848 3883 16468 4074H 14695 4423 15851 4352I 3748 3782 15992 3943J 13295 6892 37792 9746K - - 872 -

Tabela 2: Czas łączenia poszczególnych grup obrazów kolejnymi algorytmami w milisekundach.

Rysunek 25: Wykres przedstawiający czasy wykonywania kolejnych algorytmów podczas łączenia poszczególnych grup obrazów.

79

Page 80: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Algorytm SIFT, dający najlepszą jakość wyniku nie jest jednak najszybszym algorytmem. Porównanie czasów łączenia obrazów przez kolejne algorytmy prezentuje Rysunek 25. Detektor narożników Harrisa okazuje się być pod tym względem najlepszy, algorytm FAST plasuje się na drugim miejscu, natomiast SIFT na trzecim, wykonując się w czasie o wiele krótszym niż algorytm bezpośredni, który jest pod tym względem wyraźnie najgorszy, mimo zastosowania wyszukiwania hierarchicznego. W niektórych przypadkach charakteryzujący się niską złożonością detektor narożników Harrisa jest jednak wolniejszy od algorytmu FAST. Znając konstrukcję algorytmu FAST, można zastanowić się, dlaczego działa on w niektórych przypadkach tak szybko mimo ogromnej ilości zagnieżdżonych instrukcji warunkowych, które należy wykonać, a dlaczego zdarzają się zestawy obrazów, dla których czas jego działania jest znacznie dłuższy, na przykład zestaw E, H oraz J. Odpowiedzią na pierwsze pytanie jest sama natura punktu kluczowego, występującego stosunkowo rzadko pośród zwykłych pikseli obrazu. Sprawia to, że ogromna większość sprawdzanych potencjalnych punktów kluczowych jest odrzucana po sprawdzeniu jedynie kilku pierwszych instrukcji warunkowych. Znacznie większe wartości dla niektórych zestawów obrazów spowodowane są zbyt małą ilością szczegółów obecnych w tych obrazach, wymagających zrezygnowania ze wstępnego wygładzania obrazów wejściowych dla osiągnięcia dostatecznej jakości dopasowania. W wielu przypadkach zastosowanie wstępnego wygładzania znacznie skraca czas wykonywania, jednocześnie ograniczając ilość znajdowanych punktów kluczowych. Działanie takie sprawdza się w wielu przypadkach, ponieważ znaleziona ilość punktów kluczowych jest dostateczna do znalezienia odpowiedniego dopasowania, jednak zdarza się, że trzeba z niego zrezygnować. Zmiana parametrów detektora narożników Harrisa nie powoduje tak dużego wpływu na czas wykonywania algorytmu, dlatego jego końcowy wynik jest lepszy.

6.3 Badanie zależności jakości dopasowania obrazów od rozmiarów obrazu

Ciekawym eksperymentem jest zbadanie zależności jakości dopasowania obrazów od rozmiarów tych obrazów. Dzięki zastosowaniu pomiaru uśrednionej wartości błędu kwadratowego do określenia jakości dopasowania, takie badanie jest możliwe. Celem jego wykonania jest zbadanie wpływu wzrostu ilości szczegółów obecnych na obrazie o większej rozdzielczości na jakość dopasowania.

W (Mikołajczyk & Schmid, Scale & affine invariant interest point detectors, 2004) możemy znaleźć porównanie zależności jakości dopasowania w zależności od zmiany skali dla detektora DoG używanego w algorytmie SIFT oraz detektora narożników Harrisa, gdzie ten pierwszy osiąga znacznie lepsze wyniki. Praca ta zajmuje się badaniem powtarzalności i jakości wykrywanych punktów kluczowych w zależności od zmiany skali, a zatem dopasowano tam do siebie punkty kluczowe z danego obrazu, oraz z tego samego obrazu po przeskalowaniu. W niniejszym badaniu zmieniana jest wielkość obu obrazów wejściowych, a zatem mamy tu do czynienia z niewielką zmianą skali punktów kluczowych, związaną ze zmianą punktu widzenia pomiędzy obrazami. Porównywanie wyników obu doświadczeń jest niewłaściwe.

80

Page 81: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Badanie przeprowadzono dla wybranego zestawu dwóch obrazów, tworząc obrazy panoramiczne kolejnym algorytmami. Użyte obrazy miały rozmiar 2272 na 1704 piksele, jakość dopasowania zaczęto mierzyć od 10% oryginalnego rozmiaru, i powtarzano dziesięć razy zwiększając rozmiar o 5%. Wyniki pomiarów przedstawia Rysunek 26.

Z przeprowadzonego badania wynika, że zmiana rozdzielczości obrazów łączonych w obraz panoramiczny, dla algorytmów opartych o wyszukiwanie punktów kluczowych nie wpływa znacząco na jakość dopasowania, jednak dla algorytmu bezpośredniego jakość dopasowania pogarsza się wraz ze wzrostem rozdzielczości obrazów wejściowych. Prawdopodobnym powodem pogarszania się jakości jest ograniczenie pola wyszukiwania przekształcenia afinicznego poprzez piramidę zastosowaną do wyszukiwania hierarchicznego. Zastosowanie jej jest jednak konieczne ze względu na bardzo długi czas działania tego algorytmu bez zastosowania wyszukiwania hierarchicznego. Warto również wspomnieć, że osiągnięcie przez algorytmy oparte o wyszukiwanie punktów kluczowych przedstawionych parametrów wynika z manualnego dostosowania ich parametrów wejściowych. Bez dopasowywania parametrów wejściowych wartość średniego błędu dla tych algorytmów rośnie wraz ze wzrostem rozdzielczości obrazów, osiągając większe wartości niż algorytm bezpośredni. Gorsza jakość dopasowania dla obrazów o małych rozmiarach, widoczna po lewej stronie skali wynika z trudności znalezienia dostatecznej ilości punktów kluczowych. Należy również zauważyć, że punkty kluczowe znajdowane przez algorytm FAST oparte są o sąsiedztwo w promieniu 3 pikseli. Ta właściwość sprawia, że zmieniając skalę obrazu, znajdowane punkty kluczowe również się zmieniają, co wpływa na dopasowanie obrazów i wyjaśnia pewne zmiany jakości dopasowania widoczne po prawej stronie skali.

Rysunek 26: Wykres przedstawiający zależność jakości dopasowania obrazów od ich rozmiarów, dla kolejnych algorytmów.

81

Page 82: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Badanie pozwala zauważyć korzyść ze stosowania algorytmów opartych o wyszukiwanie punktów kluczowych, potrafiących znaleźć optymalne dopasowanie obrazów niezależnie od ich rozdzielczości. Ta właściwość sprawia, że są one znacznie częściej wykorzystywane w praktyce, w przypadkach, w których obrazy wejściowe mogą mieć różne rozmiary. Wymagają one jednak dobrania parametrów wejściowych.

6.4 Badanie zależności czasu wykonywania algorytmów od rozmiarów obrazu

Patrząc na zastosowanie algorytmów łączących obrazy w panoramy w projektach przemysłowych bądź komercyjnych, gdzie wymagane jest działanie poprawne i szybkie w każdych warunkach, warto przeprowadzić porównanie czasu wykonywania algorytmów dla obrazów o różnych rozmiarach. W rzeczywistych przypadkach wykorzystania algorytmu programista nie jest w stanie przewidzieć rozmiarów obrazów wejściowych, zatem znalezienie algorytmu będącego najmniej wrażliwym na ich zmiany jest jak najbardziej uzasadnione. Znając wyniki takiego badania może okazać się bardziej korzystne zastosowanie algorytmu mniej dokładnego, ale niewrażliwego na zmiany rozmiarów obrazu, niż dokładnego, ale o czasie wykonania znacznie wydłużającym się, wraz ze wzrostem rozmiarów obrazów wejściowych.

Badanie przeprowadzono dla wybranego zestawu dwóch obrazów, tworząc obrazy panoramiczne kolejnym algorytmami. Użyte obrazy miały rozmiar 2272 na 1704 piksele, jakość dopasowania zaczęto mierzyć od 10% oryginalnego rozmiaru, i powtarzano dziesięć razy zwiększając rozmiar o 5%. Wyniki pomiarów przedstawia Rysunek 27.

Badanie pozwala zauważyć, że zwiększanie rozmiarów obrazów wejściowych ma zdecydowanie największy wpływ na algorytm bezpośredni. Wynika to ze wzrostu ilości kombinacji, które należy sprawdzić, aby wybrać najlepszą pozycję obrazów względem siebie, co trwa znacznie dłużej niż przeszukiwanie obrazów w poszukiwaniu punktów kluczowych. Zwiększanie rozmiarów ma najmniejszy wpływ na algorytm FAST, którego wykonywanie trwa zdecydowanie najkrócej. Na drugim miejscu plasuje się detektor narożników Harrisa, którego czas wykonywania rośnie troszkę szybciej. Jest to dosyć niespodziewany wynik, ponieważ w doświadczeniu opisanym w podrozdziale 6.2 generalnie krótsze czasy osiągnął detektor narożników Harrisa. Wytłumaczeniem tej rozbieżności jest fakt, że w doświadczeniu opisanym w podrozdziale 6.2 występowały przypadki, dla których algorytm FAST był szybszy. W niniejszym doświadczeniu został użyty jeden z takich zestawów obrazów; są to zestawy nie wymagające rezygnacji ze wstępnego rozmycia obrazów przed przetwarzaniem algorytmem FAST. Rozbieżność ta pozwala zauważyć jak duży wpływ na czas wykonywania algorytmu FAST ma ilość znajdujących się w obrazie punktów kluczowych.

Interesująco przedstawiają się wyniki osiągnięte dla algorytmu SIFT. Jak widać czas wykonywania algorytmu rośnie dość szybko aż do pewnej granicznej wartości, dla której wraca do czasów poniżej 10 sekund, by znów rosnąć. Wyjaśnieniem tego efektu jest zastosowanie granicznej wielkości maksymalnej obrazu. Działanie to polega na odrzuceniu

82

Page 83: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

podczas przetwarzania poziomów stworzonej piramidy gaussowskiej, która zawiera obrazy większe od ustalonej granicznej wielkości, która podczas badania była ustanowiona na 1024 piksele. Z badania wynika, że ma to bardzo pozytywny wpływ na czas wykonywania algorytmu. Można teraz postawić pytanie, czy rezygnacja ze szczegółów zawartych w odrzuconych obrazach nie wpłynie negatywnie na jakość dopasowania obrazów w końcowym obrazie panoramicznym. Z efektów doświadczenia 6.3, które wykonane było z tymi samymi parametrami wynika jednak, że nie istnieje takie zagrożenie a jakość końcowego obrazu pozostaje bez zmian.

Zauważalne odchylenie przy łączeniu obrazów o dłuższym boku długości 1131 pikseli algorytmem bezpośrednim spowodowane jest tym, że jest to miejsce zmiany ilości poziomów piramidy zastosowanej do wyszukiwania hierarchicznego.

Rysunek 27: Wykres przedstawiający zależność czasu wykonania algorytmów od rozmiarów obrazów wejściowych.

Wyniki doświadczenia potwierdzają popularność algorytmu SIFT, rzucając jednak pozytywne światło na przyszłość wykorzystania algorytmu FAST, który charakteryzuje się najkrótszym czasem wykonania dla wszystkich badanych przypadków. Stosunek uzyskanych czasów różni się nieznacznie od przedstawionego w (Rosten & Drummond, Machine learning for high-speed corner detection) porównania czasów wykonywania algorytmów FAST, SIFT, oraz detektora narożników Harrisa, gdzie algorytm FAST jest znacznie szybszy od pozostałych. Prawdopodobną przyczyną tej rozbieżności jest to, że panowie Rosten i Drummond mierzą czas jedynie wykrywania punktów kluczowych, natomiast niniejsza praca zajmuje się całym procesem tworzenia obrazów panoramicznych, jednak kolejność klasyfikacji tych algorytmów jest jednakowa.

83

Page 84: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

7 PodsumowanieWykonana zgodnie z przedstawionym projektem aplikacja implementująca opisane algorytmy w pełni realizuje cel pracy. Umożliwiła ona przeprowadzenie testów zaprezentowanych w poprzednim rozdziale. Udało się w nich w obiektywny sposób porównać zaimplementowane algorytmy ze sobą. Pozwala to uzyskać pogląd na każdy z nich, oraz określić potencjalne dziedziny, w których każdy z nich może znaleźć zastosowanie.

Algorytm SIFT okazuje się być najbardziej uniwersalnym z zaimplementowanych algorytmów. Umiarkowanie długi czas wykonywania, nie wzrastający zbyt szybko przy zwiększaniu rozmiarów obrazów wejściowych, w połączeniu ze znakomitą jakością dopasowania obrazów w końcowej panoramie doskonale tłumaczy popularność tego algorytmu. Należy również dodać, że dobrze dobrane parametry sterujące algorytmu pozwalają zastosować go do praktycznie każdego rodzaju fotografii, co sprawia, że działa praktycznie bezobsługowo, czego nie można powiedzieć o pozostałych algorytmach.

Algorytm FAST oraz detektor narożników Harrisa to najszybciej działające algorytmy, o stosunkowo podobnych osiągach. Po odpowiednim dobraniu parametrów sterujących, jakość dopasowania obrazów jest dość dobra, jednak każdy przypadek wymaga osobnego rozpatrzenia. W związku z krótkimi czasami wykonywania tych algorytmów, oraz ich niedużą złożonością obliczeniową mogą znaleźć zastosowanie w systemach, w których czas jest kluczowym czynnikiem, takich jak systemy wbudowane.

Algorytm bezpośredni to algorytm o najdłuższym czasie wykonywania, jednak jakość znajdowanego przez niego dopasowania sprawia, że może on z powodzeniem konkurować z pozostałymi algorytmami. Jest on bardzo dobrym kandydatem do wykorzystania w systemie, w którym czas nie jest tak istotny jak prostota budowy, którą charakteryzuje się ten algorytm. Niestety jego długie czasy wykonywania praktycznie przekreślają możliwość rozbudowy algorytmu o wyszukiwanie dopasowania nie tylko poprzez przekształcenie afiniczne, ale również inne przekształcenia, ponieważ spowodowałoby to wielokrotny wzrost trwania wyszukiwania. Algorytmy oparte o wyszukiwanie punktów kluczowych mogą z powodzeniem zostać rozbudowane o wyszukiwanie dopasowania poprzez innego rodzaju przekształceń, takich jak na przykład rzutowanie perspektywiczne, co za pewne skutkowałoby lepszą jakością dopasowania obrazów, a wiązało się podczas trwania algorytmu praktycznie jedynie z wyszukiwaniem większej ilości parametrów właściwego przekształcenia, czym zajmuje się algorytm RANSAC.

Produktem tworzonym przez aplikację są gotowe obrazy panoramiczne, których wartość wizualną można dodatkowo zwiększyć stosując odpowiedni dla danego przypadku algorytm wygładzający połączenia między obrazami.

Oprócz przeprowadzonych testów aplikacja umożliwia przeprowadzenie ogromnej ilości innych porównań poszczególnych algorytmów, a jej funkcjonalność może być dodatkowo

84

Page 85: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

zwiększona dzięki zastosowaniu odpowiednich technik, pozwalających na łatwe jej dalsze rozwijanie.

Pisanie niniejszej pracy wymagało pełnego przeglądu istniejących rozwiązań oraz wybrania z nich tych najciekawszych, wartych implementacji. Niektóre z nich, takie jak detektor narożników Harrisa czy algorytm FAST, nie zostały stworzone z myślą o tworzeniu obrazów panoramicznych, wymagały zatem dopasowania do stworzonej ramy aplikacji i implementacji mechanizmów, pozwalających wykorzystać je podczas tworzenia obrazów panoramicznych. Kodowanie aplikacji wiązało się z opanowaniem w stopniu bardzo dobrym sztuki programowania i wykorzystywania ciekawych mechanizmów języka programowania, takich jak wielowątkowość czy możliwość dynamicznego wczytywania klas, a także właściwej, przejrzystej organizacji kodu, umożliwiającej dalszy rozwój.

85

Page 86: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

8 BibliografiaBakstein, H., & Pajdla, T. (2002). Panoramic mosaicing with 180degr. field of view lens. Prague, Czech Republic: Czech Technical University.

Bhuttichai Summar, O. C. (2005). Image registration using Hough transform and phase correlation i wavelet domain. International Conference on Control, Automation and System. Gyeonggi-Do, Korea.

Burger, W., & Burge, M. J. (2008). Digital Image Processing. Retrieved from http://www.imagingbook.com/

Capel, D. P. (2001). Image Mosaicing and Super-resolution. Oxford, United Kingdom: University of Oxford, Trinity Term.

Chitsobhuk, O., Chunhavittayatera, S., & Tongprasert, K. (2006). Image registration using Hough transform and phase correlation. International Conference on Advanced Communication Technology.

Choraś, R. S. (2005). Komputerowa wizja, metody interpretacji i identyfikacji obrazów. Warszawa: Akademicka Oficyna Wydawnicza EXIT.

Chum, O., & Matas, J. (2002). Randomized RANSAC with TD,D test. British Machine Vision Conference.

Eden, A., Uyttendaele, M., & Szeliski, R. Seamless image stitching of scenes with large motions and exposure differences.

Fischler, M., & Bolles, R. (1981). Random sample consensus: A paradigm for model fitting with aplications to image analysis nad automated cartography. Communications of the ACM , 381-395.

Harris, C., & Stephens, M. (1988). A combined corner and edge detector. Plessey Research Roke Manor, United Kingdom.

Hartley, R., & Zisserman, A. (2003). Multiple view geometry in computer vision. Cambridge University Press.

Hasler, D., & Süsstrunk, S. Colour handling in panoramic photography.

Jachimski, J., & Mikrut, S. (2006). Wpływ kompresji JPEG na wykrywanie cech na obrazach cyfrowych. In Automatyka, Tom 10, Zeszyt 3 (pp. 365-372).

Jia, J., & Tang, C.-K. (2003). Image registration with global and local luminance alignment. IEEE International Conference on Computer Vision.

86

Page 87: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Kadir, T., Zisserman, A., & Brady, M. (2004). An affine invariant salient region detector. 8th European Conference on Computer Vision. Prague, Czech Republic.

Karkanis, S., Magoulas, G., & Theofanous, N. Image recognition and neuronal networks: intelligent systems for the improvement of imaging information. Department of Informatics, University of Athens, Greece.

Ke, Y., & Sukthankar, R. PCA-SIFT: A more distinctive representation for local image descriptors. Pittsburgh: School of Computer Science, Carnegie Mellon University.

Lowe, D. G. (2004). Distinctive Image Features from Scale-Invariant Keypoints. Vancouver, B.C., Canada: Computer Science Department, University of British Columbia.

Lowe, D. G., & Brown, M. (2003). Recognising Panoramas. Vancouver, Canada: Department of Computer Science, University of British Columbia.

Malina, W., Ablameyko, S., & Pawlak, W. (2002). Podstawy cyfrowego przetwarzania obrazów. Warszawa: Akademicka Oficyna Wydawnicza EXIT.

Mikolajczyk, K. (2002). Detection of local features invariant to affine transformations. Institut National Polytechnique de Grenoble, France.

Mikolajczyk, K., & Schmid, C. A performance evaluation of local descriptors.

Mikołajczyk, K., & Schmid, C. (2001). Indexing based on scale invariant interest points. International Conference on Computer Vision. Vancouver, Canada.

Mikołajczyk, K., & Schmid, C. (2004). Scale & affine invariant interest point detectors. International Journal of Computer Vision , 63-86.

Mikołajczyk, K., Tuytelaars, C., Schmid, C., Zisserman, A., Matas, J., Schaffalitzky, F., et al. (2005). Comparison of affine region detectors. International Journal of Computer Vision .

Mikołajczyk, K., Zissermann, A., & Schmid, C. (2003). Shape recognition with edge-based features. British Machine Vision Conference.

Ostiak, P. Implementation of HDR panorama stitching algorithm. Szczecin, Poland: Institute of Computer Graphics and Multimedia Systems, Technical University of Szczecin.

Pawlik, P., & Mikrut, S. Wyszukiwanie punktów charakterystycznych na potrzeby łączenia zdjęć lotniczych. Kraków: Akademia Górniczo-Hutnicza.

Rosten, E. (2006). Retrieved from FAST Corner Detection: http://svr-www.eng.cam.ac.uk/~er258/work/fast.html

Rosten, E., & Drummond, T. Machine learning for high-speed corner detection. UK: Department of Engineering, Cambridge University.

87

Page 88: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Saalfeld, S. (n.d.). ImageJ Plugins. Retrieved from JavaSIFT: http://fly.mpi-cbg.de/~saalfeld/javasift.html

Shum, H.-Y., & Szeliski, R. (1998). Construction and refinement of panoramic mosaics with global and local alignment. Microsoft Research.

Shum, H.-Y., & Szeliski, R. (1997). Creating full view panoramic image mosaics and enviroment maps. Microsoft Research.

Sonka, M., Hlavac, V., & Boyle, R. (2008). Image Processing, Analysis and Machine Vision. Thomson Learning.

Szeliski, R. (2006). Image Alignment and Stitching: A Tutorial. In R. Szeliski, Foundations and Trends in Computer Graphics and Vision (pp. 1-104).

Tadeusiewicz, R., & Flasiński, M. (1991). Rozpoznawanie obrazów. Państwowe Wydawnictwo Naukowe.

Tadeusiewicz, R., & Korohda, P. (1997). Komputerowa analiza i przetwarzanie obrazów. Wydawnictwo Fundacji Postępu Telekomunikacji.

Xiong, Y., & Turkowski, K. (1998). Registration, calibration and blending in creating high quality panoramas. Jet Propulsion Laboratory.

Yoon, K.-H., & Ryoo, S.-T. Full-view panoramic navigation using Orthogonal Cross Cylinder. Seoul, Korea: Graduate School of Advanced Imaging Science, Multimedia and Film, ChungAng University.

Zomet, A., & Peleg, S. (1998). Applying super-resoultion to panoramic mosaics. IEEE Workshop on Applications of Computer Vision, (pp. 286-287). Princeton.

Zomet, A., Levin, A., Peleg, S., & Weiss, Y. (2006, Kwiecień). Seamless image stitching by minimizing false edges. IEEE Transactions on image processing .

88

Page 89: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

9 Spis ilustracji

Rysunek 1: Fotografia panoramiczna widoku San Francisco z Rincon Hill, zrobiona przez Martina Behrmana w 1851r. techniką dagerotypu. Źródło: Library of Congress Prints and Photographs Division, Washington, USA...................................................................................4

Rysunek 2: Schemat działania aplikacji...................................................................................23

Rysunek 3: Schemat UML użycia zaimplementowanej aplikacji..............................................24

Rysunek 4: Dla każdej oktawy przestrzeni skali obraz jest poddawany splotowi z funkcją Gaussa, dając w wyniku zestaw obrazów w lewej kolumnie. Sąsiadujące obrazy są odejmowane od siebie tworząc różnice w prawej kolumnie. Po każdej oktawie obraz rozmyty jest zmniejszany dwukrotnie...................................................................................................31

Rysunek 5: przykład piramidy rozmytych obrazów oraz piramidy DoG. Źródło: (Ostiak)........32

Rysunek 6: Ekstrema funkcji DoG są wykrywane poprzez porównanie piksela (oznaczonego jako X) z jego 26 sąsiadami (oznaczone kołami) w obszarze 3x3 w obrazie oraz jego dwóch sąsiednich skalach...................................................................................................................33

Rysunek 6: Deskryptor punktu kluczowego tworzony jest poprzez obliczenie wartości i kierunku gradientów w każdym punkcie w danym sąsiedztwie, widoczne po lewej stronie. Wartości gradientów ważone są za pomocą okna gaussowskiego, oznaczonego zielonym okręgiem. Wartości te są następnie akumulowane w histogramach obejmujących podobszary 4x4, widoczne po prawej stronie.........................................................................37

Rysunek 8: Dwunastopunktowy test segmentowy wykrywający narożniki w obrazie. Oznaczone piksele wykorzystywane są przy wykrywaniu, piksel p jest środkiem prawdopodobnego narożnika. Łuk oznaczony linią przerywaną przechodzi przez 12 sąsiadujących ze sobą pikseli jaśniejszych od p, o co najmniej wartość t. Źródło: (Rosten & Drummond, Machine learning for high-speed corner detection)...........................................42

Rysunek 9: Wykres powtarzalności wykrywania punktów kluczowych w zależności od ilości punktów kluczowych, dla różnych wartości n. Dla n<9 wpływ krawędzi jest zbyt duży. Źródło: (Rosten & Drummond, Machine learning for high-speed corner detection)..........................43

Rysunek 9: Przestrzeń krzywizn autokorelacji. Liniami przerywanymi oznaczono klasyfikację na regiony narożników, krawędzi bądź płaskie-o stałej barwie..............................................47

Rysunek 11: Punkty kluczowe wykryte przy pomocy opisanych algorytmów. A) SIFT – strzałki opisują położenie, kierunek i skalę punktu kluczowego. B) FAST – parametr n=9. Czerwone

89

Page 90: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

krzyżyki to punkty kluczowe, zielone to maksymalne punkty kluczowe. C) Detektor narożników Harrisa – k=0.05, niemaksymalne punkty kluczowe zostały usunięte.................50

Rysunek 12: Ilustracja zniekształceń promienistych: A) beczkowate, B) poduszkowate.........51

Rysunek 13: Zdjęcia połączone w obraz panoramiczny. A) bez korekcji zniekształcenia soczewki, wartość średniej różnicy między nakładającymi się pikselami: 48.08. B) Z korekcją zniekształcenia soczewki, wartość średniej różnicy między nakładającymi się pikselami: 42.07. Zastosowano algorytm uśredniający wartość pikseli nakładających się, aby pokazać korzyści z korekcji zniekształcenia soczewki, widoczne najlepiej na krawędzi ulicy................52

Rysunek 14: Połączenie obrazów o czterech kolorach wygładzonych różnymi funkcjami: A) uśrednianie, B) płynne wygładzanie liniowe, C) płynne wygładzanie kwadratowe, D) najbliższy środek.....................................................................................................................54

Rysunek 15: Fotografie składowe obrazu panoramicznego, różniące się balansem bieli........55

Rysunek 16: Obrazy wejściowe połączone w obraz panoramiczny: A) bez korekcji fotometrycznej, wartość średniej różnicy między nakładającymi się pikselami: 76.89, B) z korekcją fotometryczną, wartość średniej różnicy między nakładającymi się pikselami: 54.94, C) wykresy wartości odpowiadających sobie pikseli (czerwone) oraz dopasowana metodą najmniejszych kwadratów prosta o parametrach korekcji fotometrycznej (niebieska)..........58

Rysunek 17: Panel wyboru i ustawienia obrazów...................................................................60

Rysunek 18: Panel wyboru algorytmów..................................................................................62

Rysunek 19: Panel przeglądu obrazów wyjściowych...............................................................68

Rysunek 20: Korzyści ze stosowania wyszukiwania hierarchicznego: A) Zależność czasu wykonania algorytmu od ilości poziomów piramidy, B) Zależność jakości dopasowania obrazów od ilości poziomów piramidy....................................................................................72

Rysunek 21: Porównanie czasów wykonania algorytmu bezpośredniego..............................73

Rysunek 22: Zbiór danych testowych. A-J to fotografie wykonane aparatem cyfrowym, K to obrazy stworzone sztucznie....................................................................................................74

Rysunek 23: Zestaw A obrazów połączonych w obrazy panoramiczne kolejnymi algorytmami, ukazując brak możliwości obiektywnego porównania wizualnego. Obrazy stworzone następującymi algorytmami: A) FAST, B) Detektor narożników Harrisa, C) Algorytm bezpośredni, D) SIFT................................................................................................................75

Rysunek 24: Wykres umożliwiający porównanie jakości dopasowania przy łączeniu poszczególnych grup obrazów kolejnymi algorytmami...........................................................76

90

Page 91: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

Rysunek 25: Wykres przedstawiający czasy wykonywania kolejnych algorytmów podczas łączenia poszczególnych grup obrazów...................................................................................77

Rysunek 26: Wykres przedstawiający zależność jakości dopasowania obrazów od ich rozmiarów, dla kolejnych algorytmów....................................................................................79

Rysunek 27: Wykres przedstawiający zależność czasu wykonania algorytmów od rozmiarów obrazów wejściowych.............................................................................................................81

91

Page 92: Spis treści 1 Wstęp 4 2 Przegląd literatury 6 3 Projekt aplikacji

10 Załączniki1. Płyta CD zawierająca kod aplikacji stworzonej w ramach pisania pracy.2. Diagram klas stworzonej aplikacji.

92