109
1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut Informatyki PRACA DYPLOMOWA INŻYNIERSKA Piotr Guzik Metody wyszukiwania punktów charakterystycznych i wyznaczania ich cech. Opiekun pracy Dr inż. Piotr Garbat Ocena: ..................................................... ................................................................ Podpis Przewodniczącego Komisji Egzaminu Dyplomowego

PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

Embed Size (px)

Citation preview

Page 1: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

1

Rok akademicki 2013/2014

Politechnika Warszawska

Wydział Elektroniki i Technik Informacyjnych

Instytut Informatyki

PRACA DYPLOMOWA INŻYNIERSKA

Piotr Guzik

Metody wyszukiwania punktów

charakterystycznych i wyznaczania ich cech.

Opiekun pracy

Dr inż. Piotr Garbat

Ocena: .....................................................

................................................................

Podpis Przewodniczącego

Komisji Egzaminu Dyplomowego

Page 2: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

2

Kierunek: Informatyka

Specjalność: Inżynieria Systemów Informatycznych

Data urodzenia: 1991.08.12

Data rozpoczęcia studiów: 2010.10.01

Życiorys

Urodziłem się 12 VIII 1991 r. w Tychach. Uczęszczałem do IX Liceum Ogólnokształcącego

im. C. K. Norwida w Częstochowie, które ukończyłem w 2010 r. W październiku 2010 r.

podjąłem studia na Wydziale Elektroniki i Technik Informacyjnych Politechniki

Warszawskiej. W lipcu 2012 r. podjąłem pracę zawodową w firmie informatycznej Agitive

Sp. z.o.o. jako programista aplikacji mobilnych. W lipcu 2013 r. rozpocząłem pracę w firmie

Pentacomp Systemy Informatyczne S.A. jako programista aplikacji JEE oraz projektant

systemów baz danych. Współpracuję z tą firmą do dziś.

.......................................................

Podpis studenta

EGZAMIN DYPLOMOWY

Złożył egzamin dyplomowy w dniu .................................................................................. 2014 r

z wynikiem ..................................................................................................................................

Ogólny wynik studiów: ...............................................................................................................

Dodatkowe wnioski i uwagi Komisji: .........................................................................................

......................................................................................................................................................

......................................................................................................................................................

Page 3: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

3

STRESZCZENIE

Celem pracy jest przedstawienie cech pozwalających opisać obrazy z wykorzystaniem

punktów charakterystycznych. Praca zawiera opis algorytmów łączenia oraz odnajdywania

punktów charakterystycznych w obrazach. Ze szczególną uwagą przyjrzano się różnicom w

opisywanych algorytmach. Ponadto praca zawiera szczegółowy opis implementacji

poszczególnych rozwiązań na system operacyjny OS Android. Znaczną część zajmuje analiza

wyników testów w celu klasyfikacji algorytmów ze względu na takie kryteria jak czas

przetwarzania i dokładność przetwarzania. Integralną część pracy stanowi kod źródłowy

aplikacji mobilnej.

Słowa kluczowe: punkty charakterystyczne, detekcja punktów charakterystycznych,

deskryptory cech, rzeczywistość rozszerzona, AR, OpenCV, OS Android

Title: Feature points characteristics and detection algorithms

This paper shows characteristics of feature points and algorithms that can be used for their

detection and description. The main aim is to outline differences between the anlysed

algorithms. Futrhermore, the paper presents details of implementation working with OS

Android. Special attention was paid to analysis of tests and classification of available

algorithms on the basis of their performance in certain circumstances such as precision and

speed. The crucial part of the paper is a source code of a mobile application.

Keywords: Feature Points, Feature Detection, Feature Descriptors, Augmented Reality, AR,

OpenCV, OS Android

Page 4: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

4

1. Spis treści

Wstęp ........................................................................................................................................ 6

1 Wprowadzenie .................................................................................................................... 6

1.1 Cechy punktowe .......................................................................................................... 6

1.2 Rzeczywistość Rozszerzona ......................................................................................... 7

2 Algorytmy bazujące na punktach kluczowych .................................................................... 9

2.1 SIFT: Scale Invariant Feature Transform ................................................................... 10

2.1.1 Wykrywanie ekstremów w przestrzeni skali ...................................................... 10

2.1.2 Wyznaczanie dokładnego położenia punktów kluczowych ............................... 15

2.1.3 Usuwanie wpływu krawędzi ............................................................................... 16

2.1.4 Przypisanie orientacji ......................................................................................... 17

2.1.5 Lokalny deskryptor obrazu ................................................................................. 17

2.1.6 Dopasowanie punktów kluczowych ................................................................... 19

2.1.7 Wyznaczanie parametrów przekształcenia afinicznego .................................... 20

2.2 FAST: Features from Accelerated Segment Test ....................................................... 23

2.2.1 Podstawy algorytmu........................................................................................... 23

2.2.2 Implementacja detektora punktów kluczowych przy pomocy uczenia

maszynowego ................................................................................................................... 24

2.2.3 Minimalizacja oddziałowywania punktów niemaksymalnych ........................... 25

2.2.4 Deskryptor punktów kluczowych i ich dopasowanie ......................................... 26

2.3 Detektor narożników Harrisa .................................................................................... 26

2.3.1 Podstawy algorytmu........................................................................................... 26

2.3.2 Funkcja odpowiedzi narożnika ........................................................................... 28

2.3.3 Metoda implementacji algorytmu ..................................................................... 29

2.3.4 Deskryptor narożników i ich dopasowanie ........................................................ 29

2.4 Algorytm GFTT - Good Features To Track ................................................................. 29

2.5 BRISK - Binary Robust Invariant Scalable Keypoints .................................................. 30

2.6 DENSE ........................................................................................................................ 32

2.7 MSER .......................................................................................................................... 32

2.8 ORB - oriented BRIEF ................................................................................................. 33

2.9 SURF ........................................................................................................................... 34

2.10 STAR ........................................................................................................................... 37

Page 5: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

5

2.11 BRIEF .......................................................................................................................... 37

2.12 SIMPLEBLOB ............................................................................................................... 39

2.13 FREAK ......................................................................................................................... 39

3 Adaptery dodatkowe ........................................................................................................ 40

4 Więcej o losowości, czyli RANSAC ..................................................................................... 42

5 Przegląd narzędzi .............................................................................................................. 44

6 Opis Aplikacji ..................................................................................................................... 44

6.1 Aplikacja pierwsza - własna implementacja wykrywania znacznika i generowania AR

44

6.1.1 Zmiany krawędzi kolorów w obrazie i ich miksowanie ...................................... 49

6.1.2 Filtry wykorzystujące sąsiedztwo zwane filtami konwolucji (filtry splotu) ........ 51

6.1.3 Szukanie i śledzenie obrazu w scenie ................................................................. 53

6.2 Aplikacja druga - badanie efektywności aglorytmów detekcji .................................. 56

6.2.1 Metody testowania ............................................................................................ 66

7 Wyniki testów ................................................................................................................... 66

7.1 Wyniki dla obrazu przedstawiającego książki na półce ............................................. 70

7.2 Wyniki dla obrazu z martwą naturą .......................................................................... 82

7.3 Wyniki dla obrazu przedstawiającego laptopa i Gwiaździstą Noc van Gogha .......... 85

7.4 Wyniki dla obrazu przedstawiają dwie fotografie wiszące na ścianie....................... 90

7.5 Wyniki dla obrazu przedstawiającego obraz na ścianie, fragment monitora i

fragment szafy ...................................................................................................................... 94

Załącznik A - Właściwości kamer i kalibracja .......................................................................... 102

Model i parametry wewnętrzne kamery ............................................................................ 102

Macierz rotacji i wektor przesunięcia ................................................................................. 104

Kalibracja kamery ............................................................................................................... 105

Załącznik B - Stereowizja i geometria epipolarna .................................................................. 106

Stereowizja ......................................................................................................................... 106

Geometria epipolarna ........................................................................................................ 107

Macierz zasadnicza i podstawowa ..................................................................................... 108

Page 6: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

6

Wstęp

W niniejszej pracy przedstawimy zbiór dobrze poznanych i opisanych w literaturze

metod detekcji punktów charakterystycznych. Metody detekcji mają szeroki zbiór

zastosowań. Wykorzystuje się je np. w celu dopasowywania obrazów do wzroca,

wyszukiwaniu wzorca w obrazie z kamery w czasie rzeczywistym. Znane są również

przypadki wykorzystania opisywanych metod przy uczeniu maszynowym np. przy uczeniu

konturu i kształtu wzorców znaków drogowych dla automatów, które sterują samochodami.

W końcu szerokim spektrum zastosowań, które obecne prężnie się rozwija jest rzeczywistość

rozszerzona (AR), np. poprzez wykrywanie znaczników i wyświetlanie reklam 3D na

ekranach telefonów komórkowych (smartfonów).

Zaprezentowane zostaną wybrane aspekty ich taksonomii. Przede wszystkim sklasyfikujemy

je ze względu na ich najistotniejsze cechy oraz niezmienniki.

Najważniejszym kryterium klasyfikacji będzie konkretne zachowanie parametru, na

podstawie którego jest dokonywana detekcja. Rozpatrzone zostaną następujące cechy:

cechy obrazu,

krzywizny geometryczne,

przestrzenie skali,

piramidy i siatki,

zestaw danych wejściowych.

Po dokonaniu klasyfikacji przeprowadzimy testy wybranych algorytmów pod kątem

ich optymalizacji na potrzeby płynnego działania na urządzeniach mobilnych. W

szczególności będą to urządzenia z systemem operacyjnym OS Android.

Celem pracy jest stworzenie aplikacji - dema, które pozwoli na benchmarkowe

testowanie różnych algorytmów oraz wybranie najlepszych sugestii optymalizacyjnych,

przyspieszających obecnie dostępne algorytmy. Dodatkowo zaprezentujemy nowoczesny

sposób tworzenia aplikacji na system mobilny OS Android z wykorzystaniem elementów

rozszerzonej rzeczywistości (AR). Przedstawione zostanie praktyczne zastosowanie

opisywanych algorytmów na potrzeby przekazywania informacji oraz rozrywki.

1 Wprowadzenie

1.1 Cechy punktowe

Cechy punktowe są kluczowym zagadnieniem tej pracy. Sposób ich opisu oraz

działanie jest niezbędny do zrozumienia działania algorytmów oraz generowania

rzeczywistości rozszerzonej (AR).

Cechy (ang. features) rozumiane są jako specyficzne konfiguracje pikseli układające

się w określone struktury:

krawędzie,

Page 7: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

7

linie,

zakończenia linii,

rogi,

skupiska (blobs) – koła lub kule,

tekstury,

grzbiety (ridges) i szkielety.

Struktury zwykle wykrywa się poprzez filtrowanie obrazu. Odpowiedź to najczęściej

liczba rzeczywista. Filtry mogą być liniowe bądź nieliniowe. Skuteczny filtr powinien dawać:

wysokie odpowiedzi dla pikseli należących do szukanych struktur,

niskie odpowiedzi dla pikseli nienależących do szukanych struktur (choć mogących

należeć do innych struktur).

Cechy punktowe obiektów pozwalają zmniejszyć rozmiar ich opisu na obrazie. Mogą

ułatwić przeprowadzenie operacji odnajdywania korespondujących elementów na kolejnych

obrazach w sekwencji. Wymagają uważnego doboru progów dyskryminacji dla uzyskania

obiektów istotnych do śledzenia elementów. Ważnymi własnościami punktów

charakterystycznych są:

mała czułość na zmiany orientacji i przesunięcia obiektów,

odporność na szum i wahania wartości pikseli obiektów w czasie wywołane zmianą

oświetlenia pola obserwacji,

mała złożoność obliczeniowa,

łatwość przeprowadzania operacji dopasowania w algorytmach śledzenia.

Cechy punktowe wyznacza się, analizując zmiany wartości pikseli lub wyliczając

statystyki wartości w kołowym obszarze wokół danego piksela. Przekroczenie zadanego

progu detekcji wskazuje na wystąpienie cechy punktowej. W zastosowaniach ważne są

detektory „narożników” Harrisa, FAST. Zostaną one zaprezentowane w dalszej części pracy,

wraz z innymi algorytmami.

Należy podkreślić, że przetwarzanie punktów charakterystycznych pozwala na

zwiększenie szybkości porównywania obrazów. Algorytm analizujący każdy piksel i

zestawiający wszystkie piksele między obrazami jest niewydajny. Ponadto nie daje pewności,

że rozpatrywane piksele są znaczące i niezmienne w czasie. Z tego powodu analizuje się

punkty cechujące się, o ile to możliwe, niezmiennością w zależności od rotacji, przesunięcia i

skali. W literaturze są one nazywane punktami kluczowymi lub charakterystycznymi.

Klasycznym podejściem do analizy obrazów jest trójfazowy algorytm polegający na:

detekcji punktów charakterystycznych,

wydobyciu cech (deskryptorów), czyli opisów tych punktów,

znalezieniu odpowiadających sobie punktów charakterystycznych dwóch obrazów.

Jednym z najpowszechniejszych zastosowań cech punktowych w aplikacjach są rozwiązania

powiązane z generowaniem rzeczywistości rozszerzonej (AR).

1.2 Rzeczywistość Rozszerzona

Rzeczywistość Rozszerzona (ang. Augmented Reality, AR) jest terminem

określającym metody łączenia scen rzeczywistych z elementami wirtualnymi

Page 8: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

8

wygenerowanymi przez komputer. Łączenie elementów wirtualnych i rzeczywistych zachodzi

w czasie rzeczywistym. Ogólnie przyjętą definicję Rzeczywistości Rozszerzonej przedstawił

Ronald Azuma. Uwypukla ona następujące cechy Augmented Reality:

łączenie scen wirtualnych i rzeczywistych,

interaktywność w czasie rzeczywistym,

poprawne odwzorowywanie wzajemne położenie obiektów.

Definicja nie ogranicza Rzeczywistości Rozszerzonej jedynie do łączenia obrazów,

ponieważ coraz częściej spotyka się systemy oddziałujące na inne zmysły - słuch czy węch.

Systemy Rzeczywistości Rozszerzonej wywodzą się z systemów Rzeczywistości Wirtualnej

(VR), które przenoszą użytkownika do syntetycznie wygenerowanego środowiska. Systemy

AR należą do rodziny systemów Mixed Reality, którą zdefiniował Paul Milgram.

Dzięki Rzeczywistości Rozszerzonej percepcja użytkownika wzbogacona zostaje o

wirtualne informacje, które pomagają w wykonywaniu rzeczywistych zadań.

Podstawą działania każdego systemu AR jest odnalezienie oraz ciągłe śledzenie

wybranych punktów odniesienia na scenie rzeczywistej w celu odpowiedniego naniesienia na

nią obiektów wirtualnych. Obecne rozwiązania bazują między innymi na detekcji i śledzeniu

kształtów, krawędzi i innych cech charakterystycznych obrazu. Jeśli chodzi o zastosowania

nawigacyjne, detekcja struktur na obrazie może zostać wzbogacona o dane o położeniu

pochodzące z odbiornika GPS lub kompasu.

Oprogramowanie oraz sprzęt dedykowany systemom AR:

Współczesne zastosowania Systemów Rzeczywistości Rozszerzonej zyskują coraz

większą popularność. Systematycznie polepsza się jakość urządzeń optycznych. Następuje

miniaturyzacja komputerów, a ich ceny są coraz niższe. Czynniki te powodują, że

Rzeczywistość Rozszerzona stosowana jest w wielu dziedzinach życia. Wykorzystuje się ją w

pracach specjalistycznych, narzędziach użytkowych, reklamie oraz przemyśle rozrywkowym.

Aplikacje mobilne:

W zastosowaniach mobilnych dominują programy nawigacyjne oraz gry.

Zaprezentujemy teraz przykładowe aplikacje dostępne obecnie na telefonach komórkowych.

Wikitude jest aplikacją, która za pomocą algorytmów Rzeczywistości Rozszerzonej

wyświetla informacje o otoczeniu użytkownika widocznym poprzez zamontowaną w

telefonie kamerę. Aplikacja określa położenie użytkownika za pomocą odbiornika GPS,

kompasu oraz ackelereometru. Następnie na tej podstawie uzyskuje z bazy danych informacje

o istotnych punktach w otoczeniu. Istnieje kilka wersji omawianej aplikacji. Każda z nich

wyświetla informacje innego typu, np. o ważnych punktach turystycznych (Travel guide). Na

podobnej zasadzie działają aplikacje takie jak Layar czy SREngine.

TwittARound jest reprezentantem społecznościowych aplikacji AR. Za jego pomocą

można zobaczyć, kto w okolicy zamieszcza posty na serwisie Twitter. Na obraz z kamery

naniesione zostają ikony reprezentujące aktywnych użytkowników znajdujących się w

przestrzeni zawartej w polu widzenia kamery.

Ze względu na malejące ceny urządzeń mobilnych oraz doświadczenie autora w pracy

z systemem operacyjnym OS Android pokażemy informacyjno-rozrywkowe zastosowanie

systemu AR.

Transmisje telewizyjne:

Page 9: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

9

Podczas transmisji sportowych programy AR wykorzystywane są do wyświetlania

istotnych informacji (np. linii spalonego) wirtualnie nałożonych na obraz areny sportowej

nadawany na żywo. Systemy AR coraz częściej pełnią rolę wirtualnej interaktywnej

scenografii w studiach telewizyjnych. Z Rzeczywistości Rozszerzonej korzysta się też w celu

nakładania wirtualnych reklam podczas transmisji. Mogą one być odmienne dla każdej ze

stacji telewizyjnych nadających dany program, a tym samym skierowane do widzów w

konkretnym regionie nadawania.

Oprócz wymienionych wyżej zastosowań Rzeczywistość Rozszerzona jest obecnie

wdrażana i rozwijana w wielu innych dziedzinach, takich jak medycyna, militaria, edukacja,

projektowanie czy produkcja. W MIT Media Lab (laboratorium Szkoły Architektury i

Planowania będącej częścią Massachusetts Institute of Technology), opracowano prototyp

interfejsu użytkownika, będący realizacją pomysłu z filmu „Raport Mniejszości”. Sterowanie

w opisywanym interfejsie odbywa się za pomocą gestów dłoni. Istniejąca w rzeczywistości

wersja interfejsu za pomocą zestawu kamer śledzi specjalne znaczniki zamontowane na

opuszkach palców. W wersji filmowej użyto przezroczystego wyświetlacza. W przyszłości

pomysł ten mógłby otworzyć nowe zastosowania dla systemów Rzeczywistości Rozszerzonej.

Być może posłuży jako panel operatorski, który zapewni jednoznaczne rozpoznanie

poszczególnych urządzeń oraz bezpośrednią interakcję z nimi.

Google obecnie promuje Google Glass - produkt, który może zrewolucjonizować i

spopularyzować rynek AR. Jest to następny modelowy przykład dynamiki i rozwojowości

badanej tematyki.

Stworzyliśmy użyteczną aplikację mobilną - demo, które po wykryciu zadanego

obrazu (na potrzeby testów wybrano obrazy „Polowanie Akhbara" oraz „Gwiaździsta Noc"

Vincenta van Gogha), generuje w OpenGL sześcian podążający za kamerą. Ukazuje to

łatwość tworzenia aplikacji z elementami rzeczywistości rozszerzonej.

Podsumowanie:

Rzeczywistość Rozszerzoną można określić jako szerokie spektrum aplikacji

tworzonych na potrzeby różnych, często niespokrewnionych zastosowań. Wiele

przedstawionych rozwiązań to prototypy we wczesnym stadium rozwoju. Obecnie największą

popularność zdobywają aplikacje na urządzenia mobilne, ponieważ wymagają najmniejszego

nakładu ze strony użytkownika. Programy tego typu tworzone są niemal na każdy średniej

klasy telefon komórkowy. Inne rozwiązania, takie jak specjalne okulary, są jeszcze drogie

oraz pod wieloma względami niedoskonałe. Zostało to zaprezentowane we wcześniejszych

podrozdziałach. Programy przeprowadzające syntezę elementów w oparciu o informacje

zawarte na obserwowanym obrazie używają specjalnych markerów jako punktów odniesienia.

Inne metody niewymagające stosowania syntetycznych punktów odniesienia są trudne w

implementacji oraz ograniczone do niewielu zastosowań, jak np. śledzenie twarzy. Z tego

powodu postanowiliśmy stworzyć demo, które generuje AR korzystając z markera (obrazy

van Gogha). Nie sposób generować rzeczywistości rozszerzonej bez znajomości pojęcia cech

punktówych, które zostały opisane poniżej.

2 Algorytmy bazujące na punktach kluczowych

Algorytmy bazujące na cechach najpierw znajdują punkty szczególne w danych

obrazach. Następnie dopasowywują je parami i na podstawie ich położenia wyliczają wektor

przemieszczenia. Jakość algorytmu w znacznym stopniu zależy od jakości znalezionych

Page 10: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

10

punktów szczególnych i ich opisu. Algorytm powinien wykrywać te punkty w odpowiednich

miejscach niezależnie od zmian w naświetleniu, położeniu i orientacji obrazu, a także w

pewnym stopniu od zmian punktu widzenia czy skali.

2.1 SIFT: Scale Invariant Feature Transform

Algorytm ten jest obecnie najpowszechniej stosowany 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.

2.1.1 Wykrywanie ekstremów w przestrzeni skali

Punkty mogące być kluczowymi identyfikowane są za pomocą wydajnego algorytmu,

a następnie sprawdzane pod względem niezależności od przekształceń (Lowe, Distinctive

Image Features from Scale-Invariant Keypoints, 2004). Najpierw są lokalizowane w obrazie

oraz w konkretnej skali w taki sposób, aby mogły być identycznie umiejscowione w innym

widoku tego samego obiektu. Następnie, przy wykorzystaniu ciągłej przestrzeni skali,

znajdowane są punkty niewrażliwe na zmianę skali poprzez wyszukiwanie cech stabilnych we

wszystkich możliwych skalach.

Przestrzeń skali obrazu zdefiniowana jest jako funkcja będąca splotem funkcji

Gaussa o różnych skalach z obrazem wejściowym :

(1)

Gdzie jest operatorem splotu oraz

(2)

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. , która może zostać obliczona poprzez różnicę dwóch

sąsiadujących skali z uwzględnieniem stałego mnożnika k:

( ) (3)

Funkcja ta wykorzystywana jest ze względu na łatwość obliczeń. Wygładzony obraz L musi

zostać wyznaczony w każdym przypadku opisu cech w przestrzeni skali. 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 , którego ekstrema są, w

porównaniu do wielu innych dostępnych funkcji, najbardziej stabilnymi punktami

kluczowymi w obrazach (Mikolajczyk K. , 2002).

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

Page 11: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

11

(4)

Wynika stąd, że może zostać wyliczone ze skończonej aproksymacji

przy

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

(5)

a zatem:

(6)

Pokazuje to, że jeśli funkcja DoG posiada skale różniące się o stałą wartość, automatycznie

uwzględnia normalizację skali 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 √ .

Page 12: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

12

Na Rysunek 1. została zaprezentowana wydajna metoda konstrukcji . Obraz

wejściowy jest przyrostowo splatany z funkcją Gaussa, aby dawać obrazy oddzielone w

przestrzeni skali stałą wartością współczynnika k, zaprezentowaną w lewej kolumnie. Każda

oktawa w przestrzeni skali (odpowiadająca podwajaniu ) została podzielona na stałą liczbę

interwałów s, takich, że ⁄ . 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 zestawu obrazów)

jest skalowany poprzez wzięcie każdego wiersza i co drugiego piksela z każdej kolumny.

Rysunek 1: 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 13: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

13

Jakość próbkowania zależna od nie różni się od tej na początku poprzedniej oktawy,

podczas gdy obliczenia są mocno zredukowane.

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

W celu wykrycia ekstremów w każdy piksel porównywany jest z ośmioma

sąsiadami w danym obrazie oraz z dziewięcioma w skali ponad i poniżej, tak jak na Rysunek

3. Piksel jest oznaczany jako ekstremum, jeśli jest większy bądź mniejszy od wszystkich

sąsiadujących. Koszt takiego sprawdzenia jest stosunkowo niski, gdyż 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 niezbędnej 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.

Pojedyncze maksimum w przestrzeni skali występuje 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. Jednak skoro położenie

maksimów jest ciągłą funkcją obrazu, to 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źć równowagę pomiędzy wydajnością a dokładnością. W

praktyce 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. Wybiera się te dające najbardziej rzetelne

rezultaty w warunkach symulacyjnych.

Page 14: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

14

Rysunek 3: Ekstrema funkcji DoG są wykrywane poprzez porównanie piksela (oznaczonego jako X) z jego

dwudziestoma sześcioma sąsiadami (oznaczone kołami) w obszarze 3x3 w obrazie oraz jego dwóch sąsiednich skalach.

Częstotliwość próbkowania w dziedzinie skali jest wyznaczona na podstawie badania

różnych obrazów z kamery. Eksperymenty opisane w literaturze (Lowe, Distinctive Image

Features from Scale-Invariant Keypoints, 2004) wykazały, że największa powtarzalność

osiągana jest przy trzech skalach na oktawę. Wynika to z faktu, że większa liczba skali na

oktawę powoduje wykrycie znacznie większej liczby ekstremów lokalnych, które okazują się

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ży ustalić

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. Oczywiście wygładzanie

takie powoduje efektywną stratę dużej ilości informacji o wysokiej częstotliwości. Z tego

powodu warto zastanowić się nad rozszerzeniem obrazu. Pozwala to otrzymać większą liczbę

punktów kluczowych. Rozmiar obrazu jest zwiększany dwukrotnie przed zbudowaniem

pierwszego poziomu piramidy, przy wykorzystaniu interpolacji liniowej. Zakładając, że obraz

wejściowy charakteryzuje się rozmyciem o co najmniej (jest to minimum wymagane

aby uniknąć efektu aliasingu), obraz o dwukrotnie większym rozmiarze rozmyty jest z

Oznacza to, że potrzeba niewielkiego dodatkowego rozmycia otrzymanego obrazu

przed rozpoczęciem tworzenia oktawy skali. Działanie takie zwiększa liczbę stabilnych

punktów kluczowych prawie czterokrotnie. Nie zauważono jednak innych pozytywnych

skutków dalszego rozszerzania obrazu (Lowe, Distinctive Image Features from Scale-

Invariant Keypoints, 2004).

Page 15: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

15

2.1.2 Wyznaczanie dokładnego położenia punktów kluczowych

Po znalezieniu punktów mogących być kluczowymi poprzez porównanie ich z

sąsiednimi, następnym krokiem jest dokładne przeanalizowanie danych dotyczących ich

lokalizacji, skali oraz stosunku krzywizn w sąsiedztwie. Pozwala to odrzucić punkty o słabym

kontraście (tym samym wrażliwe na szum) lub niepoprawnie zlokalizowane na krawędzi.

Dzięki opracowaniu metody (Lowe, Distinctive Image Features from Scale-Invariant

Keypoints, 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 rozszerzenia Taylora do funkcji przestrzeni skali .

Funkcja jest przesunięta tak, że początek układu współrzędnych znajduje się w punkcie

próbkowania:

(7)

gdzie D i jego pochodne przetwarzane są w punkcie próbkowania oraz jest

przesunięciem względem tego punktu. Położenie ekstremum , wyznaczane jest poprzez

przyrównanie różniczki powyższej funkcji względem x do zera, co daje

(8)

Hesjan oraz pochodna D są aproksymowane przy wykorzystaniu różnic sąsiednich punktów.

Jeśli przesunięcie jest większe niż 0,5 w którymkolwiek z kierunków, ekstremum leży

bliżej innego piksela. W takim przypadku próbkowany punkt jest zmieniany i na nim

dokonuje się interpolacja. Wynikowe przesunięcie jest dodawane do położenia tego punktu,

aby otrzymać interpolowane położenie ekstremum.

Obliczenie wartości funkcji w ekstremum jest przydatne przy odrzucaniu niestabilnych

punktów kluczowych o niskim kontraście. Wartość funkcji można obliczyć korzystjąc ze

wzoru:

(9)

Page 16: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

16

2.1.3 Usuwanie wpływu krawędzi

Ze względu na stabilność usuwanie punktów kluczowych o niskim kontraście nie jest

konieczne. Funkcja DoG daje natomiast wysoką wartość wzdłuż krawędzi nawet jeśli

zlokalizowanie tam punktu kluczowego nie jest wyraźnie uzasadnione (Lowe, Distinctive

Image Features from Scale-Invariant Keypoints, 2004). Skutkuje to brakiem stabilności na

niewielki szum. Maksimum funkcji DoG nieznacznie wyróżniające się ponad otaczające je

wartości będzie charakteryzowało się wysoką wartością krzywizny poprzecznej do krawędzi,

a niską wzdłuż krawędzi. Krzywizny mogą zostać wyliczone z macierzy Hesjanu 2x2, H,

wyznaczonej dla miejsca i skali związanej z punktem kluczowym:

[

] (10)

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:

(11)

(12)

W przypadku, w którym wyznacznik jest ujemny, wartości krzywizn mają różne znaki.

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 . Wówczas poniższa formuła jest zależna

jedynie od stosunku wartości własnych, a nie ich wartości.

(13)

Wynik równania jest minimalny, jeśli wartości własne są sobie równe, a rośnie wraz ze

wzrostem r. Chcąc sprawdzić czy stosunek wartości własnych jest większy od danej wartości

r, musimy zweryfikować:

(14)

Sprawdzenie tej nierówności jest bardzo wydajne obliczeniowo. Zajmuje zwykle mniej niż 20

operacji zmiennoprzecinkowych dla każdego punktu kluczowego.

Page 17: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

17

2.1.4 Przypisanie orientacji

Poprzez przypisanie orientacji do każdego znalezionego punktu kluczowego

deskryptor tego punktu będzie stworzony relatywnie do jego orientacji. Dzięki temu zyska

niezależność od orientacji. Pomimo kilku wad, takich jak ograniczenie możliwości

wykorzystania deskryptorów do 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 temu wszystkie obliczenia dokonywane są

niezależnie od skali. Dla każdej próbki w danej skali obliczany jest kierunek i

wielkość gradientu. Wartości te obliczane są na podstawie różnic pomiędzy

pikselami:

√ (15)

( ) (16)

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 x skala danego punktu kluczowego.

Maksima histogramu orientacji odpowiadają dominującym kierunkom lokalnego

gradientu. Wybierany jest najwyższy wierzchołek. Jeśli w histogramie istnieje inne

maksimum o wielkości co najmniej 80% najwyższego, tworzony jest kolejny punkt kluczowy

z daną 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 Features from 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.

2.1.5 Lokalny deskryptor obrazu

Opisane powyżej operacje przyporządkowały każdemu punktowi kluczowemu

lokalizację, skalę oraz orientację. Parametry zostały wyliczone z powtarzalnością

zapewniającą niezmienniczość względem nich. Następnym krokiem jest stworzenie

deskryptora obszaru obrazu będącego indywidualnym, a jednocześnie możliwie

niezmienniczym względem pozostałych przekształceń, takich jak zmiana naświetlenia czy

punktu widzenia. Autor algorytmu, po analizie wielu badań (Lowe, Distinctive Image

Features from Scale-Invariant Keypoints, 2004), zdecydował się na zastosowanie podejścia

bazującego na biologicznym modelu widzenia jako funkcji neuronów w korze mózgowej.

Rysunek 4. przedstawia sposób tworzenia deskryptora. W pierwszym kroku

wyznaczane są wielkość i kierunek gradientu w punktach wokół punktu kluczowego. W tym

Page 18: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

18

celu używa się 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ą jako małe strzałki po lewej stronie Rysunek 4.

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 4. 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.

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.

Rysunek 4: Deskryptor punktu kluczowego tworzony jest poprzez obliczenie wartości i kierunku gradientów w każdym punkcie w

danym sąsiedztwie, co jest 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.

Kierunki i wartości gradientu Deskryptor punktu kluczowego

Page 19: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

19

Deskryptor budowany jest z wektorów zawierających wartości ze wszystkich

histogramów. Odpowiadają one długościom strzałek po prawej stronie Rysunek 4. Widać tam

macierz 2x2 histogramy. Eksperymentalnie (Lowe, Distinctive Image Features from Scale-

Invariant Keypoints, 2004) najlepsze rezultaty zostały osiągnięte dla macierzy 4x4

histogramy zawierające 8 przedziałów każdy. Daje to 128 wartości w deskryptorze dla

każdego punktu kluczowego.

Na koniec procesu tworzenia deskryptor jest 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łą. Oznacza to, że 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

to z własności, ż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 ze zmian w nasyceniu kamery lub oświetlenia przy zmianie punktu widzenia.

Mogą one powodować duże różnice w wartościach gradientów. Jest jednak mało

prawdopodobne, ż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 from Scale-Invariant Keypoints, 2004).

2.1.6 Dopasowanie punktów kluczowych

Zastosowanie algorytmów wyszukujących punkty kluczowe do rozpoznawania

obiektów polega na dopasowaniu znalezionych punktów lub ich grup do odpowiadających im

punktów dla obiektu modelowego. Zwykle najpierw szuka się dopasowania dla pojedynczych

punktów do punktów będących w bazie danych. Wiele z takich dopasowań jest błędnych,

dlatego grupy co najmniej trzech punktów są następnie dopasowywane w taki sposób, aby

zgadzały się co do klasy obiektu i jego pozycji. Dopasowuje się grupy punktów, ponieważ

daje to znacznie wyższe prawdopodobieństwo poprawności dopasowania. Następnie każda z

dopasowanych grup punktów jest sprawdzana dokładniej poprzez dopasowanie i

zastosowanie przekształceń geometrycznych modelu. Celem jest osiągnięcie takiego ułożenia

jak na obrazie. Znalezienie tych przekształceń decyduje o poprawności interpretacji.

Najlepsze dopasowanie dla każdego punktu kluczowego znajdowane jest poprzez

wyszukanie jego najbliższego 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 tym nie znajdą one właściwego

dopasowania. Dlatego potrzebne jest zastosowanie kryterium pozwalającego na odrzucenie

źle dopasowanych punktów. Odrzucenie dopasowań, dla których odległość od najbliższego

sąsiada jest większa od pewnej ustalonej wartości nie spełnia tego zadania (Lowe, Distinctive

Page 20: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

20

Image Features from Scale-Invariant Keypoints, 2004). Z tego powodu 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 występuje 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 Features from 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. Nie istnieje żaden znany algorytm będący

bardziej wydajny dla tak dużej liczby wymiarów niż dokładne przeszukanie. W związku z

tym wyszukiwaniem zajmuje się algorytm Best-Bin-First (BBF) (Lowe, Distinctive Image

Features from Scale-Invariant Keypoints, 2004). Korzysta on ze zmodyfikowanego porządku

przeszukiwania zastosowanego w algorytmie k-d tree. Wymaga 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 poprzez zagłębianie się w kolejne poziomy stosu i

estymowanie odległość znajdujących się tam punktów do aktualnie przetwarzanego. Proces

trwa do momentu stwierdzenia, że z dużym prawdopodobieństwem nie istnieje bliższy punkt.

Modyfikacja polega na przerwaniu przeszukiwania po sprawdzeniu pierwszych dwustu

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ń.

2.1.7 Wyznaczanie parametrów przekształcenia afinicznego

Poprawność 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 proponuje metodę najmniejszych kwadratów (Lowe, Distinctive Image

Features from Scale-Invariant Keypoints, 2004). Obecnie lepszymi rezultatami cechuje się

metoda zwana RANSAC (RANdom SAmple Consensus), zastosowana 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. 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 dla osiągnięcia dobrej

stabilności wymaga ono siedmiu, a nawet większej liczby par dopasowanych punktów.

Tymczasem rozwiązanie przekształcenia afinicznego wymaga tylko trzech par. Chcielibyśmy

rozwiązywać dopasowania mając tylko 3 pary dopasowanych punktów, w związku z czym

Page 21: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

21

przekształcenie afiniczne jest lepszym punktem startowym. Słabą aproksymację możemy

zniwelować pozwalając na duże błędy residualne.

Przekształcenie afiniczne punktu modelu [ ] do punktu obrazu [ ] może zostać

zapisane jako:

[ ] [

] [

] [

] (17)

gdzie przesunięciem modelu jest [ ]

, natomiast afiniczny obrót, skalowanie i

rozciągnięcie opisane są parametrami .

Chcemy rozwiązać powyższe równanie względem parametrów transformacji, a zatem

przekształcamy je tak, aby zgrupować niewiadome w jednym wektorze:

[

]

[

]

[ ] (18)

Równanie to opisuje pojedynczą parę dopasowanych punktów. 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 równania. Zapisując powyższe równanie w formie

symbolicznej, otrzymamy

(19)

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

[ ] (20)

minimalizujemy sumę kwadratów odległości punktów modelu rzutowanych na punkty

obrazu. W przypadku, gdy nasze dopasowania zawierają błędne pary, dane nie są idealnie

dobrane. W związku z tym uzyskane rozwiązanie również nie będzie doskonałe. 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 znacznej 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 pewne z góry ustalone schematy

pochodzenia błędnych danych. Nie jest to 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. Zwykle są niewielkie. Ich rozrzut opisany jest rozkładem normalnym, a

średnia wartość oscyluje wokół zera.

Page 22: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

22

Błędy klasyfikacji - występują przy niewłaściwej klasyfikacji pewnych danych. Są

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 pogorszy niż polepszy 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. Wtedy 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ć następująco (Sonka, Hlavac, & Boyle, 2008): przy rozważaniu

dopasowania liniowego dwa punkty wystarczająco definiują linię biegnącą przez nie. Można

zatem wybrać losowe 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ć następująco (Sonka, Hlavac, & Boyle,

2008):

1. Dane jest n punktów { }, których rozkład chcemy opisać modelem

określonym przez co najmniej m punktów ( , dla linii ).

2. Ustaw licznik iteracji .

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 . Jeśli dla ustalonego , 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 liczbę punktów o odchyleniach

poniżej średniej.

t - zadowalająca wielkość grupy consensusowej, sugeruje się (Fischler & Bolles,

1981) ustalenie wartości .

K - liczba iteracji algorytmu w poszukiwaniu zadowalającego dopasowania.

Statystycznie uzasadniona wartość (Fischler & Bolles, 1981) to , gdzie w

jest prawdopodobieństwem z jakim losowo wybrany punkt będzie leżał w odległości

mniejszej niż ε od ustalonego modelu.

Page 23: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

23

Algorytm RANSAC okazuje się godnym zaufania rozwiązaniem znajdującym

zastosowanie w wielu dziedzinach związanych z widzeniem komputerowym.

2.2 FAST: Features from Accelerated Segment Test

Algorytm ten został wybrany do analizy z powodu jego dużej szybkości działania oraz

stabilności znalezionych punktów kluczowych. Operuje na obrazach w skali szarości.

2.2.1 Podstawy algorytmu

Kryterium testu segmentowego bazuje na okręgu stworzonym przez 16 pikseli wokół

badanego punktu p (Rosten & Drummond, Machine learning for high-speed corner detection).

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

powiększony o ustaloną wartość t lub mniejszą niż , jak zaprezentowano na Rysunek

5. Widzimy test segmentowy wykonany dla . 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 wypadnie pomyślnie, należy sprawdzić wszystkie pozostałe punkty.

Rysunek 5: Dwunastopunktowy test segmentowy wykrywający narożniki w obrazie. Oznaczone piksele

wykorzystywane są przy wykrywaniu punktów. Piksel p jest środkiem prawdopodobnego narożnika. Łuk oznaczony

linią przerywaną przechodzi przez 12 sąsiadujących ze sobą pikseli jaśniejszych od p co najmniej o 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 nieco gorsze

rezultaty. Mimo zalet testu segmentowego przeprowadzonego dla , na potrzeby

urządzeń mobilnych warto zastanowić się nad wyborem wartości . Uzasadnieniem jest

wyraźnie lepsza powtarzalność wykrywania punktów kluczowych, co widać na Rysunek 6.

Page 24: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

24

Rysunek 6: Wykres powtarzalności wykrywania punktów kluczowych w zależności od liczby 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)

2.2.2 Implementacja detektora punktów kluczowych przy pomocy uczenia

maszynowego

Autorzy algorytmu (Rosten & Drummond, Machine learning for high-speed corner

detection) zaprezentowali sposób efektywnej implementacji niniejszego algorytmu przy

pomocy uczenia maszynowego. Jest to proces dwustopniowy. Budując detektor oparty o daną

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 wszystkie 16 pozycji położonych na okręgu wokół badanego punktu.

Dla każdej pozycji względem badanego punktu p, { } , piksel w niej leżący

oznaczony jako może przyjmować jeden z trzech stanów:

{

Wybierając kolejne x i obliczając ich dla każdego (zbiór wszystkich pikseli we

wszystkich obrazach) dzielimy P na trzy podzbiory: , gdzie każde p jest przypisane

do .

W drugim etapie wprowadzamy zmienną typu boolean przyjmującą wartość

prawda jeśli p jest punktem szczególnym, oraz fałsz w przeciwnym wypadku. Korzystamy z

algorytmu, który poprzez zmierzenie entropii zaczyna od wyboru x dostarczającego

najwięcej informacji o tym, czy badany piksel jest punktem szczególnym. Entropia K zbioru

P opisana jest wzorem:

(21)

gdzie |{ | }| (liczba punktów szczególnych)

oraz |{ | }| (liczba punktów nie będących szczególnymi)

Po

wta

rzal

no

ść %

Ilość punktów kluczowych

Page 25: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

25

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

(22)

Po wybraniu x o największym przyroście informacji proces jest powtarzany rekursywnie dla

każdego z trzech podzbiorów. Przykładowo wybierane jest aby podzielić na

, analogicznie dla oraz , 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ść ,

a zatem wszystkie są lub nie są punktami szczególnymi. Wystąpienie takiej sytuacji jest

pewne, ponieważ K jest funkcją danych uczących (Rosten & Drummond, Machine learning

for 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. Oznacza to, że z

opdowiednią aproksymacją drzewo zawiera zasady wybranego detektora punktów

szczególnych FAST. Drzewo decyzyjne jest następnie konwertowane do kodu języka

programistycznego, 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.

2.2.3 Minimalizacja oddziałowywania punktów niemaksymalnych

Ponieważ 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. 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 w celu przyspieszenia obliczeń używana jest

zmodyfikowana definicja trzecia:

(∑| |

∑ | |

) (23)

gdzie

{ }

{ }

Page 26: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

26

2.2.4 Deskryptor punktów kluczowych i ich dopasowanie

Po wykryciu punktów kluczowych w obu obrazach mających tworzyć panoramę,

należy dopasować w pary odpowiadające sobie punkty znalezione w obu obrazach. Aby

punkty te były jednoznacznie identyfikowalne, trzeba przyporządkować każdemu z nich

deskryptor opisujący dany punkt. Ze względnu na brak możliwości stworzenia deskryptora z

danych zwracanych przez algorytm FAST - 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. Warto podkreślić, że dopasowanie punktów kluczowych w pary odbywa się 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.

2.3 Detektor narożników Harrisa

Detektor narożników Harrisa został opracowany w 1988 roku i do dziś 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). Jest on wrażliwy na większe zmiany skali oraz

duże zmiany kontrastu. Operuje na obrazach w skali szarości.

2.3.1 Podstawy algorytmu

Detektor narożników Harrisa opiera się o założenie, że jasności pikseli wokół

narożnika będą się silnie zmieniać w wielu kierunkach. Stanowi ulepszoną wersję detektora

Moravca, będącego najprostszym istniejącym detektorem narożników. Wykrywa punkty o

maksymalnym kontraście, czyli narożniki lub ostre krawędzie. Odbywa się to poprzez

badanie średnich zmian jasności w trakcie przesuwania lokalnego okna prostokątnego w

różnych kierunkach i (Harris & Stephens, 1988). Występują trzy przypadki:

1. Jeśli badane regiony są stałej jasności, przesunięcie okna spowoduje 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 wywoła dużą

zmianę.

3. Jeśli okno leży na narożniku lub pojedynczym punkcie, wówczas każde przesunięcie

spowoduje dużą zmianę wartości. Punkty takie możemy 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:

| | (24)

Page 27: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

27

gdzie w opisuje zastosowane okno: jedność w obrębie prostokątnego regionu, zero poza nim,

obraz wejściowy opisany symbolem I. Przesunięcia (x,y) pochodzą ze zbioru

{ }. Detektor Moravca poszukuje lokalnego maksimum dla min{E}

powyżej pewnej wartości odcięcia.

Detektor Moravca nie jest wolny od błędów. Ich korekta 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 określić, dokonując analitycznego rozwinięcia wokół punktu startowego:

[ ] ∑

[ ] (25)

gdzie gradienty aproksymowane są poprzez:

(26)

(27)

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

(28)

gdzie

2. Odpowiedź jest zaszumiona z powodu prostokątnego okna binarnego – należy

użyć gładkiego okna kolistego, na przykład gaussowskiego:

(29)

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:

(30)

gdzie macierz M jest symetryczną macierzą 2x2 postaci:

[

]

Page 28: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

28

Można zauważyć, że E jest podobne do lokalnej 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,

badany region obrazu jest 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, tylko

przesunięcie okna w poprzek 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żmy 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 , to jeśli (α,β) należy do części

wykresu opisującej krawędzie, 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 7.

2.3.2 Funkcja odpowiedzi narożnika

Do efektywnej klasyfikacji narożników, oprócz opisanego powyżej podziału

przestrzeni krzywizn, potrzebna jest miara jakości odpowiedzi narożnika. Pomaga to w

identyfikacji maksymalnych narożników.

Funkcja taka, oznaczona jako R, musi być funkcją jedynie α oraz β. Dzięki temu

zachowa niezmienniczość względem obrotów. Warto w tym momencie użyć śladu macierzy

M oraz jej wyznacznika. Pozwoli to uniknąć bezpośredniego obliczania wartości własnych tej

macierzy. A zatem (Harris & Stephens, 1988):

7

(31)

β

α

narożniki

krawędzie

krawędzie płasko

Rysunek 7: Przestrzeń krzywizn autokorelacji.

Liniami przerywanymi oznaczono klasyfikację

na regiony narożników, krawędzi bądź płaskie-o

stałej barwie.

Page 29: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

29

(32)

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

(33)

Funkcja ta przyjmuje wartości pozytywne dla narożników, negatywne dla krawędzi

oraz oscyluje wokół zera dla regionów o podobnej barwie. Warto 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.

2.3.3 Metoda implementacji algorytmu

Planując implementację algorytmu, można rozpisać go następująco (Sonka, Hlavac, &

Boyle, 2008):

1. Wprowadź do obrazu rozmycie Gaussowskie.

2. Oblicz gradient nasycenia dla każdego piksela w dwóch prostopadłych kierunkach,

,

. 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 niebędące maksymalnymi.

2.3.4 Deskryptor narożników i ich dopasowanie

W 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ę 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.

2.4 Algorytm GFTT - Good Features To Track

W 1994 Jianbo Shi oraz Carlo Tomasi wprowadzili modyfikacje do swojej pracy

zatytułowanej „Good Features to Track”, które dały lepsze wyniki w porównaniu do

Page 30: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

30

klasycznego detektora krawędzi Harrisa. W algorytmie klasycznym Harrisa funkcja

oceniająca ma postać:

Natomiast Shi oraz Tomasi zaproponowali jej modyfikację do postaci:

Jeżeli wartość funkcji oceny przekracza pewien ustalony próg, wówczas tak samo jak w

algorytmie Harrisa punkt jest uznanwany za narożnik. Jeżeli narysujemy funkcję w wymiarze

, tak samo jak w klasycznym algorytmie Harrisa, otrzymamy poniższy rysunek:

Rysunek 8: Zielony kolor symbolizuje wykrycie narożnika. Widać, że tylko gdy oraz są poniżej pewnej

wartości minimalnej, , mamy wierzchołek.

Algorytm GFTT znajduje N najsilniejszych wierzchołków w obrazie. Obraz powinien

być dostarczony w skali szarości. Następnie należy zadać minimum wyrażone w procentach,

które określa próg jakości wierzchołka. Jeżeli nie jest ono osiągnięte, wszystkie badane

wierzchołki są odrzucane i nie są uznane za narożniki. Następnie ustalamy minimalny dystans

w sensie Euklidesa pomiędzy wykrytymi narożnikami. W ten sposób sortujemy wszystkie

wykryte wierzchołki i wybieramy N najlepszych.

2.5 BRISK - Binary Robust Invariant Scalable Keypoints

Algorytm Brisk pochodzi z 2011 roku, więc jest dość nowym algorytmem. Bazuje na

algorytmie przestrzennym-oktawowym FAST na potrzeby detekcji oraz na testowaniu

binarnych wzorców w celu opisania znalezionych punktów.

Punk kluczowy jest szukany w oktawie ci poprzez analizę ośmiu sąsiadujących

wyników w oktawie ci oraz w korespondujących ze sobą sąsiednich oktawach jedną wyżej i

jedną niżej. We wszystkich trzech oktawach lokalnym maximum jest pixel, znajdujący się

Page 31: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

31

możliwie blisko przy wykresie paraboli, która jest dopasowana wzdłuż osi skali w celu

ustalenia prawdziwej skalowalności punktu charakterystycznego. Interpolację widać poniżej.

Rysunek 9: Obraz przedstawia działanie algorytmu BRISK w szczególności interpolację położenia oktawy oraz

porównanie jego działania z algorytem FAST na którym bazuje.

(źródło : http://littlecheesecake.me/blog/13804625/feature-detectors-and-descriptors)

Deskryptory dla algorytmu BRISK mają 512 bitów. Obliczają one ważoną

Gaussowaską średnią na zbiorze pochodzącym ze wzorca punktowego znajdującego się

blisko punktu charakterystycznego. Wzorzec jest skonstruowany jako N pozycji równo

rozmieszczonych na okręgach dookoła punku charakterystycznego. Aby uzyskać odporny na

rotację i skalę unormowany deskryptor, BRISK stosuje próbkowanie wzroca obróconego o

kąt alpha wokół punktu kluczowego k. Otrzymany bitowy deskryptor jest efektem wykonania

krótkodystansowych (pomiędzy sąsiednimi okręgami lub w ich obrębie) porównań par

punktów.

Page 32: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

32

Rysunek 10: Obraz przedstawia wygląd bitowego deskryptora powstałego na skutek porównań krótkodystansowych

par punktów.

(źródło : http://littlecheesecake.me/blog/13804625/feature-detectors-and-descriptors)

2.6 DENSE

Detektor ten generuje kilka poziomów punktów charakterystycznych. Ich cechy na

każdym poziomie są umieszczone jako węzły regularnej siatki nakładanej na rozpatrywany

obrazek (poza jego konturami, które nie liczą się jako węzły). Wraz z każdym kolejnym

poziomem parametry cechy takie jak skala, rozmiar węzła, rozmiar granicy obrazka są

mnożone przez ustalony parametr w celu wyróżnienia najlepszych.

2.7 MSER

MSER - maximally stable extremal region extractor to algorytm polegający na

detekcji różniących się między sobą elementów obrazów. Początkowo szukał podobieństw w

dwóch obrazach prezentujących tę samą scenę z dwóch różnych punktów widzenia. Do

detekcji używa się głównie obiektów o określonych parametrach.

Algorytm polega na wyszukiwaniu maksymalnie stabilnych regionów w obrazie.

Można to wytłumaczyć odwołując się do progowania. Wszystkie piksele poniżej zadanego

progu są uważane za czarne, podczas gdy wszystkie powyżej są określane jako białe. W ten

sposób, sterując wartością progową, można spowodować rozrastanie się czarnych plam

reprezentujących czarne piksele. Im większy próg, tym czarny obszar bardziej się rozrasta.

Proces trwa dopóki cały obraz nie stanie się czarny. W trakcie powiększania się czarnego

obszaru konstruowane jest drzewo reprezentujące, przy jakiej wartości progowej piksel został

oznaczony na czarno.

W ten sposób określa się wspomniane regiony ekstremalne (nazwa pochodzi od

przeciwnstawnych kolorów białego i czarnego). Metoda ta jest bardzo wrażliwa na zmienne

naświetlenie obrazu oraz przemieszczający się cień.

W pracy Krystiana Mikolajczyka udowodniono, że jest to algorytm podatny na

rozmycia obrazu, co jest jego największa wadą.

Page 33: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

33

2.8 ORB - oriented BRIEF

Detektor

ORB jest rozszerzeniem algorytmu BRIEF. Wprowadzono w nim niezmienność

wobec rotacji. Używa detektora FAST, a jako deskryptor wykorzystuje BRIEF rotujący swój

wzorzec. Na podstawie silnych zmian orientacji wybiera się dobry wzorzec.

Detektor oblicza jakość narożników metodą Harrisa w celu uporządkowania punktów

charakterystycznych wykrytych metodą FAST. Orientacja dla tak wykrytych punktów jest

liczona na podstawie intensywności centroidy. Centroidę definiujemy jako:

Można obliczyć wektor od środka narożnika do centroidy, zwany orientacją :

Warto zauważyć, że orientacji tej nie ma pierwotnie FAST.

Desktryptor

Wzorzec jest poddawany serii obrotów. Po wykonaniu serii obrotów algorytm BRIEF

cechuje niepewność i rozbieżności, ponieważ punkty kluczowe z uwzglednioną rotacją mają

gorsze własności przy testach binarnych.

Aby zneutralizować niekorzystną rozbieżność z klasycznym BRIEF stosuje się metodę

uczącą. Uczy się na podstawie rotujących wzorców. Dzięki temu osiąga się większą

rozróżnialność oraz mniejszą zależność od obrotów.

Algorytm ORB powstał dzięki twórcom biblioteki OpenCV. Uważany jest następcę

opatentowanych SIFT i SURF. Twórcy twierdzą, że jest najlepszym i najbardziej odpornym

bezpłatnym algorytmem.

Detekcja przebiega dzięki FAST, potem wybor N najlepszych punktów dokonuje się

poprzez Harrisa. Następnie dodaje się do nich orientacę, której nie daje algorytm FAST.

Do detekcji używa się algorytmu BRIEF, ale nie jest on wystarczająco skuteczny jeśli

chodzi o obroty. Dlatego też detekcja jest nazywana wysterowanym BRIEF. Sterowanie

następuje poprzez orientację punktów charakterystycznych. Dla każdego z testów binarych

o współrzędnych definiujemy macież o wymiarach .

Załóżmy, że dana jest macierz , która zawiera koordynaty pikseli. Przy

wykorzystaniu orientacji obliczonej jako , wyznaczana jest macierz rotacji. Zostaje ona

zaaplikowana wobec macierzy . W efekcie powstaje wysterowana macierz .

Page 34: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

34

ORB dyskretyzuje kąt obrotu do (12 stopni) i konstruuje tablicę przykładowych

wzorców w oparciu o BRIEF. Jeśli orientacja punktu charakterystycznego jest stała wzdłuż

widoków, właściwa macierz zostanie wykorzystana do wyliczenia deskryptora.

2.9 SURF

Detektor

Detektor SURF jest znany jako bardziej wydajny zamiennik algorytmu SIFT. Jego

detektor jest oparty o Hessjan, a deskryptor o położenie i rozmieszczenie punktów.

Detektor jest oparty o macierz będącą Hessjanem zdefiniowaną jako:

gdzie L jest konwolucją z Gaussowskiej drugiej pochodnej obliczonej dla obrazu. W

implementacji jądro przekształcenia Gaussowskiego jest zastępowane przez prostszy filtr.

Następnie jest interpolowane w skali obrazu i jego przestrzeni, aby posiadało właściwość

niezależności od skali.

Deskryptor

Najpierw punktowi kluczowemu przypisuje się orientację. Następnie dookoła punktu

budowany jest kwadratowy obszar. Potem obszar ten jest rotowany zgodnie z wyznaczoną

orientacją dla punktu.

Region jest podzielony na mniejsze regiony o wymiarach 4x4. Dzięki temu

zachowujemy istotne przestrzenne informacje. Dla każdego z podregionów liczymy cechy dla

przykładowych punktów rozłożonych regularnie w wierzchołkach siatki 5x5. Obliczamy

pionową i poziomą Falkę Haara. Dzięki temu mamy wyliczone dx oraz dy. Następnie

sumujemy je po każdym z podregionów i budujemy pierwszy zbiór cech (wektor). Wartości

bezwzględne |dx| oraz |dy| są również obliczone i razem z sumą wektora tworzą

czterowymiarowy deskryptor. Dla każdego z podregionów o rozmiarze 4x4 mamy dzięki

temu wektor cech o długości 64. Te wymiary to suma dx, suma modułów dx, suma dy oraz

suma modułów dy.

Page 35: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

35

Rysunek 11: Sposób budowy wetkora dla każdego z podobszarów w podziale na wymiary

Algorytm ten powstał w celu przyspieszenia algorytmu SIFT. Jest mniej odporny i

mniej dokładny, jednak znacznie szybszy. W celu znalezienia skali przestrzennej nie korzysta

z aproksymacji Lapazjanu, filtrów Gaussowskich ani różnicy Gaussowskiej.

Lyy oraz Lxy obliczane są w następujący sposób:

Rysunek 12: Sposób olbiczania wymiarów

W celu przypisania punktom orientacji SURF używa falki Haara w dwóch kierunkach

- poziomym i pionowym. Docelowa główna orientacja jest obliczana na podstawie sumy

wszystkich odpowiedzi falowych w oknie o kącie rozwarcia 60 stopni. Ciekawe jest, że

odpowiedź falowa może być bardzo szybko wyznaczona dla obrazu niezależnie od skali. Dla

wielu aplikacji niezależność od obrotów nie jest wymagana, a wówczas długotrwały proces

można pominąć i dodatkowo przyspieszyć algorytm SURF.

Page 36: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

36

Rysunek 13: Sposób przypisywania orientacji poszczególnym punktom

Sąsiedztwo o rozmiarze 20 x 20 wokół punktu jest dzielone na okna o rozmiarze 4x4.

Obliczony wektor cech składa się z . Jego rozmiar to 64.

W celu większej dokładności działania algorytmu SURF można rozbudować wektor

do rozmiaru 128. Robi się to poprzez liczenie osobno sum i dla i .

Analogicznie sumy i są liczone osobno w zależności od znaku . Dzieki temu

podwaja się liczba cech punktu. Jest to zalecana, a zarazem niekosztowna pod względem

obliczeniowym opcja.

Następnym ważnym usprawnieniem wobec SIFT jest użycie znaku Laplasjanu (tutaj

jest to ślad Hessjanu) dla punktu kluczowego. Należy zauważyć, że nie wymaga to

dodatkowych operacji, ponieważ jest liczone w trakcie detekcji. Ten znak odróżnia jasne

obszary od ciemnego tła. W trakcie łączenia punktów odpowiadających porównujemy tylko te

punkty charakterystyczne, które mają ten sam typ kontrastu. Pozwala to przyspieszyć proces

łączenia bez ponoszenia kosztów ubocznych. Widać to poniżej.

Rysunek 14: Wpływ znaku Laplasjanu na możliwość złączania cech obrazu

SURF dodaje wiele cech usprawniających algorytm. Badania pokazały, że jest około 3

razy szybszy niż SIFT, a jakość uzyskanych wyników była o około 10% niższa. SURF jest

Page 37: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

37

algorytmem skutecznym przy przetwarzaniu obrazow rozmytych i podlegających rotacji,

natomiast nie powinien być stosowany do analizy zmiany punktu widzenia lub oświetlenia.

Patrząc na ten obraz można zobaczyć, że SURF jest też detektorem obszarowym.

Rysunek 15: Promienie z zaznaczonym kierunkiem dowodzą, że SURF jest detektorem obszarowym

2.10 STAR

Detektor STAR wywodzi się z detektora CenSurE (Center Surrounded Extrema).

Podczas gdy detektor CenSurE używał wielokątów takich jak kwadraty, sześciokąty i

ośmiokąty aproksymujące okręgi, STAR aproksymuje okręg poprzez 2 nakładające się na

siebie kwadraty przesunięte o 45 stopni. Krawędzie tych kwadratów posiadają wagi

przeciwnych znaków. Algorytm działa tylko w skali szarości.

Na obraz nakłada się najpierw wspomniane kwadraty. Następnie wykonuje się

aproksymację LoG poprzez Lapasjan lub Gaussa. Dzięki temu definiujemy region wewnątrz i

na zewnątrz. Algorytm działa w oparciu o sąsiedztwo w trzech warstwach opartych o 3

piksele dookoła każdej. Po wykryciu punktów wstępnych wszystkie, które nie spełniają

określonego progu są odrzucane. Następnie punkty są poddane analizie poprzez detektor

Harrisa. Te, których wartość progowa zostanie przekroczona zostają odrzucone.

2.11 BRIEF

BRIEF to deskryptor wagi lekkiej. Jest łatwo implementowany w oparciu o binarne

Stringi. Testy binarne są wykonywane na podstawie algorytmu FERN, który jest najprostszą

wersją Bayesianowskiego klasyfikatora. Deskryptor BRIEF jest nastawiony na szybkość,

przez co idealnie nadaje się dla urządzeń o słabej mocy obliczeniowej. W celu zwiększenia

szybkości rezygnuje się z części odporności zmian skali i rotacji. Jest to jednak wyłącznie

Page 38: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

38

deskryptor. Potrzebna jest też detekcja punktów. Z uwagi na niższą jakość punktów zaleca się

szybką detekcję FAST.

Rysunek 16: Wygląd przykładowych deskryptorów dla algorytmu BRIEF

SIFT używa 128-wymiarowego wektora deskryptorów. Ponieważ wykorzystuje liczby

zmiennoprzecinkowe, można uznać, że jest to 512 bajtów. Podobnie SURF wykorzystuje

minimum 256 bajtów dla wersji zawierającej 64 wymiary. Tworzenie takich deskryptorów dla

tysięcy punktów charakterystycznych jest trudne do wykonania, szczególnie dla urządzeń

mobilnych. Nawet jeśli pamięć obejmie wszystkie dane, proces łączenia punktów będzie

bardzo długi.

Warto zauważyć, nie wszystkie wymiary są niezbędne, aby przeprowadzić

matchowanie. Można je skompresować korzystając z takich metod jak PCA czy LDA. Można

też użyć Hashowania znanego jako LSH (Locality Sensitive Hashing) w celu

przeprowadzenia liczb zmiennoprzecinkowych w binarne tablice.

Binarne tablice są następnie wykorzystane w celu łączenia punktów na podstawie

dystansu Hamminga. Jest to bardzo szybki proces, ponieważ policzenie dystansu polega na

wykonaniu operacji XOR oraz zliczaniu bitów, a wykorzystywane procesory są bardzo

wydajne. Nie rozwiązuje to jednak problemu, że najpierw duży deskryptor musi powstać w

pamięci.

W tym przypadku BRIEF jest innowacyjny. Pomysł polega na znalezienu Stringów

binarnych (ciągów zer i jedynek) bez znajdowania deskryptorów. W tym celu obraz poddaje

się blurowi (wygładzeniu, rozmyciu) i wybiera się zbiór punktów (x,y). Potem porównuje

się je między sobą pewną funkcją, przyjmijmy I(x). Przykładowo nie pierwsza para to i .

Jeżeli , wynikiem jest 1, jeśli nie to 0. Wykonujemy taki test dla

każdego punktu, aby uzyskać -wymiarowy String.

Page 39: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

39

Wartość może wynosić 128, 256 lub 512. OpenCV wspiera te 3 wartości -

reprezentuje je w bajtach, zatem odpowiednio 16, 32 i 64. Zaleca się użycie 256. Po

wyznaczeniu binarnych Stringów można łatwo obliczyć wspomniany dystans Hamminga.

BRIEF osiąga dobre wyniki poza przypadkiem gwałtownego obrotu kamery. Poprzez

gwałtowny obrót rozumie się odchylenie o +/- 15 stopni.

2.12 SIMPLEBLOB

Jest to algorytm, który wydobywa cechy obszarowe z obrazu. Na początku ustala się

zbiór progów od najmniejszego do największego wraz z krokiem. Obraz będzie przetwarzany

z uwzględnieniem tych wartości progowych przesuniętych każdorazowo o wartość krokową.

Następnie znajduje się kontury obrazu i wyznacza się ich środki. Potem grupuje się środki

pod względem ich współrzędnych. Te, które znajdują się blisko siebie, będą stanowiły jeden

obszar. Po uformowaniu grup należy obliczyć ich przybliżony promień oraz rozmiar punktów

kluczowych. Typowo różnicuje się obraz i wyznacza obszary na podstawie zmian w skali

szarości obrazu. Domyślnie wydobywa się poprzez filtrację ciemniejsze obszary w obrazie.

2.13 FREAK

FREAK jest samodzielnym deskryptorem. Stanowi ulepszenie algorytmu BRISK.

FREAK wyznacza 43 ważone średnie Gaussowskie w otoczeniu punktu charakterystycznego.

Warto wspomnieć, że wzorzec powstały poprzez średnie Gaussowskie jest inspirowany

kształtem ludzkiego oka. Piksele są mniej zróżnicowane i bardziej skupione wokół punktu

charakterystycznego. Z tego powodu dystans między nimi jest mniejszy. FREAK korzysta z

kaskady w celu porównywania tych par i wyróżnia 64 najbardziej znaczące bity w celu

przyspieszenia algorytmu matchowania.

Rysunek 17: Porównianie działania algorytmu FREAK z działaniem oka ludzkiego poprzez podobieństwo

Page 40: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

40

Oto kształt pikseli wokół punktu charakterystycznego:

Rysunek 18: Kształt pikseli wokół punktu charakterystycznego

3 Adaptery dodatkowe

Adaptery dodatkowe uzupełniają algorytmy detekcji punktów charakterystycznych.

Adapter klasyczny nie wprowadza żadnych zmian wobec zaprezentowanych

algorytmów.

Adapter GRID dzieli obraz porównywany na siatkę i wykrywa punkty kluczowe w

każdej komórce siatki.

Adapter PYRAMID wprowadza piramidę Gaussowską prezentującą skalę obrazu.

Warto stosować to połączenie z algorytmami detekcji, ktore nie są odporne na zmiany

skali.

Adapter DYNAMIC iteracyjnie wykrywa porcje punktów charakterystycznych dopóki

zadana ich liczba nie zostanie wykryta.

Ekstrakcja algorytmów

Poza wspomnianymi algorytami wykorzystywanymi do opisania punktów i wydobycia

deskryptorów, każdy z nich istnieje w wersji odwróconej.

Opponent type to sposób ekstrakcji deskryptorów polegający na zamianie obrazu RGB

na odwrotną przestrzeń kolorów i jego analizę w tej odwrotnej przestrzeni. Deskryptory są

obliczane dla każdego z trzech kanałów osobono, a potem następuje ich konkatenacja w

jednokolorwy deskryptor.

Matchowanie algorytmów

Najbardziej typowym podejściem jest podejście typu brutalnego. Nie jest ono

skomplikowane. Wybieramy deskryptor opisujący jedną cechę z pierwszego zbioru i

porównujemy go ze wszystkimi cechami znajdującymi się z w drugim zbiorze. Porównanie

odbywa się na zasadzie badania dystansu dzielącego pary cech. Zwracany jest najlepiej

dopasowany, a więc ten, którego dystans był najmniejszy.

Page 41: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

41

BRUTTEFORCE Matcher występuje w różnych wersjach. Różnią się one sposobem

wyliczania dystansu.

W wersji typowej, czyli NORM_L2 jest on dobry dla algorytmów SIFT oraz SURF.

W wersji HAMMING jest szczególnie zalecany dla algorytmów operujących na

tablicach (Stringach) binarnych z uwagi na nieskompikowany sposób wyliczania dystansu

(XOR na bitach i ich zliczanie).

W wersji SL2 nie ma specjalnych zastosowań. Jest to eksperymentalna wersja, która

może być zalecana dla algorytmu ORB.

Dodatkowo w trakcie łączenia cech w pary można wykonać łączenie obustronne.

Zwaca ono dokładniejsze wyniki. Jest stosowane i zalecane przy wyznaczaniu homografii.

Polega na tym, że cecha jest uznana za dopasowaną, jeżeli jest dopasowana w zbiorze A w B

oraz w zbiorze B w A (relacja dwustronna).

Warto wspomnieć o programistycznej strukturze służącej do badania znalezionych

dopasowań i odpowiedników.

Algorytm zwraca listę punktów dopasowanych, czyli tak zwanych DMatch. Każdy z nich

zawiera:

DMatch.distance – im mniejszy dystans pomiędzy deskryptorami, tym lepiej.

DMatch.trainIdx - indeks deskryptora w obrazie analizowanym

DMatch.queryIdx - indeks deskryptora w obrazie wzorcowym (z nim się porównuje)

DMatch.imgIdx - indeks obrazu porównywanego

Flanbased

Istnieje jeszcze algorytm FLANNBASED. Jednak jest on oparty na licencji i jest

płatny, aczkolwiek znane są reguły jego działania. Nieskorzystanie z tego algorytmu nie

wpłynie na wyniki niniejszej pracy. Jest bowiem on zoptymalizowany do przetwarzania

ogromnych obrazów i paronam. Polega na przeszukiwaniu najbliższych sąsiedztw i jest pod

tym względem zoptymalizowany.

Struktura danych wykorzystana w tym algorytmie jest typowa dla problemu

sąsiedztwa KD-tree (drzewo wielowymiarowe, czy też k-wymiarowe).

Nie jest tutaj badany każdy deskryptor z każdym jak w algorytmie brutalnym, lecz z

góry określona liczba sąsiedztw o coraz mniejszym promieniu.

LMeDS - Least-Median robust method

Algorytm ten jest wykorzystywany w celu znalezienia odpowiedniej homografii

pomiędzy dwiema płaszczyznami.

LMeDS bierze podzbiór punktów i szuka dla niego rozwiązania. Następnie wybiera z

listy pozostałych punktów tylko te, które są spójne z rozwiązaniem już odkrytym. Operacja ta

jest wykonywana wielokrotnie dopóki nie zostanie odrzuconych jak najmniej punktów w

rozrachunku końcowym (można zadać limit lub procent takich punktów).

Szukanie homografii

Page 42: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

42

Homografia polega na znalezieniu odpowiedniej transformacji pomiędzy dwoma

płaszczyznami. Do jej wyszukania można użyć algorytmu brutalnego, czyli każdej pary

złączanych ze sobą punktów, LMeDS lub RANSAC z zadanym progiem dyskwalifikacji.

Ciekawy jest fakt, że LMeDS działa poprawnie i jest zalecany, o ile obraz nie zawiera

zbyt wielu błędnych połączeń. Granica błędu to około 50%.

Przy szukaniu homografii należy znaleźć transformację perspektywiczną pomiędzy

dwiema płaszczyznami.

Ważnym jest, aby błąd tego obliczenia był zminimalizowany:

Metoda każdy z każdym wykorzystuje metodę najmniejszych kwadratów, więc jest bardzo

podatna na grube błędy. Pod tym względem bardziej odpornymi metodami są LMeDS oraz

RANSAC. RANSAC jest metodą uniwersalną. Można go dostroić parametrycznie niezależnie

od liczby błędów grubych. Jest to jednak obszar znacznie wykraczący poza tematykę pracę.

Przy wyznaczaniu homografii znajduje się macierze wewnętrzną i zewnętrzną. Macierz

homografii jest określona poprzez skalę. Należy ją poddać normalizacji tak, aby: .

4 Więcej o losowości, czyli RANSAC

Algorytm RANSAC (RANdom SAmple Consensus) pozwala na iteracyjne

modelowanie płaszczyzn w zbiorze danych zawierających znaczną (nawet przekraczającą

połowę obserwacji) liczbę błędów grubych, czyli punktów nienależących do modelowanej

powierzchni. Metoda rozwinięta została początkowo dla celów widzenia komputerowego.

Jest to metoda iteracyjnego dopasowywania modelu do zbioru danych, który posiada

wiele skrajnych wartości. Podstawowym założeniem RANSAC jest obecność w zbiorze

zarówno danych, które pasują do modelu (inliers) jak i tych, których wartości odbiegają od

niego (outliers). Źródłem danych, które nie pasują do modelu są zwykle błędne pomiary lub

szumy i zakłócenia. Danymi wejściowymi algorytmu są zbiór danych oraz model

parametryczny, który będzie dopasowywany do tego zbioru. Dodatkowymi informacjami

mogą być:

minimalna liczba punktów wymagana do dopasowania modelu,

minimalna liczba iteracji,

próg określający zakres, w którym znajdują się dane pasujące do modelu,

rozmiar zbioru, który umożliwia zakończenie procesu iteracji.

Zaletą metody jest jej odporność. Punkty stanowiące przypadkowe odbicia od

powierzchni oraz punkty położone w bliskim sąsiedztwie estymowanej płaszczyzny, lecz

Page 43: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

43

należące do innego obiektu, nie ulegają błędnej klasyfikacji. Działanie algorytmu obejmuje

dwa podstawowe, iteracyjnie powtarzane kroki: hipotezę oraz test.

Z etapem hipotezy związane jest pojęcie najmniejszego zbioru. To najmniejsza liczba

k danych niezbędnych do jednoznacznego zdefiniowania założonego modelu

geometrycznego. W przypadku ekstrakcji płaszczyzn minimalny zbiór składa się z trzech

punktów. Realizacja algorytmu rozpoczyna się od wylosowania wstępnie ustalonej liczby

minimalnych zbiorów, która jest sukcesywnie modyfikowana.

Następnie dla każdego ze zbiorów obliczane są parametry modelu (w rozpatrywanym

przypadku modelem jest płaszczyzna przechodząca przez trzy punkty). Zidentyfikowany

model stanowi hipotezę, która podlega sprawdzeniu w następnym kroku – teście. Etap testu

wymaga ustalenia wartości parametru md, określającego maksymalną odległość testowanego

punktu od hipotetycznego modelu. Jeżeli punkt spełnia kryterium odległości, dodany zostaje

do tzw. zbioru CS (Consensus Set). W tej pracy zbiór składa się z danych, które uznane

zostały za należące do rozpatrywanej płaszczyzny.

Po wykonaniu testu dla wszystkich danych, wybierany jest kolejny zbiór minimalny.

W oparciu o niego powtórzona zostaje sekwencja dwóch kroków – hipotezy i testu. W

przypadku znalezienia zbioru CS zawierającego większą liczbę punktów niż poprzedni,

dotychczasowy zbiór zastąpiony zostaje liczniejszym. Modyfikacji ulega liczba próbek

zbiorów minimalnych.

Algorytm RANSAC sprowadza się do wykonania następującej procedury:

1. Model jest tworzony na podstawie ustalonej liczby obiektów wybranych za pomocą

losowania.

2. Pozostałe obiekty zbioru porównywane są z utworzonym modelem. Jeśli obiekt pasuje

do estymowanego modelu, jest również uznawany za należący do modelu.

3. Estymowany model jest uznawany za poprawny, jeśli ustalona minimalna liczba

obiektów została sklasyfikowana jako poprawnie określająca model.

4. Jeśli model uznano za poprawny, zostaje zapisany w pamięci wraz ze wszystkimi

obiektami zaklasyfikowanymi wcześniej jako poprawnie określające.

5. W ostatnim kroku wyliczony zostaje średni błąd wybranych obiektów dla aktualnego

modelu.

Procedura ta jest powtarzana określoną przez projektanta liczbę razy. W każdej z

iteracji porównujemy otrzymany model z najlepszym ze wszystkich modeli wcześniej

uzyskanych. Jeśli średni błąd dla nowego modelu jest mniejszy niż dla najlepszego z

dotychczas utworzonych, aktualny model staje się modelem najlepszym.

Za pomocą algorytmu RANSAC można wykryć proste linie wchodzące w skład

przetwarzanego obrazu. Aby tego dokonać, stosuje się wersję algorytmu dostosowaną do tego

zadania. Model jest tworzony na podstawie dwóch losowo wybranych pikseli leżących na

krawędziach. Kierunki ich gradientu muszą być zgodne (projektant algorytmu definiuje

maksymalną różnicę ich orientacji). Jeśli kierunki nie są zgodne, losowanie zostaje

powtórzone. Wybrane piksele stanowią potencjalne końce prostej linii.

Proces porównywania pozostałych pikseli z modelem składa się z dwóch etapów. W

pierwszym porównywany jest kierunek wybranego piksela. Jeśli jest on zgodny z modelem,

sprawdzone zostaje, czy leży na linii wyznaczonej przez model. Algorytm kończy działanie

po przekroczeniu zadanej liczby iteracji lub w przypadku, kiedy wszystkie piksele obrazu leżą

na jednej linii. Takie ułożenie pikseli jest wysoce prawdopodobne, jeśli operujemy na

fragmencie obrazu. W przypadku dużej ilości danych obraz powinien zostać podzielony w

celu optymalizacji działania algorytmu.

Page 44: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

44

5 Przegląd narzędzi W celu wykonania części praktyczej powyższej pracy dokonano przeglądu dostępnych

narzędzi programistycznych. Okazało się, że prezentowany poniżej zbiór jest wystaczający i

zapewnia wsparcie przy tworzeniu oprogramowania dotyczącego przetwarzania obrazów na

potrzeby systemu OS Android.

Wykorzystane w pracy narzędzia to:

OpenCV - biblioteka open source, która umożliwia testowanie algorytmów na

urządzeniach mobilnych z OS Android,

Android SDK - zbiór narzędzi pozwalających na implementacje rozwiązań na

platformę mobilną OS Android,

OpenCV Manager - zbiór narzędzi optymalizacyjnych pozwalających istotnie

przyspieszyć aplikację mobilną oraz oszczędzić miejsce na dysku smartfona,

OpenGL – biblioteka służąca do wyrysowania wielokolorowego sześcianu i

zobrazowania, że wykryto zadany obraz w aplikacji prezentującej rzeczywistość

rozszerzoną.

6 Opis Aplikacji

W ramach praktycznej części tej pracy powstały dwie aplikacje użytkowe. Pierwsza

opisana poniżej jest samodzielną implementacją prostego modelu wykrywania znacznika oraz

generowania rozszerzonej rzeczywistości. Druga aplikacja powstała po to, aby testować pod

różnymi aspektami opisywane algorytmy detekcji cech obrazów i porównywać ich działanie.

6.1 Aplikacja pierwsza - własna implementacja wykrywania znacznika i generowania

AR

Aplikacja pierwsza powstała, by zaprezentować praktyczne wykorzystania biblioteki

OpenCV w celu wygenerowania AR oraz aby pokazać możliwości jej łatwej integracji z

systemem OS Android i jego natywnymi funkcjami.

Dzięki API systemu Android można (o ile urządzenie na to pozwala) dokonywać

swobodnych przełączeń się między przednią i tylną kamerą. Jest to przykład łatwego

dodawania dostępnych opcji do aplikacji. Zmiany kamery dokonuje się za pomocą menu.

Drugim przyciskiem menu jest opcja pozwalająca na nałożenie filtra Sobela na kamerę.

Dzięki opisanym dwóm właściwościom możliwe jest nałożenie filtra na twarz użytkownika

(poprzez przełączenie się na kamerę wewnętrzną). Uzyskujemy w ten sposób ciekawy efekt.

Warto nadmienić, że aby aplikacja na system OS Android mogła korzystać z kamery i

zapisywać zdjęcia w pamięci urządzenia, należy wprowadzić poniższe dostępy w pliku w

formacie xml o nazwie AndroidManifest:

<uses-permission android:name="android.permission.CAMERA" />

<uses-permission android:name=

"android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-feature android:name="android.hardware.camera" />

<uses-feature android:name="android.hardware.camera.autofocus"

android:required="false" />

<uses-feature android:name="android.hardware.camera.flash"

Page 45: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

45

android:required="false" />

Należy zauważyć, że wiele metod systemowych na OS Android, takich jak

startActivity(), działa asynchronicznie. W trakcie pracy użytkownik ma opcję równoczesnego

korzystania z interfejsu. Dzięki temu może zainicjować zadanie niezwiązane z już

wykonywanymi. Efekt polega na tym, że gdy użytkownik szybko wciśnie wielokrotnie

przycisk, może to spowodować wielokrotne wykonanie tego samego zadania, co jest

niekorzystne. Rozwiązaniem jest blokowanie wciśniętego przycisku do momentu, gdy

obsługujący go wątek główny nie powróci do stanu bezczynności. Schemat ten pozwala

zrozumieć cykl życia aplikacji na OS Android. Dobrze widać to na poniższym rysunku.

W systemie OS Android występuje tzw. aktywność (ang. activity). Jest to element

systemu Android zbliżony do ciężkiego wątku. W momencie, gdy nowa aktywność startuje,

jest umieszczana na górze stosu żyjących aktywności. Starsze aktywności znajdują się zawsze

poniżej obecnie żyjącej i nie mogą wrócić na stos dopóki nie odda im ona kontroli.

Aktywność cechują cztery najważniejsze stany:

Jeżeli aktywność jest na pierwszym planie ekranu (znajduje się na górze stosu),

mówimy, że jest aktywna lub że żyje.

Jeżeli aktywność utraciła fokus, ale cały czas jest widoczna, mówimy, że została

spauzowana. Spauzowana aktywność to aktywność żyjąca. System może zniszczyć

taką aktywność tylko wtedy, gdy krytycznie brakuje mu zasobów.

Jeżeli aktywność jest całkowicie niewidoczna i zastąpiła ją inna, to mówimy, że

aktywność jest zatrzymana. Cały czas przechowuje swój stan i dane, ale nie jest już

widoczna, a system może ją zniszczyć pod warunkiem, że potrzebuje zajmowanych

przez nią zasobów.

Jeżeli aktywność jest spauzowana lub zatrzymana, system może ją zakończyć albo

zniszczyć związany z nią proces. Jeżeli zostanie ona wyświetlona użytkownikowi,

musi być zrestartowana i przywrócić swój poprzedni stan.

Poniższy diagram obrazuje cykl życia aktywności. Kolorowe owale to główne stany,

w których może znajdować się aktywność. Jak już wspomniano, aktywność to bardzo ciężki

odpowiednik wątku. Z tego powodu należy oszczędnie jej używać. Nie jest korzystnie

programować na zasadzie jedna klasa = jedna aktywność, bowiem koszt przełączenia między

aktywnościami jest bardzo wysoki, a jego częste zmiany wpływają niekorzystnie na

stabilność aplikacji.

Page 46: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

46

Rysunek 19: Diagram stanów aktywności

Jak widać na powyższym rysunku najważniejsze działania można sprowadzić do trzech pętli:

Czas życia trwa pomiędzy wywołaniem metody onCreate() do zawołania metody

onDestroy(). W metodzie onCreate() należy zainicjować wszystkie zmienne potrzebne

do działania, natomiast w metodzie onDestroy() należy zwolnić wszystkie zajęte

zasoby, na przykład zatrzymać wszystkie wątki czy połączenia internetowe.

Widoczna część życia aktywności ma miejsce pomiędzy wywołaniem metody

onStart() aż do metody onStop(). W tym okresie użytkownik widzi pierwszy plan

aktywności oraz przechowuje zasoby niezbędne do wyświetlenia GUI.

Gdy ma miejsce pierwszoplanowa aktywność, czas życia trwa od metody onResume()

aż do metody onPause(). W tym czasie aktywność jest na górze stosu aktywności i

użytkownik może odbywać z nią interakcję. Aktywność często może zmieniać stany

pomiędzy wznowionym a zapauzowanym, np. gdy wygasi się ekran telefonu.

Wspomniane dwie aktywności powinny być lekkie i nie wykonywać kosztownych

obliczeń, gdyż są często wołane.

Następną praktyczną możliwością wynikającą z omawianej aplikacji jest zrobienie

zdjęcia oraz jego edycja przy użyciu zainstalowanych aplikacji edycyjnych takich jak np.

(Instagram), a potem możliwość wysłania tego zdjęcia poprzez E-mail czy Bluetooth.

Page 47: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

47

Operacje te wykonuje się za pomocą Intentów Androidowych. Ich użycie jest

nieskomplikowane

Androidowe intenty służą do wystartowania nowej aktywności. Precyzyjnie rzecz

ujmując, powodują, że do życia powołana zostaje nowa aktywność (często systemowa, np.

dzwonienie, e-mail, galeria) i jest umieszczona na górze stosu, przez co staje się widoczna dla

uzytkownika. Jeśli OS Android ma do czynienia z typem aktywności, który można wykonać

na wiele sposobów (np. aby przejrzeć stronę internetową, można użyć jednej z kilku

przeglądarek), zawsze wyświetla okno dialogowe z możliwymi opcjami do wyboru lub

informuje o braku wbudowanych rozwiązań.

Z typowo graficznych cech tej aplikacji należy omówić Filtry i Efekty, które można

nakładać na obraz. W celu szybszego i poprawnego liczenia przekształceń wykorzystaliśmy

tutaj bibliotekę Apache Commons Math, która umożliwia liczenie zaawansowanych funkcji

matematycznych.

Jedną z dostępnych operacji jest miksowanie kanałów kolorów. Jak już wspomniano,

OpenCV przechowuje obrazy jako typ danych macierzowych o nazwie Mat, który jest

dwuwymiarową tablicą. Wiersze i kolumny odpowiadają x oraz y we współrzędnych obrazu.

Dane przechowywane w tych wierszach i kolumnach to wartości związane z pikselami.

Wartość piksela może być reprezentowana jako pojedyncza liczba (wówczas jest to obraz w

skali szarości) lub jak kilka liczb (tak dzieje się w przypadku obrazka kolorowego).

Każda z tych liczb przynależy do pewnego kanału. Obraz w skali szarości może

posiadać tylko jeden kanał (jasność), podczas gdy obrazy kolorowe mogą mieć do czterech

kanałów, na przykład czerwony, zielony, niebieski oraz kanał przezroczystości (znany jako

format RGBA). Innymi znanymi formatami są RGB (bez przezroczystości), HSV oraz

L*a*B. Skupimny się na RGB i RGBA, ponieważ są one wspierane przez OpenCV.

Biblioteka daje możliwość konwertowania pomiedzy formatami kolorów.

Rysunek 20: Możliwość przesyłania zdjęć w łatwy sposób za pomocą API Andorid SDK

Page 48: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

48

Jeżeli odseparujemy kanały z obrazu w formacie RGB, możemy użyc trzech różnych

macierzy w skali szarosci, gdzie każda z nich zawiera osobny kanał. Następnie poprzez

operacje na jednokanałowych macierzach możemy złączyć je w jedną macierz reprezentującą

inny niż oryginalnie obraz w formacie RGB. Wynikowy obraz będzie wyglądał, jakby używał

innej palety kolorów niż oryginał. Taka technika znana jest jako mieszanie kanałow.

Dla obrazu RGB definiujemy kanały mieszające jako:

dst.b = funcB(src.b, src.g, src.r)

dst.g = funcG(src.b, src.g, src.r)

dst.r = funcR(src.b, src.g, src.r)

Każdy kanał w obrazie docelowm będzie powiązany z funkcją określającą wszystkie kanały

obrazu bazowego.

Warto przedstawić klasyczny zestaw:

dst.b = 0.5 * src.r + 0.5 * src.b

Powoduje to, że regiony obrazu, które w oryginale były bliskie niebieskiemu kolorowi, staną

się czerwone lub purpurowe.

Rysunek 21: Efekt działania mieszania kanałów wg wzoru dst.b = 0.5 * src.r + 0.5 * src.b

Programując w OpenCV należy pamiętać, że bezpiecznie jest do operacji bazujących

na macierzach przekazywać zawsze jako obraz docelowy i wynikowy tę samą macierz. Traci

się wtedy macierz docelową, gdyż staje się ona wynikową. Jednak jest to sposób szybszy,

niepowodujący wycieków pamięci oraz niebezpieczeństwa związanego ze spowolnieniem

aplikacji w czasie eksploatowania.

Page 49: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

49

6.1.1 Zmiany krawędzi kolorów w obrazie i ich miksowanie

Patrząc na obraz widzimy w jak subtelny sposob zmieniają się barwy pomiedzy jego

regionami. Przykładowo w słoneczny dzień cienie na dworze są niebieskie, ponieważ

zabarwia je światło odbite od niebieskiego nieba. Tymczasem rzeczy oświetlone promieniami

Słońca (przeswietlone) mają lekko żółtą barwę. Widząc na fotografii zabarwione na niebiesko

cienie i żólte obiekty, mamy wrażenie ciepła. Taki efekt może być naturalny lub można go

uzyskać za pomoca filtra. Byłby to filtr krzywizn.

Filtry krzywizn są parametryzowane poprzez zbiory punktow kontrolnych.

Przykładowo taki zbiór punktów może istnieć dla kazdego kanalu. Kazdy punkt kontrolny jest

parą numerów reprezentujących wartości wejściowe i wyjściowe dla danego kanalu. Dla

przykladu para (128, 180) oznacza ze wartośc 128 danego koloru zostala rozjaśniona do

wartosci 180. Wartości pośrednie są interpolowane wzdluz krzywej (stad też nazwa filtry

krzywizn).

Dzięki tym własnościom filtry krzywizn idealnie slużą do stworzania wrażenia

subtelnych i naturalnie wyglądających efektów na zdjeciach. W pseudokodzie taki filtr dla

RGB wygląda następująco:

dst.b = funcB(src.b) gdzie funcB interpoluje punkty kanalu B

dst.g = funcG(src.g) gdzie funcG interpoluje punkty kanalu G

dst.r = funcR(src.r) gdzie funcR interpoluje punkty kanalu R

Aby powstaly w wyniku nakładania filtrów obraz wygladał naturalnie należy

przestrzegać określonych zasad.

Każdy zbiór punktów kontrolnych musi zawierać punkty (0, 0) i (255, 255). Dzięki

temu czarne pozostaje czarne, a białe nadal jest białe. Obraz unika niekorzystnego efektu

prześwietlenia i przejaskrawienia barwy.

Wraz ze wzrostem wartości wejściowych, wartości wyjściowe rownież rosną, co

znaczy, że jest to funkcja monotonicznie rosnąca. Dzięki temu cienie pozostaną cieniami,

prześwietlony fragment będzie nadal prześwietlony, a obaz nie będzie zbyt kontrastowy.

Niestety samo OpenCV nie daje mozliwosci interpolacji funkcji krzywizn, dlatego

wykorzystano bibliotekę Apache Commons Math, która oferuje taką opcję. Warto pamiętać,

że funkcje interpolujące są kosztowne obliczeniowo. Nie chcemy ich uruchamiać dla

wszystkich kanałów, pikseli i klatek. Ponadto nie jest to konieczne. Istnieje tylko 256

wartości wejściowych dla kanału, można zatem obliczyć wszystkie wartosci wyjściowe i

zapamiętac je w tablicy. Jest to sposób optymalizacji tego procesu.

Następnie przedstawimy algorytm Porta Kodak, ktorym zasłyneła firma fotograficzna

Kodak w czasach wywoływania zdjec z aparatów małoobrazkowych. Wartości dobrane do

tablic są zaczerpnięte właśnie z tego filtra.

public class PortraCurveFilter extends CurveFilter {

public PortraCurveFilter() {

super(

new double[] { 0, 23, 157, 255 }, // vValIn

new double[] { 0, 20, 173, 255 }, // vValOut

new double[] { 0, 69, 213, 255 }, // rValIn

new double[] { 0, 69, 218, 255 }, // rValOut

Page 50: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

50

new double[] { 0, 52, 189, 255 }, // gValIn

new double[] { 0, 47, 196, 255 }, // gValOut

new double[] { 0, 41, 231, 255 }, // bValIn

new double[] { 0, 46, 228, 255 }); // bValOut

}

}

Filtr ten powoduje ogólne rozjasnienie obrazu. Sprawia, że cienie stają się bardziej błękitne i

miękkie oraz że prześwietlenia są bardziej żółte, a przez to cieplejsze. Dzięki temu obraz

wydaje się bardziej słoneczny i czystszy.

Rysunek 22: Efekt działania filtra Porta Kodak

Oto charakterystyczne wartości będące punktami kontrolnymi:

new double[] { 0, 255 }, // vValIn

new double[] { 0, 255 }, // vValOut

new double[] { 0, 59, 202, 255 }, // rValIn

new double[] { 0, 54, 210, 255 }, // rValOut

new double[] { 0, 27, 196, 255 }, // gValIn

new double[] { 0, 21, 207, 255 }, // gValOut

new double[] { 0, 35, 205, 255 }, // bValIn

new double[] { 0, 25, 227, 255 }); // bValOut

Powodują one, że obraz wyjściowy posiada większy kontrast pomiedzy cieniami oraz

przeswietlniami i przez to dąży do koloru niebieskiego. Niebo, woda i cienie są bardziej

wyeksponowane od światła słonecznego. Jest to filtr Fuji Provia, którego firma Fuji używała

do wywoływania widoków w celu lepszego uwidocznienia kolorów. Tymczasem produkt

Kodaka pozwalał lepiej prezentować zdjęcia ukazujące ludzi.

Page 51: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

51

Rysunek 23: Efekt działania filtru Fuji Provia

Filtry krzywizn pozwalają manipulować kolorem i kontrastem. Mają jednak jedną

zasadniczą wadę, a w zasadzie ograniczenie. Mianowicie, jeden piksel obrazu zmienionego

jest zależny tylko od jednego piksela obrazu wejściowego.

Dalej omówimy ciekawsze filtry produkujące obraz w oparciu o sąsiedztwo pikseli

pochodzących z obrazu wejściowego.

6.1.2 Filtry wykorzystujące sąsiedztwo zwane filtami konwolucji (filtry splotu)

Filtry splotu charakteryzuje fakt, iż wartość wynikowana piksela jest średnią ważoną

pikseli sąsiednich. Wagi można umieścić w macierzy zwanej macierzą splotu lub jądrem.

Przykładowa macierz wygląda następująco:

{{ 0, -1, 0},

{-1, 4, -1},

{ 0, -1, 0}}

Centralny element powyższej macierzy jest wagą źródłowego piksela, mającego ten sam

indeks co piksel wynikowy. Pozostałe elementy symbolizują wagi pozostałych pikseli

źródłowych. Rozpatrujemy sąsiedztwo o wymiarze 3x3. Macierz ta jest filtrem, który

znajduje krawędzie. Nazywamy go Laplazjanem. Dla płaskiego sąsiedztwa (o tych samych

kolorach) produkuje on piksel o barwie czarnej. Dla sąsiedztwa o wysokim kontraście (a więc

np. krawędzi) produkuje piksel o barwie białej. Laplazjan charakteryzuje również fakt, że

suma elementów jest równa elementowi centralnemu.

Rozpatrzmy teraz macierz, której element centralny jest o 1 większy niż suma pozostałych.

Page 52: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

52

{{ 0, -1, 0},

{-1, 5, -1},

{ 0, -1, 0}}

Macierz ta jest równoważna zastosowaniu macierzy Laplazjanu, a następnie zsumowaniu jej

wyniku z obrazem oryginalnym. Dzięki temu poza znajdowaniem krawędzi uzyskujemy efekt

wyostrzania krawędzi. W ten sposób krawiędzie stają się jaśniejsze, podczas gdy pozostałe

elementy obrazu pozostają niezmienione. Tego filtru użyjemy w naszej aplikacji.

Rysunek 24: Efekt działania filtra splotu

Ze względów opytmalizacyjnych zaleca się unikanie dużych sąsiedztw, a w

konsekwencji macierzy o większych wymiarach. Graniczną wielkością macierzy jest wymiar

5x5, czyli 25 pikseli obrazu wejściowego produkuje jeden piksel wyjściowy. Przetwarzając

obraz na żywo, system Android nie obsługuje sprawnie przekształceń macierzowych

większych niż 3x3.

W naszej aplikacji krawędzie są pogrubione i przez to ciemniejsze, a reszta obrazu

jaśniejsza. Jest tak dlatego, że posłużyliśmy się metodą negacji bitowej po zastosowaniu filtra

splotu. W ten sposób obraz jest lepiej widoczny, a krawędzie uwypuklone.

Kolejnym kluczowym aspektem aplikacji jest możliwość detekcji obrazu zadanego

(markera) i wyświetlenie jako AR sześcianu rotującego się wraz z ruchami kamery.

Nasza aplikacja może otrzymać jako parametry obrazy źródłowe, które będą

wyszukiwane w scenie. Należy jednak pamiętać, aby obrazy były bogate w punkty kluczowe.

Praca Vincenta van Gogha „Gwiaździsta Noc” stanowi odpowiedni przykład. Jako

przedstawiciel postimpresjonizmu malarz używał dużego kontrastu i ostrych posunięć pędzla,

co zaowocowało dużą liczbą punktów charakterystycznych. Dzięki temu możemy nauczyć

telefon znajdować taki obraz w scenie.

Page 53: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

53

6.1.3 Szukanie i śledzenie obrazu w scenie

Aby znaleźć obraz człowieka, należy odpowiedzieć na pytanie jak dana osoba

wygląda. Dla komputera proces ten jest równie istotny jak dla człowieka. Najpierw należy

porównać obraz poszukiwany z obrazem dostarczonym. W tym celu używa się obrazu

referencyjnego, czyli tego, którego szukamy. Obraz ten będzie porównywany z kolejnymi

klatkami z kamery. Odnalezienie go w przestrzenii jest równoważne ze znalezieniem jego

pozycji w 3D. W finalnym obrazie 2D możemy obrysować znaleziony obraz liniami

równoległymi. Mając na uwadze zniekształcenia, otrzymamy równoległobok

obrysowywujący szukany obraz w 3D.

Istnieje kilka klasycznych metod szukania obrazu w scenie. Typowy algorytm uogólniony,

składający się z czterech faz, został przedstawiony ponizej:

1. Znajdź punkty charakterystyczne zarówno w obrazie szukanym, jak i porównywanym.

2. Znajdź deskryptory dla wszystkich znalezionych zbiorów punktów kluczowych.

Deskryptor to wektor danych opisujących punkt kluczowy. Nie każdy punkt kluczowy

daje się opisać, więc zawsze uzyskamy mniej deskryptorów niż punktów kluczowych.

3. Znajdź odpowiadające sobie punkty na obrazach. W tym celu korzystaj ze zbiorów

deskryptorów. Najcześciej oznacza to znalezienie punktów o pewnych cechach

dotyczących ich odległości w wielowymiarowych przestrzeniach.

4. Znajdź homografię pomiędzy obrazem referencyjnym a analizowanym. Homografia to

opis transformacji 3D niezbędnej do połączenia dwóch prezentowanych obrazów 2D

w celu nałożenia ich na siebie. Oblicza się ją na podstawie połączonych

(zmatchowanych) deskryptorów. Poprzez zastosowanie homografii do prostokąta

można uzyskać obrys szukanego obrazu.

W celu przeprowadzenia i wykonania tych operacji użyliśmy następujących algorytmów:

detektora STAR - bardzo dokładny, dostarcza wyselekcjonowane punkty kluczowe,

desktryptora FREAK,

matchera BRUTEFORCE HAMMING.

Powyższa kombinacja jest dostatecznie szybka, a jednocześnie odporna na zmiany obrazu.

Widać to w momencie obracania kamerą telefonu w pobliżu znalezionego obrazu. Nie jest on

szybko gubiony, pozostaje cały czas wykryty mimo zmian w scenie. Cechami

determinującymi dobór algorytmów jest ich niezależność od skali oraz rotacji. Dzięki temu

obraz może być szukany przy zastosowaniu różnych kątów oraz perspektyw. Ponadto STAR,

FREAK I BRUTTFORCE HAMMING nie należą do grupy algorytmów opatentowanych,

zatem są bezpłatne i można używać ich nawet w komerycyjnch aplikacjach.

W celu znalezienia homografii niezbędne są najlepsze możliwe złączenia punktów

kluczowych. Inny słowy, minimalizujemy dystans Hamminga. W celu wyznaczenia

homografii wystarczają 4 złączone (zmatchowane) punkty o bardzo wysokiej jakości. W tym

celu będziemy szukać wierzchołków obrazu. Posłużymy się opisanymi poniżej przypadkami.

1. Jeżeli wszystkie z punktów złączeniowych mają dużą wartość dystansu Hamminga,

zakładamy, że w danej scenie nie występuje szukany obraz. W tym przypadku

Page 54: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

54

czyścimy listę punktów, które próbujemy dopasować jako wierzchołki, gdyż

najprawdopodobniej jest ona błędna.

2. Jeżeli złączenia (matche) są częściowo poprawne, zakładamy, że szukany obraz

stanowi fragment sceny. Wówczas zachowujemy je na liście potencjalnych

wierzchołków w celu stabilizacji estymat.

3. Jeżeli matche są poprawne w liczbie co najmniej czterech, znajdujemy homografię w

oparciu o 4 najlepsze punkty i na jej podstawie wyznaczamy wierzchołki w obrazie.

Przanalizujemy teraz pewną hipotetyczną sytuację. Wybieramy powszechnie znane

zdjęcie. Wiemy gdzie je wykonano, a chcemy ustalić jak zostało zrobione. W tym celu

musimy udać się w miejsce jego powstania, a następnie określić gdzie umiejscowiono aparat

oraz pod jakim kątem wykonano zdjęcie. Jeżeli nam się to uda, wiemy jakiej długości

ogniskowej użyto. Bez tej informacji idealnie odwzorowanie zdjęcia nie jest możliwe.

Podobny problem napotykamy w trakcie szukania obrazu w scenie. Aby go odnaleźć, trzeba

ustalić, jakie są horyzontalne i wertykalne pola widzenia kamery oraz jakie są wyrażone w

pikselach rozdzielczości w obu kierunkach.

Analizując parametry związane z kamerą urządzeń mobilnych, nie wolno zapomnieć o

konieczności zapamiętania flagi. Innymi słowy, należy ustalić czy macierze projekcji kamery

są brudne (nieaktualne) czy nie. Jeśli tak, należy je zaktualizować, a są to kosztowne operacje.

Ponadto trzeba odwołać się do klasycznego modelu kamery. Konieczna jest znajomość tzw.

płaszczyzny obcinanej bliskiej i płaszczyzny obcinananej dalekiej. Trzeba wiedzieć, że obraz

nie będzie widoczny ani bliżej, ani dalej niż dwie wspomniane płaszczyzny (zostanie do nich

ucięty jak na rysunku poniżej).

Rysunek 25: Szukanie pozy kamery zamiast homografii, czyli trackowanie 3D.

Page 55: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

55

Chcemy ustalić położenie kamery w świecie 3D i znaleźć na tej pozie obraz

trackowany. W celu szukania pozy w 3D zamiast klasycznej homografii trzeba operować na

wszystkich dotychczasowych danych dotyczących punktów charakterystycznych i kamery.

Należy podkreślić, że konieczne jest też zastosowanie dodatkowych schematów.

Jeśli chcemy pobrać macierz projekcji kamery, a nie znaleźliśmy szukanego celu,

trzeba uznać że nie mamy danych do jej zwrócenia z funkcji. Ponadto szukamy punktów, ich

deskryptorów i złączeń (matchy). Nie dążymy już do znalezienia homografii, lecz do

właściwej pozy w 3D.

Widać tu różnice w implementacji. Po pierwsze, rozszerzamy wymiar punktów

kluczowych do 3D, dodając wartość 0 dla zmiennej z. Następnie, tak jak poprzednio,

szukamy pozycji celu oraz obrotu kamery na podstawie złączonych punktów kluczowych.

Należy pamiętać, że w OpenCV oraz w OpenGL kierunki osi y oraz z są odwrócone i trzeba

pomnożyć uzyskane wyniki przez -1.

Efektem opisanych powyżej operacji jest odnalezienie macierzy obrotu i translacji.

Dzięki niej możemy wyrysować w OpenGL sześcian na znalezionym obrazie. Dokonujemy

tego na podstawie pozy kamery. Wyznaczamy ją w podobny sposób jak niegdyś homografię,

tylko w 3D, a nie w 2D.

Jeżeli obraz został znaleziony, wyrysujemy na nim kolorwy sześcian. Należy

zauważyć, że mały, więc nie obniża znacząco przetwarzanej liczby klatek na sekundę. Jeżeli

obraz nie został znaleziony, w lewym górnym rogu kamery wyrysujemy obraz szukany w

scenie. W ten sposób można zorientować się czy uzyskaliśmy zadowalające rezultaty.

Rysunek 26: Szukanie wzorcowego obrazu w scenie w czasie rzeczywistym

Pozostaje pytanie w jaki sposób można wrysować sześcian w scenę, a w efekcie jak

można zbudować własną AR. OS Android wspiera OpenGL i umożliwia rysowanie po

widgecie zwanym GLSurfaceView.

Interesują nas dwie cechy OpenGL: stosowanie macierzy do przekształceń 3D na

wierzchołkach sześcianu oraz rysowanie trójkątów na podstawie przekształconych

Page 56: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

56

wierzchołków. Nasz sześcian ma osiem wierzchołków oraz składa się z dwunastu trójkątów

(6 ścian * 2 trójkąty na kwadrat ściany).

Niekorzystne jest, że w OpenGL operacje na kolorach są przeprowadzane na buforach.

Z tego powodu trzeba stosować dużo niskopoziomowych przekształceń oraz alokować z góry

znaną liczbę określającą zasoby pamięci.

Aby skutecznie rysować w OpenGL należy pamiętać, żeby wyczyścić zawsze

poprzednio narysowany obraz poprzez zastąpienie go w pełni niewidocznym kolorem.

Następnie należy sprawdzić czy dostępne są macierze pozy kamery oraz macierz projekcji.

Jeżeli tak to przekazujemy je do OpenGL w celu przesunięcia i wyskalowania widocznego

sześcianu.

Jak widać poniżej sześcian renderuje się na wyszukanym obrazie, przez co tworzy

rozszerzoną rzeczywistość znaną jako AR.

Rysunek 27: Odnaleziony wzorczec charakteryzuje wygenerowany sześcian jako rozszerzona rzeczywistość

6.2 Aplikacja druga - badanie efektywności aglorytmów detekcji

Aplikacja ta powstała, aby przeprowadzić testy badania efektywności różnych

algorytmów detekcji, ekstrakcji oraz łączenia punktów charakterystycznych w celu

wykrywania podobnych obrazów.

Interfejs użytkownika został zaprojektowany tak, aby testowanie czytelne, intuicyjne i

możliwie najwygodniejsze.

Dysponujemy dwoma menu. Pierwsze to pasek z przyciskami widocznymi na górze.

Drugie jest ukryte pod przyciskiem opcji urządzenia i można je wysunąć.

Centralną część okien zajmuje widok "na żywo" z kamery z wrysowanym w prawym

górnym rogu licznikiem klatek na sekundę oraz rozdzielczością przetwarzania obrazu. W

prawym rogu będzie się wyświetlał obrazek wzorca - będzie to migawka zapamiętana jako

wzorzec służący do porównań między obrazami.

Page 57: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

57

Należy podkreślić, że obie aplikacje działają tylko w orientacji poziomej urządzenia

(tzw. landscape), ponieważ obsługa kamery w bibliotece OpenCV nie jest kompatybilna ze

zmianami orientacji w OS Android. W związku z tym aplikacje wspierające obroty urządzeń

są niestabilne. Nie wpływa to znacząco na ich odbiór, ponieważ widok z kamery najczęściej

ogląda się w orientacji poziomej. Problematyczne jest, że OS Android w specyficzny sposób

przeładowuje kontekst aplikacji. W uproszczeniu można przyjąć, że startuje ją na nowo, choć

nie jest to do końca prawda. Wynika to z cyklu życia aplikacji na Androida. Problem ten

wykracza jednak poza tematykę niniejszej pracy.

Przycisk Clear w menu górnym służy do wyczyszczenia listy migawek

porównywanych do obrazu zadanego. Przycisk Add(n) powoduje dodanie na listę obrazów

porównywanych migawki obrazu kamery w momencie wciśnięcia. N zmienia się

dynamicznie i reprezentuje liczbę już zrobionych i zapamiętanych migawek służących do

porównania z obrazem zadanym. Przycisk Reference Pic powoduje zapamiętanie migawki

obrazu w momencie wciśnięcia przycisku, aby następnie możliwe było porównywane z nią

obrazów z listy.

Rysunek 28: Przykładowe działanie aplikacji do porównywania algorytmów

Page 58: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

58

Rysunek 29: Wiadomość do użytkownika, gdy próbuje porównać obrazy bez ich poprzedniego dodania.

W celu optymalizacji algorytmu należy poprzez porównanie każdego z obrazów z listy

z obrazem referencyjnym obliczyć punkty charakterystyczne dla obrazu referencyjnego tylko

raz (jak dla każdego obrazu). Z tego powodu przeprowadzanie obliczeń za pierwszym razem

dla nowych obrazów trwa znacznie dłużej niż za każdym kolejnym.

Korzystna jest opcja zapamiętywania obrazów z listy i obrazu referencyjnego.

Pozwala to zmieniać ustawienia oraz skierować kamerę w dowolne miejsce, a równocześnie

mieć pewność, że zapamiętane obrazy zostaną poddane analizie. Co ważniejsze, możemy

dodawać do listy nowe obrazy nie tracąc wcześniejszych i wykorzystać fakt optymalizujący,

że obliczenia zostaną przeprowadzone tylko nowych obrazów. Ma to istotny wpływ na

sposób testowania algorytmów.

Przycisk Find Matches powoduje uruchomienie elementu systemu Android znanego

jako AsyncTask (jest to odpowiednik wątku). Powoduje to, że aplikacja przetwarza

współbieżnie, jest wielowątkowa i wykorzystuje liczne rdzenie procesorów z urządzeniami

OS Android. W trakcie obliczeń widać pasek postępu, który wskazuje ile obrazów z listy

zadanej zostało już porównanych. Daje to użytkownikowi pewność, że aplikacja działa, nie

jest zawieszona. Istotne jest, że AsyncTask pozwala na wykonywanie niezbyt długich,

trwających maksymalnie 30 sekund, operacji. Testy wykazały, że jest to czas wystarczający,

aby przy pierwszym przetwarzaniu porównać około pięćdziesięciu zdjęć. Należy zaznaczyć,

że liczba ta wystarcza, aby uznać testy za wiarygodne.

AsyncTask pozwala na asynchroniczne wykonywanie prac i komunikację zwrotną z

interfejsem użytkownika. Powoduje blokowanie operacji w wątku roboczym, a następnie

zwraca wyniki do wątku użytkownika bez konieczności samodzielnego zarządzania mutexami

i innymi mechanizmami synchronizacji wątków. Dzięki temu wątek główny wchodzący w

interakcję z użytkownikiem jest bezpieczny. Kod jest czytelny i krótki. Wyraźnie rozdziela

części wątku roboczego i głównego, dzięki czemu nie mieszają się one ze sobą.

Page 59: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

59

Rysunek 30: AsyncTask w toku, komunikat postępu porównywania obrazów z listy ze wzorcem

W menu górnym występują jeszcze 2 przyciski typu toggle button, które zachowują

stan włączony lub wyłączony.

Pierwszym z nich jest przycisk Homography. Jeżeli jest włącznony, dodatkowo

oblicza homografię między zadanymi obrazami przy wykorzystaniu wspomnianej już funkcji

OpenCV findHomography. Pozwala ona na najbardziej dokładne stwierdzenie czy obrazy są

identyczne. Drugim z nich jest przycisk Show Matches. Jeżeli po przeliczeniu obrazów jest

włączony, pozwala na wyświetlenie wszystkich punktów uznanych za znalezione

odpowiedniki. Łączy liniami w różnych kolorach te, które spełniły zadane przez użytkownika

kryterium dystansu i homografię (o ile ją zaznaczono).

Po przeliczeniu obrazów wyświetlane jest okno dialogowe pokazujące najlepszy z

dopasowanych obrazów z listy oraz obraz, z którym dokonywano porównania. W zależności

od ustawień może pokazywać jedynie złącznone lub dodatkowo niezłączone punkty

charakterystyczne. Ponadto pokazuje na liście numer indeksu najlepiej dopasowanego obrazu,

nazwy algrytmów użytych przy dokonywaniu porównania oraz czas jaki upłynął od

rozpoczęcia operacji porównywania (jest to czas liczony dla wszystkich obrazów z listy i

obrazu zadanego).

Page 60: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

60

Rysunek 31: Wynik najlepszego dopasowania dwóch klatek bez narysowanych złączeń

Rysunek 32: Wynik najlepszego dopasowania dwóch klatek z narysowanymi złączeniami

Po wciśnięciu przycisku dismiss następuje niejawne zapisanie do pamięci telefonu

zdjęcia o nazwie zawierającej wspomniane parametry i nazwy algorytmów. Jest to niemalże

unikatowa nazwa, więc dobrze służy jako klucz identyfikujący wykonane testy. Jednak w

rozumieniu baz danych nie jest kluczem głównym.

Page 61: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

61

Po wciśnięciu przycisku „menu” w urządzeniu widzimy 3 możliwe opcje:

Rysunek 28: Opcje do wyboru w menu

1. Możemy nałożyć na obraz z kamery jeden z filtrów.

mono - obraz będzie czarno - biały, ale jest to jedynie efekt wizualny, bowiem

porównywane obrazy zawsze są czarno-białe, co jest kolejnym krokiem

optymalizacyjnym przyspieszającym działanie algorytmów,

aqua - obraz cechuje charakterystyczne rozmycie zwane blurem,

sepia - obraz staje się sepią, więc wygląda jakby powstał na początku XX wieku,

none - obraz jest naturalny, czyli taki jaki powstałby bez filtrów z kamery.

Page 62: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

62

Rysunek 29: Efekt wyboru opcji negatywu na działanie aplikacji

2. Możemy również wybrać jedną z dostępnych rozdzielczości przetwarzanego obrazu.

Należy jednak pamiętać, że zwiększenie rozdzielczości już przetwarzanego obrazu

może nie być możliwe. Dzieje się tak dlatego, że obraz musi zmieścić się na

wyświetlaczu, co jest możliwe tylko dla niższych rozdzielczości.

Rysunek 35: Lista rozwijana z dostępnymi do wyboru rozdzielczościami dla przetwarzanych obrazów z kamery

Page 63: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

63

3. Można zmniejszać rozdzielczość w celu przyspieszenia obliczeń. Jest to następny typ

optymalizacji. Przy jego użyciu ponosimy jednak koszty związane ze stratą jakości

obrazu.

Przycisk prowadzący do ustawień algorytmów znajduje się na skraju prawej strony.

Dzięki niemu mamy dostęp do list wyborów z radio buttonami algorytmów. Wybieramy na

każdym z trzech kroków jeden z dostępnych algorytmów. Dla detekcji mamy do wyboru

algorytm wyszukiwania punktów charakterystycznych oraz jego odmianę typu classic,

pyramid, grid i dynamic.

Rysunek 30: Dostępne do wyboru algorytmy detekcji cech obrazu wraz z ich modyfikacjami

Dla ekstrakcji punktów mamy do wyboru algorytm z listy oraz próg dystansu określający

czy punkty złączone można uznać za „dobre". Im niższa wartość, tym lepsze punkty zostaną

wybrane do weryfikacji identyczności obrazu. Ponadto można wybrać próg określający

minimalną liczbę punktów spełniających zadany dystans (nie większych od niego), która

pozwala uznać, że obrazy są identyczne. Im mniej punktów potrzeba, tym bardziej liberalny

jest wybrany detektor.

Page 64: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

64

Rysunek 37: Dostępne do wyboru deskryptory cech wraz z pewnymi parametrami algorytmu szukania najlepszego

dopasowania

Na koniec możemy wybrać jeden z algorytmów łaczenia w pary punktów na obrazach,

jedną z metod używanych przy wyznaczaniu homografii oraz próg odrzucania zbiorów dla

algorytmu Ransac.

Rysunek 38: Dostępne do wyboru algorytmy łączenia dopasowań pomiędzy klatkami oraz sposób przeprowadzania

procesu łączenia klatek

Page 65: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

65

Warto wspomnieć, że aplikacja, która korzysta z kamery urządzenia działającego na

systemie Android ma jedną zasadniczą wadę. Chodzi o bardzo duże zużycie baterii. Dzieje się

tak, ponieważ ekran zużywa sporo energii, a algorytmy wykonują skomplikowane obliczenia.

Wykres odzwierciedla znaczny spadek poziomu baterii telefonu, co spowodowane jest

intensywnym testowaniem aplikacji.

Rysunek 39: Wpływ działania aplikacji na poziom zużycia baterii

Page 66: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

66

6.2.1 Metody testowania

Dzięki automatycznemu zapisywaniu plików o unikatowych nazwach, służących do

identyfikowania użytych algorytmów i wygenerowanych przez nie wyników, na karcie

pamięci urządzenia można zobaczyć jak działa aplikacja. Ponadto szybki dostęp do menu oraz

zapamiętanie obrazów i ustawień przyspiesza proces testowania, czyniąc go przejrzystym.

Na bazie dziesięciu zdjęć przetestowane zostały wszystkie dostępne algorytmy.

Przyjmujemy, że trzy zdjęcia były zbliżone do zadanego. Dzięki temu możliwe było badanie

uzyskanych wyników pod kątem:

liczby uzyskanych punktów charakterystycznych,

liczby punktów spełniających zadanych dystans,

liczby punktów będących wynikiem szukania homografii,

średniego czasu przetwarzania jednego zdjęcia.

Aby testy były powtarzalne wybraliśmy:

kilka scen z mieszkania bogatych w punkty charakterystyczne,

kilka obrazów z mieszkania ubogich w punkty charakterystyczne (aby zbadać jakość

znalezionych punktów),

kilka obrazów van Gogha - korzysta z nich druga aplikacja.

Korzystne jest, że po podpięciu smartfona do laptopa można przeglądać dobrze

nazwane pliki i porównywać wyniki testów, które są powtarzalne.

7 Wyniki testów

Na początku trzeba powiedzieć, że dwa algorytmy w bibliotece OpenCV nie są bezpłatne.

Mowa o SIFT oraz SURF. Ich testowanie nie może zostać przeprowadzone bez uiszczenia

opłat. Aby otrzymać dostęp do kodów źródłowych tych algorytmów należy kupić licencję. Jej

cena spowodowała konieczność rezygnacji z ich badania.

Oto obrazy, na których testowano aplikację:

Page 67: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

67

Page 68: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

68

Page 69: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

69

Rysunek 40: Przykładowe sceny na których testowano algorytmy

Algorytmy testowano pod kątem:

Czas detekcji na jednej klatce - całkowity czas w milisekundach potrzebny

algorytmowi do wykonania detekcji punktów charakterystycznych na jednym

zdjęciu/klatce.

Czas detekcji na jeden punkt charakterystyczny - całkowity czas w milisekuntach

potrzebny na detekcję pojedynczego punktu charakterystycznego. Wylicza się go jako

całkowity czas potrzebny na obraz/klatkę i podzielony przez liczbę wykrytych

punktów charakterystycznych.

Szybkość na punkt złączenia - całkowity czas potrzebny, aby odnaleźć jeden punkt

złączenia przy racjonalnie dobranym dystansie złączenia.

Procent odnalezionych punktów kluczowych obrazu - procent odnalezionych z

sukcesem punktów od obrazu oryginalnego do obrazu mierzonego. Powinien być

bliski 100%. Liczymy ile punktów wykryto dla obrazu oryginalnego, a ile dla

zmatchowanego.

Średni błąd detekcji - średni dystans między pozycją namierzonego punktu a

wyliczoną pozycją punktu w obrazie oryginalnym. Bada dokładność pomiaru punktów

charakterystycznych. Duże wartości oznaczają fałszywie pozytywne zbieżności

pomiędzy cechami obrazów.

Procent złączonych punktów charakterystycznych - określa ile spośród odnalezionych

cech obrazu zostało zmatchowanych z obrazem referencyjnym. Bierze pod uwagę

zadany dystans potrzebny do uznania punktów za połączone.

Page 70: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

70

Procent punktów przeprowadzonych z detekcji na homografię - określa jaki procent

punktów uznanych za cechy obrazu został użyty w celu wyznaczenia homografii.

Bada jakość odrzuconych punktów. Im większy, tym punkty odnalezione były lepsze.

Procent punktów przeprowadzanych ze złączenia na homografię - określa ile z

punktów uznanych za złączeniowe zostało uznanych za wyznaczone w wyniku

homografii. Im więcej, tym lepsze były punkty złączeniowe.

7.1 Wyniki dla obrazu przedstawiającego książki na półce

Testowana scena:

Scena została wybrana do testów, ponieważ wg autora zawierała wiele cech.

Występuje w niej zmienne naświetlenie, w tym ewidentne prześwietlenia oraz obszary

niedoświetlone.

Poniżej prezentujemy wykresy obrazujące wyniki naszych testów. Pod każdym

wykresem znajduje się jego analiza.

Dodatkowo umieszczamy poniżej fotografie przedstawiające obraz zadany oraz

najlepiej dopasowany obraz ze zbioru migawek wykonanych w ramach testów. Dzięki temu

będziemy wiedzieli, że niektóre algorytmy nie potrafią odzwierciedlić szczególnych

przypadków. Będziemy też mogli zasugerować, jakich algorytmów należy używać, a jakich

należy unikać ze względu na ich omylność. To pozwoli nam na ich klasyfikację.

Page 71: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

71

Wykresy dla testu wykrycia punktów kluczowych:

Wyraźnie widać, że detektor Dense wyselekcjonował najwięcej punktów kluczowych.

Bardzo dobrze wypadły algorytmy Fast oraz GFTT. Nieźle wypadły algorytmy ORB oraz

Harris. Na uwagę zasługuje fakt, że algorytm STAR wyszukał najmniej cech. Algorytm Grid

Star nie znalazł żadnych cech, więc najprawdopodobniej nie działa w tej odmianie. Należy

zwrócić uwagę, że algorytmy w odmianie Pyramid wykrywały więcej punktów kluczowych.

Algorytm Fast w odmianie Dynamic (jako jedyny posiada tę odmianę) wypadł przeciętnie.

Algorytmy w odmianie Grid wykrywały mniej punktów charakterystycznych. Wyjątkiem jest

algorytm Harris, dla którego odmiana Grid wykryła więcej cech. Należy pamiętać, że w

zależności od potrzeb niezbędna jest różna liczba wykrytych punktów charakterystycznych w

obrazie. Generalnie im więcej, tym lepiej, aczkolwiek można zaryzykować stwierdzenie, że

około 500 punktów powinno być zadowalającym wynikiem.

0 500 1000 1500 2000 2500

GRID STAR

GRID BRISK

GRID ORB

STAR

PYRAMID STAR

BRISK

PYRAMID BRISK

HARRIS

PYRAMID HARRIS

GRID HARRIS

DYNAMIC FAST

ORB

GRID FAST

PYRAMID ORB

GRID DENSE

GRID GFTT

GFTT

FAST

PYRAMID GFTT

PYRAMID FAST

DENSE

PYRAMID DENSE

Liczba wykrytych punktów kluczowych

Page 72: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

72

Oto wykres obrazujący liczbę wykrytych puntków charakterystycznych, punktów

użytych w trakcie złączenia obrazów (a zatem najlepszych punktów kluczowych) oraz

punktów będacych wynikiem złączenia obrazów w wyniku znalezienia między nimi

homografii. Ostatnia wymieniona grupa obejmuje punkty będące jeszcze lepsze jakościowo

niż punkty złączenia.

Jak widać algorytm Dense nie najlepiej poradził sobie z przełożeniem dużej liczby

punktów kluczowych na punkty zlączenia oraz homografii. Zauważmy, że Pyramid Fast

wykrył więcej punktów złączenia i homografii niż Dense mimo tego, że znalazł mniej

punktów kluczowych. Widać tutaj kilka algorytmów, które zachowały spory procent

wykrytych cech obrazu. Świadczy to o wysokiej jakości wykrywanych przez nie cech. Takimi

algorytmami są Fast, Gftt, Orb, Harris oraz Star. Wyres pokazuje, że algorytmy w wersjach

Grid wykrywają niskiej jakości cechy – ich słupki punktów złączenia oraz homografii w

stosunku do punktów kluczowych są znacznie mniejsze. Algorytmy w wersji Pyramid mają

zbliżoną skalę odrzucania punktów na poszczególnych etapach co algorytmy w wersji

klasycznej. Im więcej punktów złączenia oraz homografii wybrano spośród punktów

kluczowych, tym lepiej. W omawianym teście wyraźnie widać słaby wynik algorytmów

Dense oraz Brisk.

0 500 1000 1500 2000 2500

GRID STAR

GRID BRISK

GRID ORB

STAR

PYRAMID STAR

BRISK

PYRAMID BRISK

HARRIS

PYRAMID HARRIS

GRID HARRIS

DYNAMIC FAST

ORB

GRID FAST

PYRAMID ORB

GRID DENSE

GRID GFTT

GFTT

FAST

PYRAMID GFTT

PYRAMID FAST

DENSE

PYRAMID DENSE

Liczba wykrytych poszczególnych rodzajów cech w obrazie

punkty homografii

punkty złączenia

punkty kluczowe

Page 73: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

73

Oto wykres obrazujący średni dystans Hamminga. Jest to pewnego rodzaju miara jakości

wyszukiwanych cech. Im mniejsza wartość dystansu, tym lepsza cecha.

Wyraźnie widać, że algorytmy Dense oraz Brisk nie wypadły dobrze. Ponadto wykres

pokazuje, że algorytmy w wersji Grid uzyskały znacznie słabsze wyniki niż algorytmy w

wersji klasycznej. Algorytmy w wersji Pyramid również wypadły gorzej niż algorytmy w

wersji klasycznej. Nie jest to jednak zaskakujące zachowanie, ponieważ wykryły one więcej

cech o nieco niższej jakości. Natomiast algorytmy w wersji Grid znalazły mniej punktów

kluczowych, dodatkowo o niższej jakości. W opisywanym teście bardzo dobrze wypadły

algorytmy Star oraz Harris. Algorytm Star wykrył niewiele cech w obrazie, natomiast ich

jakość jest zdecydowanie najlepsza. Algorytmy GFTT oraz Fast także wypadły dość dobrze.

Wykryły bardzo dużą liczbę punktów kluczowych, więc należy stwierdzić, że jakość tych

punktów jest dobra. Nie zaskakują zatem poprzednie wykresy, a powyższy wykres pokazuje

dlaczego algorytm Dense odrzucał tak wiele punktów kluczowych i nie potrafił połączyć ich

między obrazami.

0 5 10 15 20 25 30 35

GRID STAR

GRID BRISK

GRID ORB

STAR

PYRAMID STAR

BRISK

PYRAMID BRISK

HARRIS

PYRAMID HARRIS

GRID HARRIS

DYNAMIC FAST

ORB

GRID FAST

PYRAMID ORB

GRID DENSE

GRID GFTT

GFTT

FAST

PYRAMID GFTT

PYRAMID FAST

DENSE

PYRAMID DENSE

Średni dystans Hamminga

Page 74: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

74

Całkowity czas pomiaru oraz przebiegu testu w milisekundach

Im krótszy czas pomiaru, tym lepiej. Nie należy brać pod uwagę wyniku algorytmu

Grid Star, ponieważ nie wykrył on żadnych cech w obrazie. Wyraźnie widać, że algorytmy w

wersjach Grid wypadają korzystniej w omawianym teście. Nie jest to przypadek, ponieważ

swykrywają one mniej cech niż wersje klasyczne lub Pyramid. Ponadto dostarczają punkty o

niższej jakości, dlatego też działają szybciej. Algorytmy w wersji Pyramid pracują dłużej.

Dzieje się tak dlatego, że znajdują więcej cech w obrazie o nieznacznie niższej jakości niż

algorytmy w wersji klasycznej. W tym teście najlepiej wypadły algorytmy Star, Brisk, Harris,

Fast oraz wszystkie odmiany w wersji Grid. Algorytm Dense uzyskał najsłabszy wynik.

Algorytm Gftt również nie wypadł dobrze. Warto zwrócić uwagę, że algorytm ORB w wersji

klasycznej wypada przeciętnie, a w wersji Grid znakomicie. Należy jednak pamiętać, że w

wersji Grid wykrył on mało cech o bardzo słabej jakości. Trzeba podkreślić, że algorytm Star

wykrywa mało cech o najwyższej jakości i pracuje najkrócej. Zasługuje zatem na szczególną

uwagę. Dobrze wypadają Fast oraz Harris.

0 2000 4000 6000 8000 10000 12000

GRID STAR

GRID BRISK

GRID ORB

STAR

PYRAMID STAR

BRISK

PYRAMID BRISK

HARRIS

PYRAMID HARRIS

GRID HARRIS

DYNAMIC FAST

ORB

GRID FAST

PYRAMID ORB

GRID DENSE

GRID GFTT

GFTT

FAST

PYRAMID GFTT

PYRAMID FAST

DENSE

PYRAMID DENSE

Całkowity czas pomiaru

Page 75: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

75

Oto wykres obrazujący jak wiele punktów kluczowych zostało użytych w złączeniu obrazów

oraz jak wiele spośród złączonych punktów zostało wybranych poprzez homografię. Im

więcej punktów złączenia oraz homografii w stosunku do kluczowych, tym lepiej.

Najpierw należy zwrócić uwagę na długość niebieskich słupków. Obrazuje ona, jaki

procent punktów kluczowych w obrazie zadanym i porówynywanym został wykryty jako

część wspólna. Oczywiście im ten procent większy, tym lepiej. Dobrze wypadły algorytmy

Dense, Orb, Gftt. Słabo wypadły algorytym Star, Brisk, Harris.

Następnie należy przeanalizować tendencję przydatności wykrytych punktów

kluczowych. Im większy procent punktów kluczowych został użyty w złączeniu obrazów,

tym lepiej. Im większy procent punktów użytych w złączeniu został wybrany w wyniku

homografii, tym lepiej. Zwróćmy uwagę na dobry wynik algorytmów Star, Harris, GFTT oraz

Fast. Wypadają one najlepiej, przy czym Fast nieco słabiej niż trzy pozostałe. Pokazuje to, że

algorytmy te wykrywają punkty charakterystyczne użyteczne przy złączeniu obrazów oraz

wyznaczeniu dla nich homografii. Świadczy to o ich wysokiej przydatności i jakości. Słabo

wypadły algorytmy Dense i Brisk. Przeciętny wynik dał algorytm ORB. Algorytmy w wersji

Grid zdecydowanie wypadły słabo. Potwierdza to, że wykrywane przez nie punkty są słabe

jakościowo, tylko część z nich jest przydatna. Algorytmy w wersji Pyramid wypadły nieco

0 0,2 0,4 0,6 0,8 1 1,2

GRID STAR

GRID BRISK

GRID ORB

STAR

PYRAMID STAR

BRISK

PYRAMID BRISK

HARRIS

PYRAMID HARRIS

GRID HARRIS

DYNAMIC FAST

ORB

GRID FAST

PYRAMID ORB

GRID DENSE

GRID GFTT

GFTT

FAST

PYRAMID GFTT

PYRAMID FAST

DENSE

PYRAMID DENSE

Skuteczność wykorzystania wykrytych punktów kluczowych przy łączeniu obrazów

punkty homografii

punkty złączenia

punkty kluczowe

Page 76: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

76

gorzej niż od tych w wersji klasycznej, ale dalej zadowalająco. Szczególnie korzystnie

zaprezentowały się Pyramid Gftt oraz Pyramid Star i Pyramid Harris. Algorytm Pyramid Fast

wypadł dość dobrze, ale znacznie gorzej od wspomnianych.

Czas potrzebny na pełne przeanalizowanie obrazu zadanego i porównywanego. Im krótszy

czas, tym algorytm jest lepszy.

W tym teście bardzo dobrze wypadły algorytmy Star, Brisk i Harris. Dobry wynik

uzyskał algorytm Fast. Przeciętnie wypadły algorytmy ORB oraz GFTT. Słabo zaprezentował

się algorytm Dense. Algorytmy w wersji Grid wypadły lepiej niż algorytmy w wersjach

klasycznych, co zostało to już wytłumaczone. Analogicznie gorzej niż algorytmy w wersjach

klasycznych wypadły algorytmy w wersjach Pyramid, co również zostało wcześniej

wyjaśnione.

0 100 200 300 400 500 600

GRID STAR

GRID BRISK

GRID ORB

STAR

PYRAMID STAR

BRISK

PYRAMID BRISK

HARRIS

PYRAMID HARRIS

GRID HARRIS

DYNAMIC FAST

ORB

GRID FAST

PYRAMID ORB

GRID DENSE

GRID GFTT

GFTT

FAST

PYRAMID GFTT

PYRAMID FAST

DENSE

PYRAMID DENSE

Czas przetwarzania jednej klatki

Page 77: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

77

Czas potrzebny algorytmowi na wykrycie punktu kluczowego. Im krótszy czas, tym lepiej.

W tym teście bardzo dobre wyniki uzyskały algorytmy Dense, Fast, GFTT oraz ORB.

Algorytm Harris wypadł przeciętnie. Algorytmy Brisk oraz Star wypadły niekorzystnie.

Algorytmy w wersji Grid zaprezentowały się porównywalnie do algorytmów w wersjach

klasycznych. Oznacza to, że korzyści czasowe z ich wykorzystywania są tak znaczące.

Algorytmy w wersjach Pyramid wypadły porównywalnie do wersji klasycznych. Oznacza to,

że czas przetwarzania cech obrazu nie jest dla nich znacznie większy, przez co

prawdopodobnie będą zalecane w pewnych sytuacjach. Algorytm Dense wypada w tym teście

dobrze, ponieważ wykrywa bardzo dużo punktów. Podobnie jest w przypadku algorytmu

Fast. Algorytm Star wypada tutaj niekorzystnie, ale pamiętajmy, że dostarcza on małej liczby

cech o bardzo wysokiej jakości. Łączny czas przetwarzania zdjęcia jest w jego przypadku

najkrótszy, a jednej cechy najdłuższy, co wynika to z wysokiej jakości dostarczonego punktu.

0 0,5 1 1,5 2 2,5 3 3,5 4 4,5 5

GRID STAR

GRID BRISK

GRID ORB

STAR

PYRAMID STAR

BRISK

PYRAMID BRISK

HARRIS

PYRAMID HARRIS

GRID HARRIS

DYNAMIC FAST

ORB

GRID FAST

PYRAMID ORB

GRID DENSE

GRID GFTT

GFTT

FAST

PYRAMID GFTT

PYRAMID FAST

DENSE

PYRAMID DENSE

Czas przetwarzania punktu kluczowego

Page 78: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

78

Oto wykres obrazujący czas potrzebny na ekstrakcję i wykycie odpowiedników przy

złączeniu. Wszystkie testy były przeprowadzone z wykorzystaniem wspólnego ekstraktora

ORB oraz algorytmu łączenia Bruteforce Hamming, zatem pokazują, ile trwają specyficzne

dla algorytmów detekcji operacje zbudowania deskryptora i znalezienia odpowiednika. Im ten

czas jest krótszy, tym lepiej.

Z wykresu wynika, że bardzo niekorzystnie wypadły algorytmy Star oraz Brisk. Skala

wykresu utrudnia interpretację, dlatego poniżej przedstawiamy wykres, uwzględniający tylko

algorytmy, które wypadły zadowalająco.

0 10 20 30 40 50 60 70 80 90 100

GRID STAR

GRID BRISK

GRID ORB

STAR

PYRAMID STAR

BRISK

PYRAMID BRISK

HARRIS

PYRAMID HARRIS

GRID HARRIS

DYNAMIC FAST

ORB

GRID FAST

PYRAMID ORB

GRID DENSE

GRID GFTT

GFTT

FAST

PYRAMID GFTT

PYRAMID FAST

DENSE

PYRAMID DENSE

Czas przetwarzania punktu złączenia

Page 79: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

79

Oto wykres obrazujący tylko algorytmy, dla których czas przetwarzania jest porównywalny i

zadowalający.

Jak widać algorytm Harris wypadł przeciętnie. Podobnie algorytm Orb. Dobrze

zaprezentowały się algorytmy Dense, Fast oraz Gftt. Nie widać istotnych różnic w przypadku

wersji Pyramid i Grid dla algorytmu Fast. Uogólniając, algorytmy w wersji Pyramid

dostarczają cech, dzięki którym czas ich ekstrakcji i złączenia jest nieznacznie krótszy.

Stanowi to ich zaletę. Algorytymy w wersji Grid znowu wypadły słabiej. Czas ekstrakcji oraz

złączenia punktów jest w ich przypadku dłuższy, co kwestionuje ich przydatność.

Oto obrazy dokumentujące powyższe testy wraz z komentarzami:

0 0,5 1 1,5 2 2,5

HARRIS

PYRAMID HARRIS

GRID HARRIS

DYNAMIC FAST

ORB

GRID FAST

PYRAMID ORB

GRID DENSE

GRID GFTT

GFTT

FAST

PYRAMID GFTT

PYRAMID FAST

DENSE

PYRAMID DENSE

Czas przetwarzania punktu złączenia

Page 80: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

80

Powższy obraz pokazuje wykorzystanie detektora Star. Widać, że złączył on niewiele

punktów kluczowych. Ponadto było tylko kilka punktów, które nie zostały wykorzystane w

złączeniu. Co więcej, obraz uznany za odpowiednik jest bardzo podobny do zadanego.

Powyższy obraz pokazuje działanie detektora Orb. Wyraźnie widać większą liczbę

odnalezionych punktów kluczowych oraz złączeń. Krzywe linie złączeń dowodzą, że zdjęcie

uznane za złączone z zadanym jest nieco innym ujęciem sceny. Co ciekawe, jest innym

ujęciem niż odnalezione przez algorytm Star. Wydaje się, że algorytm Star znalazl lepszy

odpowiednik sceny.

Powżysze zdjęcie obrazuje działania detektora Gftt. W wyniku zwrócił on tę samą

klatkę co algorytm Star. Ponadto dostarczył bardzo dużej liczby punktów kluczowych oraz

złączeń.

Page 81: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

81

Powyższe zdjęcie obrazuje działanie algorytmu Pyramid Fast. Detektor ten zwrócił w

wyniku obraz identyczny co Gfft oraz Star. Mamy tu bardzo dużo punktów kluczowych oraz

złączeń. Ich proste linie wskazują na poprawność działania.

Powyższe zdjęcie obrazuje działanie algorytmu Dense. Jest tu bardzo dużo złączeń

oraz punktów kluczowych. Wyraźnie widać, że niektóre złączenia mają krzywe linie

(odpowiedniki), co świadczy o kiepskim dopasowaniu punktów. Poniżej prezentujemy ujęcie

uznane za złączone (bez odpowiedników):

Page 82: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

82

Wyraźnie wiadać, że klatka uznana za złączoną jest inna niż ujęcia wskazane przez

detektory Fast i Orb. Wynik ten nie jest właściwy. Oznacza to, że algorytm Dense jest

niewiarygodny.

7.2 Wyniki dla obrazu z martwą naturą

Analizowana scena:

Page 83: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

83

Scena jest bogata w cechy i punkty kluczowe. Posiada oświetlenie dostarczone poprzez

światło sztuczne oraz odbicia światła w kieliszkach i na butelce. Wyraźnie widać refleksy

oraz duży kontrast kolorów.

Ze względu na objętość pracy nie zaprezentujemy poniżej analogicznych wykresów jak dla

poprzednio analizowanej sceny. Ograniczymy się do komentarza, że wyniki są niemalże

identyczne. Trend wyników jest jednakowy, jedyną różnicą były krótsze czasy przetwarzania

algorytmów wynikające z lepszej jakości cech obrazu.

Podobnie jak poprzednio zamieszczamy kilka obrazów z testów:

Powyższy obraz ukazuje działanie algorytmu Star. Widać zdecydowanie więcej cech oraz

złączeń niż w przypadku poprzedniej sceny. Co ciekawe, złączona scena jest nieco inna niż

zadana.

Powyższy obraz ukazuje działanie detektora Harris. Złączona scena wyraźnie różni się od

zadanej oraz tej wykrytej przez algorytm Star. Jest niestety mniej zadowalająca. Oznacza to,

że algorytm Harris poradził sobie słabiej mimo większej liczby wykrytych cech i złączeń.

Page 84: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

84

Powyżyszy obraz prezentuje działanie detektora Orb. Widać równie dużo złączeń i cech co w

przypadku algorytmu Star. Złączenie też jest identyczne.

Powższy obraz ukazuje działanie algorytmu Gftt. Zwraca on w wyniku identyczną klatkę

złączenia co algorytmy Star oraz Orb.

Page 85: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

85

Powyższy wynik to efekt działania detektora Fast. Jest on taki sam jak dla algorytmów Orb,

Star i Gftt. Należy zatem uznać, że algorytmy zadziałały równie dobrze dla tej sceny.

Powższe obrazy to wynik działania algorytmu Dense. Jest on niepoprawny, co widać

wyraźnie, ponieważ scena uznana za złączoną jest ewidentnie wynikiem zbliżenia kamery.

Patrząc na punkty kluczowe i ich złączenia widać dużo krzywych złączeń, które są

niepoprawne. W kolejnej scenie algorytm zwrócił fałszywy wynik.

7.3 Wyniki dla obrazu przedstawiającego laptopa i Gwiaździstą Noc van Gogha

Analizowana scena:

Page 86: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

86

Scena została wybrana ze względu na duży kontrast oraz występowanie na niej obrazu van

Gogha, który jest wykorzystywany w drugiej aplikacji.

Podobnie, jak poprzednio, ze względu na ograniczone miejsce oraz identyczny wynik

jakościowy testów, nie będziemy umieszczać tutaj wykresów obrazujących zachowanie

algorytmów. Ograniczymy się do pokazania samych wyników działania poszczególnych

algorytmów.

Oto obrazy z przeprowadzonego testu wraz z ich interpretacją :

Page 87: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

87

Powyższy obraz ukazuje działanie detektora Star. Widać, że znalazł on sporo cech i złączył je

ze sobą. Niepokojące są krzywe linie złączenia. Pokazują one, że obraz złączony został

uchwycony pod innym kątem niż zadany.

Jak widać detektor Harrisa zwrócił ten sam wynik co detektor Star. Wydobył jednak więcej

cech z obrazu.

Detektor Pyramid Orb zwrócił inny wynik. Jest on bliższy prawdzie. Co ciekawe, w tym

wypadku algorytm Orb okazał się dokładniejszy niż algorytm Star. O jakości złączenia

świadczą proste linie.

Page 88: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

88

Detektor Gftt zwrócił ten sam wynik co Star i Harris, a inny niż Orb. Można stwierdzić, że

Orb zaprezentował się korzystniej.

Detektor Dense ponownie wybrał inny, niezachowujący skali obraz złączenia. Jest to

fałszywe złączenie. Co ciekawe, detektor Dense rozpoznał punkty kluczowe na obszarze

występowania liter i przycisków na klawiaturze laptopa. Wyraźnie widać, że algorytm Dense

Page 89: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

89

niepoprawnie odczytuje zmieniającą się skalę obrazów, co wydaje się go dyskwalifikować w

przypadku przetwarzania obrazów w czasie rzeczywistym.

Detektor Pyramid Dense wypadł jeszcze słabiej. Widzimy, że złączył ze sobą obrazy o

różnych kątach obrotu. To bardzo niekorzystne zjawisko.

Page 90: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

90

Na koniec widzimy, że detektor Fast wykrył jako złączenie te same obrazy co Star, Harris i

Gftt. Omawiany test jest bardzo ciekawy, bowiem wyraźnie ukazuje słabości Dense. Pokazuje

też, że czasami algorytmy Fast, Star, Gftt oraz Harris, które można z pewnością uznać za

bezpieczny wybór, wypadły gorzej niż nieco niedoceniony i średnio wypadający w testach

algorytm Orb w wersji Pyramid.

7.4 Wyniki dla obrazu przedstawiają dwie fotografie wiszące na ścianie

Analizowana scena:

Scena ta nie będzie aż tak bogata w cechy i punkty kluczowe jak poprzednio analizowane.

Dzięki temu zbadamy jak zachowują się badane algorytmy w nieco innych warunkach.

Ponadto ujęcie zostało wykonane pod kątem, więc testy będą ukazywały jak algorytmy

działają przy zmiennej orientacji obrazów.

Ponownie ograniczymy się do pokazania wyników działania poszczególnych algorytmów.

Raz jeszcze testy wykazały jakościowo identyczne wyniki. Na uwagę w tym przypadku

testowym zasługuje nieznacznie gorsza sprawność algorytmu FAST pod względem liczby

wykrytych cech oraz lepszy wynik działania GFTT. Co ciekawe, algorytm HARRIS uzyskał

porównywalny jakościowo wynik do algorytmu STAR pod względem dystansu Hamminga, a

więc jakości wykrytych cech.

Page 91: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

91

Oto obrazy z przebiegu testu wraz z krótkim komentarzem :

Powyższy obrazek pokazuje działanie detektora Star. Wynik jest poprawny. Należy zwrócić

uwagę na prawie 100% złączenia. Tylko jeden punkt kluczowy nie znalazł swojego

odpowiednika. Oznacza to wysoką wiarygodność wyników.

Oto wynik działania detektora Harris. Wynik jest również poprawny. Trzeba podkreślić, że

cechy znalezione na obrazie tancerki nie zostały złączone z obrazem wynikowym. Dla

porównania:

Page 92: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

92

Algorytm Pyramid Harris wyraźnie lepiej wykonał zadanie. W wyniku zwrócone zostały

również poprawnie złączone obrazy, przy czym ten sam detektor w wersji Pyramid znalazł i

złączył cechy na krawędziach obrazu tancerki (nieprzypadkowo są to krawędzie, gdyż jak

wiadomo detektor Harrisa pierwotnie wykrywał właśnie krawędzie).

Detektor Orb również dał taki sam wynik, przy czym zwrócił więcej cech obrazu.

Page 93: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

93

Detektor Grid Gftt wykonał zadanie bardzo dobrze. Co ciekawe, wykrył znacznie więcej

cech, ale nie potrafił dla wielu z nich znaleźć dopasowania. Zaskakują jedynie cechy

znalezione na samej ścianie, co może świadczyć o jego zbytniej zachłanności (wykrywa

więcej niż powinien).

Dla porównania:

Detektor Pyramid Gftt nie znalazł cech obrazu na samej ścianie. Jest to korzystniejsze, gdyż

świadczy o większej dokładności algorytmu.

Detektor Fast również wypadł dobrze. Tym razem nie wykrył tak dużej liczby punktów, ale

jakościowo i wynikowo nie można mieć zastrzeżeń.

Page 94: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

94

Typowo algorytm Dense wypadł bardzo słabo. Zwrócił w wyniku obraz fałszywy o

nieodpowiedniej skali i obrocie.

7.5 Wyniki dla obrazu przedstawiającego obraz na ścianie, fragment monitora i

fragment szafy

Analizowana scena :

Page 95: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

95

Jest ona podobna do poprzedniej, nie zawiera dużej liczby punktów kluczowych ani obrótów.

Pozwoli zweryfikować poprawność poprzednich testów.

W tym teście algorytm FAST ponownie wypadł nieznacznie słabiej niż w pierwszych dwóch

testach. Tak samo jak poprzednio, algorytm GFTT wypadł lepiej niż w dwóch pierwszych

testach. Co ciekawe, ponownie, algorytm HARRIS uzyskał porównywalny jakościowo wynik

do algorytmu STAR pod względem dystansu Hamminga, a więc jakości wykrytych cech.

Interpretacja tych wyników powinna być następująca : w tej oraz w poprzedniej scenie jest

mniej cech oraz ich jakość jest niższa, a wówczas algorytmy GFTT oraz HARRIS działają

lepiej niż w pierwszych dwóch scenach, które są bogate w cechy oraz gdzie jakość tych cech

jest wysoka.

Page 96: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

96

Oto obrazy dokumentujące przeprowadzone testy wraz z krótkim komentarzem:

Detektor Star dobrze złączył ze sobą obrazy. Nie wykrył jednak żadnych cech na krawędziach

występujących w obrazie.

Detektor Harrisa zgodnie z jego pierwotnym przeznaczeniem wykrył cechy na krawędziach i

równie dobrze wykonał zadanie.

Page 97: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

97

Detektor Fast także dał w wyniku ten sam obraz. Również wykrył cechy na krawędziach.

Bardzo dużo cech wykrył algorytm Gftt. Co ciekawe, nie potrafił złączyć cech występujących

na krawędzi monitora i ściany w tle.

Detktor Orb również zadowalająco wykonał zadanie. Warto zwrócić uwagę na praktycznie

100% pokrycie punktów kluczowych w punkty złączenia.

Page 98: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

98

Detektor Dense ponownie wypadł bardzo słabo. W scenie, w której występuje mało cech,

wykrył ich bardzo dużo. Oznacza to, że wyszukał w większości fałszywe cechy. Widać, że

złączone obrazy są różne

Podsumowanie i wnioski końcowe

Algorytmy detekcji SIFT i SURF są płatne. Nie mamy do nich dostępu, więc nie

jesteśmy w stanie ich przetestować.

Algorytmy detekcji MSER oraz SIMPLEBLOB nie są dostępne dla platformy OS

ANDROID, więc również nie mamy możliwości ich przetestowania.

Algorytm Star Grid wykrywa zawsze 0 punktów charakterystycznych, co świadczy

albo o jego złej implementacji albo o tym, że algorytmu typu Grid nie należy używać razem z

algorytmem Star.

Algorytmy typu Grid są znacznie mniej dokładne niż algorytmy klasyczne i ich

używanie nie jest zalecane. Zwracają dużo fałszywych cech, na podstawie których nie należy

łączyć obrazów. Zysk wydajnościowy nie jest aż tak znaczący, aby korzystać z tych

algorytmów.

Odmiana algorytmu Dynamic jest dostępna jedynie dla algorytmu Fast i nie jest

szczególnie ciekawa. We wszystkich testach wypada przeciętnie.

Algorytm Dense jest bardzo słabo napisany. Wykrywa bardzo dużo fałszywych

punktów w każdej z odmian. Nie należy go stosować.

Algorytm Star jest bardzo ciekawy. Jego wyniki dowodzą, że jakość wybranych przez

niego punktów jest wysoka. Algorytm ten ani razu nie dopasował złych obrazów, co daje

100% poprawnych wyników. Ponadto wykorzystaliśmy go w drugiej aplikacji właśnie ze

względu na jego wysoką wiarygodność oraz szybkość rozumianą jako szybkość całkowitej

detekcji (jak wykazaliśmy ogólną szybkość ma najlepszą, ale szybkość szczególną

wykrywania cech zdecydowanie nie)

Algorytmy w wersji Pyramid są nieznacznie wolniejsze od wersji klasycznych.

Wykrywają za to więcej cech w obrazach, przy czym jakość cech jest porównywalna. Jest to

odmiana algorytmów, o której warto pamiętać, gdy algorytm w wersji klaszycznej nie potrafi

wykonać zadania.

Co ciekawe, algorytm Harrisa, który ma już ponad 30 lat, dalej działa zadowalająco.

We wszystkich testach wypadł dobrze. W scenach, w których występuje sporo krawędzi

prezentuje się bardzo dobrze. Przeciętnie wypada w scenach, w których jest dużo cech.

Generalnie im trudniejsza scena zawierająca krawędzie, tym większa jego przydatność.

Page 99: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

99

Algorytm Gftt jest wiarygodnym algorytmem. Ani razu się nie zwrócił błędnego

wyniku, we wszystkich testach wypadał dobrze. Co ciekawe, w scenach uboższych w cechy

prezentował się bardzo dobrze, lepiej niż pozostałe. W scenach bogatych w cechy również

wypadał satysfakcjonująco, ale czas przeprowadzonych obliczeń był wówczas przeciętny.

Algorytm Fast oraz jego odmiana Pyramid są bardzo dobrze zooptymalizowane pod

kątem działania na platformie OS Android. Co więcej, w scenach bogatych w cechy wypadły

najlepiej. W scenach uboższych w cechy działały zadowalająco, ale gorzej niż Gftt.

Algorytm Orb również prezentował się dobrze. Warto zwrócić uwagę, że w jednym z

testów w scenie bardzo bogatej w cechy w praktyce wypadł najlepiej, mimo przeciętnych

wyników w testach. Trzeba jednak zaznaczyć, że zwrócony przez niego wynik był tylko

nieznacznie lepszy niż rezultaty zwrócone przez inne algorytmy.

Reasumując, w zależności od potrzeb warto korzystać z następujących algorytmów:

Star, Harris, Orb, Gftt, Fast.

Wydaje się, że Fast jest najbezpieczniejszym wyborem. Jednak w sytuacjach, gdy

zależy nam na szybkości oraz dokładności Star jest ciekawym i dobrym wyborem, czego

dowodzi działanie drugiej aplikacji. Według autora warto również korzystać z algorytmu Gftt.

Algorytmy Harrisa oraz Orb są poprawne, ale nie widać szczególnych przypadków ich

zastosowania.

Nie należy natomiast wykorzystywać algorytmów Dense oraz Brisk. Ponadto nie

warto stosować algorytmów w odmianie Grid, gdyż nie przynoszą one spodziewanych

korzyści i powodują straty.

Poniżej znajduje się tabela, która ocenia powyższe algorytmy wg. poszczególnych

kryteriów. Dla uproszczenia nie będziemy ponownie rozpatrywać algorytmów w wersjach

grid, pyramid, a jedynie w wersji bazowej.

Przyjmujemy następujące kryteria oceny :

10 - algorytm w tej kategorii jest najlepszy

8 - algorytm jest bardzo dobry w danej kategorii ale nie najlepszy

6 - algorytm w danej kategorii jest przeciętny, ale zdatny do użytku

4 - algorytm w testach zachowywał się poniżej przeciętnej i jego użycie w

danym przypadku testowym jest wątpliwe

2 - algorytm w testach wypadł źle ale nie najgorzej spośród testowanych

algorytmów

0 - algorytm w tej kategorii dał najsłabsze wyniki

KATEGORIA FAST GFTT ORB STAR DENSE HARRIS BRISK

Czas przetwarzania

jednej klatki

(szybkość działania)

2 6 6 10 0 8 6

Czas przetwarzania

jednego punktu

charakterystycznego

(szybkość działania)

10 6 4 2 8 4 0

Czas przetwarzania

jednego punktu

złączenia (szybkość

działania)

10 8 4 2 8 6 0

Procent

odnalezionych cech

w obrazie i we

6 8 4 10 4 6 0

Page 100: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

100

wzorcu

(wiarygodność

algorytmu)

Średni dystans

Hamminga - błąd

detekcji (odporność

na błędy -

niezawodność)

8 6 4 10 0 8 2

Procent złączonych

punktów

(selektywność

algorytmu)

10 8 6 8 2 6 0

Na podstawie powyższej tabeli pokusiliśmy się o stworzenie zbiorczej tabeli

zawierającej agregaty w podziale na kategorie otrzymane w następujący sposób (w skład

danej kategorii wchodzą z odpowiednimi wagami kategorie wymienione powyżej) :

Szybkość działania z wagami 1 x Czas przetwarzania jednej klatki , 2 x Czas

przetwarzania jednego punktu charakterystycznego, 1 x Czas przetwarzania

jednego punktu złączenia. Uznaliśmy, że czas przetwarzaniu cechy obrazu jest

jednakże główną miarą jakości algorytmu, stąd jego dwukrotnie większy

wpływ na wagę kategorii szybkość.

Wiargodność z wagami 1 x Procent odnalezionych cech w obrazie i we

wzorcu, 1 x Procent złączonych punktów

Niezawodność, odporność na szumy i zakłócenia z wagami 1 x Średni dystans

Hamminga - błąd detekcji

Dzięki temu prezentujemy poniżej tabelę, która wystawia zbiorcze oceny algorytmom,

przy założeniu, że każda z trzech zbiorczych kategorii jest równie ważna (co stanowi

bezpieczne założenie albowiem należy szukać kompromisu pomiędzy szybkością działania,

niezawodnością działania oraz wiarygodnością uzyskanych wyników).

Oto wyniki :

Kategoria FAST GFTT ORB STAR DENSE HARRIS BRISK

Szybkość 8.5 6.5 4.5 4 6 5.5 1.5

Wiarygodność 8 8 5 9 3 6 0

Niezawodność,

odporność

8 6 4 10 0 8 2

Sumaryczny

wynik

8 7 4.5 7.5 3 6.5 1

Zgodnie z powyższą tabelą, należałoby wnioskować, że algorytm FAST jest

najlepszym algorytmem, algorytm STAR jest niewiele gorszy, kolejno GFTT oraz HARRIS,

podczas gdy algorytm ORB jest przeciętny, natomiast DENSE oraz BRISK wypadają w

przedstawionym zestawieniu znacznie poniżej przeciętnej. W rzeczywistości wiele zależy od

środowiska w którym przeprowadzamy testy przez co nie można na podstawie powyższej

tabeli jednoznacznie wyciągać tak dalekoidących wniosków. Niemniej jednak, wynik tego

porównania pokrywa się z prezentowanymi wynikami testów. Zatem algorytm FAST wydaje

się być bezpiecznym wyborem, tak samo jak GFTT, podczas gdy algorytm STAR wydaje się

być najdokładniejszy, kosztem wolniejszego działania. Stąd wniosek, że w zależności od

tego, na czym nam najbardziej zależy, należy wybierać różny algorytm.

Page 101: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

101

Zastosowanie w praktyce

W dzisiejszych czasach powstaje coraz więcej aplikacji wykorzystujących markery i

AR. Doskonałym przykładem są aplikacje reklamowe. Reklama 3D to rynek rosnący,

pozwalający użytkownikom na poznanie reklamowanego produktu w ciekawy sposób.

Ponadto zobrazowaliśmy wiele filtrów i innych przekształceń wykonywanych na

obrazie w czasie rzeczywistym, co stanowi ciekawą alternatywę dla dostępnych już na rynku

aplikacji przetwarzających obrazy wcześniej zapamiętane (np. Instagram).

W aplikacjach takich jak Instagram można wykorzystywać punkty charakterystyczne i

homografie do produkcji zdjęć paronamicznych, ale to zagadnienia wykraczające poza obszar

badań niniejszej pracy.

Warto wspomnieć, że możliwości aplikacji mobilnych wykorzystujących cechy

punktów charakterystycznych stają się coraz większe. Przykładowo telefon komórkowy

Samsung Galaxy S2, na którym przeprowadzano testy, posiada najniższe parametry

wystarczające do wykorzystania opisywanych algorytmów i AR. Model ma obecnie ponad 2

lata, więc możemy przyjąć, że jest średnim wyposażeniem sprzętowym korzystającym z usług

OS Android.

Możliwości będą rosły i należy przypuszcać, że aplikacje AR będą dynamicznie się

rozwijać. Być może zrewolucjonizują one rynek reklam albo spowodują, że zdjęcia i filmy

staną się łatwo dostępne wraz z edycją dla użytkowników smartfonów i tabletów, a nie tylko

osób posiadających kamery i aparaty fotograficzne wysokiej klasy.

Bibliografia : 1. Pavlenko Andrey: OpenCV for Android ECCV 2012: 1-35

2. Bradski Gary, Kaebler: Adrian Learning OpenCV Computer Vision with the OpenCV

Library O'Leary 2008

3. Laganière Robert: OpenCV Computer Vision Application Programming Cookbook Pack

Publishing 2012

4. Tuytelaars Tinne, Mikolajczyk Krystian: Local Invariant Feature Detectors ECCV 2010

5. Szeliski Richard: Computer Vision: Algorithms and Applications 2010

6. Baggio Daniel Lelis: Mastering OpenCV with Practical Computer Vision Projects Packt

Publishing 2011

7. The OpenCV Tutorials Release 2.4.4

8. Wolff David: OpenGL 4.0 Shading Language Cookbook Pack Publishing 2011

9. Bay, H., Tuytelaars, T., Van Gool, L.: SURF: Speeded up robust features. In

Ninth European Conference on Computer Vision ECCV 2006 : 404–417

10. Brown, D. C.: Close-range camera calibration. Photogrammetric Engineering,

1971 : 855–866.

Page 102: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

102

11. Collins Charlie, Galpin Michael, Kaeppler Matthias: Android w praktyce Helion 2012

12. Zuliani Marco: RANSAC for Dummies With examples using the RANSAC toolbox for

Matlab & Octave 2011

13. Zabrodzki Jan ( red. ): Grafika Komputerowa, metody i narzędzia, 1994, Wydawnictwo

Naukowo-Techniczne, ISBN 83-204-1716-3

14. Fergus Rob, Torralba Antonio, Fei Li Fei: Recognizing and Learning Object

Categories ICCV 2009

15. Leutenegger Stefan, Chli Margarita, Siegwart Roland: BRISK: Binary Robust Invariant

Scalable Keypoints. ICCV 2011: 2548-2555

16. Rublee Ethan, Rabaud Vincent, Konolige Kurt, Bradski Gary R: ORB: An efficient

alternative to SIFT or SURF. ICCV 2011: 2564-2571

17. Hartley Richard, Zisserman Andrew: Multiple view geometry in computer vision

Cambridge University Press 2003

18. Lowe David: Distinctive Image Features from Scale-Invariant Keypoints, 2004

19. http://www.prime-

junta.net/pont/How_to/100_Curves_and_Films/_Curves_and_films.html.

20. http://littlecheesecake.me/blog/13804625/feature-detectors-and-descriptors

21. http://computer-vision-talks.com/2012/08/a-battle-of-three-descriptors-surf-freak-and-

brisk/

Załączniki

Załącznik A - Właściwości kamer i kalibracja

Opiszemy teraz instrumenty matematyczne, dzięki którym możliwe jest symulowanie

podstawowych zachowań kamer. Przedstawimy wprowadzane przez kamery zniekształcenia i

pokażemy sposoby ich niwelowania.

Model i parametry wewnętrzne kamery

Analizując najprostszy model kamery (Pinhole camera model) możemy zgromadzić

niezbędne informacje na temat macierzy wewnętrznej jednej kamery, która jest kluczowa do

zrozumienia procesu kalibracji kamer. Najprostszy model kamery jest przestawiany jako

urojony mur z niewielką dziurą na środku. Światło wychodzi z oddalonego obiektu.

Promienie słoneczne przechodzą tylko przez dziurę na środku muru. W takim modelu obiekt

powstający na płaszczyźnie obrazu jest zawsze ostry, a jego wielkość zależy jedynie od

ogniskowej kamery.

Page 103: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

103

Rysunek 41: Bradski Gary, Kaebler: Adrian Learning OpenCV Computer Vision with the OpenCV Library

O'Leary 2008, Klasyczny model kamery małoobrazkowej

Z rysunku wynika równanie:

Stąd :

Zamieniając miejscami płaszczyznę obrazu i model kamery z rysunku, możemy przekształcić

wzór do postaci:

W rzeczywistym modelu kamery środek matrycy nie znajduje sie dokładnie na osi optycznej.

Z tego powodu do przedstawionego modelu trzeba dodać dwa dodatkowe parametry: cx oraz

cy. W rezultacie otrzymujemy prosty model, w którym obiekt rzeczywisty o współrzednych

(X, Y, Z) jest wyświetlany na dwuwymiarowym ekranie w miejscu o współrzednych (xekranu,

yekranu). Widzimy to poniżej.

(

)

(

)

gdzie:

F - rzeczywista ogniskowa, sx, sy - wielkości elementów, na których powstaje obraz

Parametry fx, fy, cx i cy są parametrami wewnętrznymi kamery, natomiast macierz utworzona z

tych parametrów nazywa sie wewnętrzna macierzą kamery:

Page 104: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

104

[

]

Macierz rotacji i wektor przesunięcia

Fotografując obiekt, możemy określić jego położenie względem systemu

współrzędnych kamery jako macierz rotacji oraz wektor przesunięcia. Rotacja może zostać

przedstawiona jako mnożenie wektora współrzędnych i macierzy kwadratowej o

odpowiednich rozmiarach. Rysunek 42 pokazuje rotacje jako mnożenie macierzy w dwóch

wymiarach. Rotacja w przestrzeni trójwymiarowej może zostać zdekomponowana jako

rotacja w dziedzinie dwuwymiarowej wokół każdej osi. Jeżeli obiekt w dziedzinie

trójwymiarowej będzie „przekręcany” w dziedzinie dwuwymiarowej kolejno dookoła osi x, y

oraz z, odpowiednio o kąty rotacji ψ, φ, θ, rezultatem będzie macierz rotacji R, na którą

składają sie macierze (ψ), (φ), i (θ), gdzie:

(ψ) = [

]

(φ) = [

]

(θ) = [

]

R = R(ψ) + R(φ) + R(θ)

Rysunek 42: Bradski Gary, Kaebler: Adrian Learning OpenCV Computer Vision with the OpenCV Library

O'Leary 2008, przekształcenie współrzędnych obiektu w przestrzeni na współrzędne kamery. Punkt P na

obiekcie jest widziany jako punkt p na płaszczyźnie obrazu. Wzajemne relacje miedzy punktami

(układami współrzędnych) opisuje macierz rotacji oraz wektor przesunięcia.

Page 105: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

105

Rysunek 43: Bradski Gary, Kaebler: Adrian Learning OpenCV Computer Vision with the OpenCV Library

O'Leary 2008, Rotacja punktu o kat θ jest jednoznaczna z rotacją układu współrzędnych o ten sam kąt.

Widać również, jak zmieniają się współrzędne punktu.

Wektor przesunięcia to sposób ukazania przesunięcia z jednego układu współrzędnych

do drugiego. Innymi słowy, jest to wektor reprezentujący offset między początkami układów

współrzędnych. Zbierając informacje na temat macierzy rotacji oraz wektora przesuniecia

można wyprowadzić równanie na położenie rzeczywistego punktu (punktu obiektu ze świata

trójwymiarowego) we współrzędnych kamery. Jeśli przyjmie się punkt Po jako punkt

rzeczywisty oraz punkt Pc jako ten sam punkt we współrzędnych kamery, relacja miedzy nimi

punktami wygląda następująco:

Pc = R(Po - T)

gdzie R to macierz rotacji, a T to wektor przesunięcia

Powyższe równanie wraz z równaniami dotyczącymi korekcji parametrów

wewnętrznych kamery tworzy układ równań, którego rozwiązywanie nazywa sie procesem

kalibracji kamery.

Kalibracja kamery

Kalibracja kamery jest operacją znajdowania wewnętrznych parametrów kamery oraz

parametrów odpowiedzialnych za powstawanie zniekształceń filmowanych obrazów. Znając

wszystkie współczynniki wewnętrzne kamer i parametry zniekształceń, można za pomocą

kolejnych operacji matematycznych stworzyć obrazy pozbawione zdeformowań. Do

przeprowadzenia procesu kalibracji kamery potrzebny jest obiekt o znanych kształtach i

rozmiarach. Jest on fotografowany wiele razy i w wielu różnych pozycjach. Następnie

powstałe obrazy biorą udział w procesie kalibracji.

Obiekt kalibrujący

Page 106: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

106

Obiekt biorący udział w procesie kalibracji może być dowolny, jednak jego wymiary

muszą być wiadome. Innymi słowy, punkty pochodzące z obiektu powinny być łatwe do

znalezienia, a odległości miedzy nimi znane. Dobrym i często wykorzystywanym obiektem w

procesie kalibracji jest szachownica. Punktami biorącymi udział w kalibracji są wewnętrzne

narożniki pól szachownicy. Odległości miedzy nimi łatwo mogą zostać zmierzone, gdyż

znana jest liczba pól, a więc wiadomo ile jest narożników i które wezmą udział w kalibracji.

Kolejnym argumentem uzasadniającym zastosowanie szachownicy jest fakt, iż istnieje wiele

algorytmów znajdujących jej narożniki, a zwracane położenia punktów na szachownicy mogą

zostać podane bezpośrednio jako dane wejściowe do algorytmu kalibrującego.

Zakładając, iż szachownica została wybrana jako obiekt wykorzystywany w procesie

kalibracji, należy zastanowić się, jak wiele narożników (zdjęć szachownicy) jest potrzebne do

przeprowadzenia kalibracji i uzyskania wysokiej jakości wyników. Wiadomo, że mamy

cztery parametry wewnętrzne kamery. Dodatkowo należy wyznaczyć pięć parametrów

zniekształceń oraz sześć parametrów odpowiedzialnych za rotację i przesunięcie miedzy

układami współrzędnych fotografowanego obiektu i kamery.

Postępując zgodnie z procedurą zawartą w Bradski Gary, Kaebler: Adrian Learning

OpenCV Computer Vision with the OpenCV Library O'Leary 2008, można stwierdzić, iż dwa widoki

szachownicy o rozmiarach 3x3 to wystarczająca liczba do kalibracji kamery. Praktyka

pokazuje jednak, że aby uzyskać wysokiej jakości wyniki należy użyć co najmniej dziesięciu

ujęć szachownicy o wymiarach 7x8. Pozycja na każdym ujęciu powinna być inna, gdyż tylko

w takim przypadku kalibracja zostanie przeprowadzona poprawnie.

Załącznik B - Stereowizja i geometria epipolarna

Przed przystąpieniem do opisu procesu rektyfikacji oraz wykorzystywanych w nim

algorytmów niezbędne jest zapoznanie się z pojęciem stereowizji oraz geometrii epipolarnej.

W tym podrozdziale zawarte są też informacje na temat macierzy zasadniczej i podstawowej.

Stereowizja

Stereowizja komputerowa to próba symulacji możliwości ludzkich oczu. Zakłada

postrzeganie tych samych obiektów świata trójwymiarowego dwiema kamerami odsuniętymi

od siebie na pewną odległość. Dzięki temu otrzymujemy dwa obrazy. Każdy punkt na obrazie

z jednej kamery odpowiada punktowi na obrazie z drugiej kamery. Punkty te są przesunięte o

daną odległość. Posiadając informacje na temat położenia korespondujących ze sobą punktów

oraz dane dotyczące odległości między kamerami, możemy, korzystając z algorytmów

stereowizyjnych, symulować zachowania ludzkich oczu. Jesteśmy na przykład w stanie

wyliczyć położenie tych punktów w przestrzeni trójwymiarowej, co prowadzi do otrzymania

trójwymiarowego obrazu.

W praktyce próba uzyskania trójwymiarowego obrazu składa sie z czterech kroków.

1. Matematyczne usuniecie zniekształceń powodowanych przez obiektywy, na przykład

zgodnie z procedurą kalibracyjna opisaną w poprzednim podrozdziale.

2. Dopasowanie kątów i odległości pomiędzy kamerami w procesie rektyfikacji.

Wynikiem są zrektyfikowane obrazy, dopasowane do siebie wierszami.

Page 107: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

107

3. Znalezienie tych samych cech w prawym i lewym obrazie, czyli korespondujących ze

sobą punktów. Po tym kroku otrzymujemy tzw. mapę rozbieżności między

korespondującymi punktami. Rozbieżności miedzy punktami to różnica

współrzędnych x tych punktów: xl - xr.

4. Znając geometryczne cechy kamer, możliwe jest przekształcenie mapy rozbieżności

na odległości miedzy punktami w rzeczywistym świecie. Ten krok nazywa się

reprojekcja. Dzięki niemu otrzymujemy mapę głębi.

Geometria epipolarna

Geometria epipolarna to geometria rzutowa pomiędzy dwoma widokami. Nie zależy

ona od filmowanej sceny, a jedynie od wewnętrznych parametrów kamer i ich położenia

względem siebie. Geometria epipolarna opiera się na przecięciach płaszczyzn obrazu.

Wszystkie płaszczyzny przecinają sie w jednej prostej, która łączy punkty główne kamer.

Załóżmy, ze obie kamery filmują jeden wspólny punkt X. Wtedy x jest obrazem punktu X w

widoku z pierwszej kamery, a punkt x’ jest jego obrazem z drugiej kamery. Wszystkie trzy

punkty leżą w jednej płaszczyźnie Π, są wiec współpłaszczyznowe.

Rysunek 44: Hartley Richard, Zisserman Andrew: Multiple view geometry in computer vision Cambridge

University Press 2003, (a) obserwowany punkt X, jego obraz na lewym obrazie x, jego obraz na prawym

obrazie x’ oraz punkty główne obu kamer C i C’ leżą na tej samej płaszczyźnie Π. (b) Znając położenie

punktu x oraz punkty główne kamer, można stwierdzić, ze obraz punktu X na prawym obrazie musi leżeć

na linii l’.

Załóżmy, ze znamy tylko położenie punktu x i chcemy znaleźć położenie punktu x’.

Płaszczyzna Π jest określona przez punkt x oraz podstawowe linie. Wiadomo, że punkt x’

musi leżeć na płaszczyźnie Π, a więc szukany punkt leży na linii l’ łączącej płaszczyznę Π z

płaszczyzną prawego obrazu.

Linia l’ jest linią epipolarną w odniesieniu do punktu x. W stereowizji nie trzeba zatem

przeszukiwać całej płaszczyzny prawego obrazu w celu znalezienia punktu x’ - obszar

poszukiwań można zagęścić do linii l’.

Geometryczne wielkości opisujące geometrie epipolarna widoczne są na rysunku 44b i

oznaczają:

Epipole (e lub e’) - punkty przecięcia linii podstawowej z płaszczyzną obrazu.

Płaszczyzna epipolarna - płaszczyzna zawierająca linię podstawową (np. płaszczyzna

na rysunku 44a).

Page 108: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

108

Linia epipolarna – linia, w której przecina sie płaszczyzna epipolarna z płaszczyzną

obrazu (np. linia l’ na rysunku 44b).

Macierz zasadnicza i podstawowa

Macierz zasadnicza E zawiera informacje na temat rotacji i przesunięć, które łączą

widoki z obu kamer (Rysunek 46). Macierz podstawowa F obejmuje takie same dane,

wzbogacone o parametry wewnętrzne obu kamer.

Rysunek 45: Hartley Richard, Zisserman Andrew: Multiple view geometry in computer vision Cambridge

University Press 2003, przykład geometrii epipolarnej.

Rysunek 46: Bradski Gary, Kaebler: Adrian Learning OpenCV Computer Vision with the OpenCV Library

O'Leary 2008, macierz zasadnicza E zawierająca informacje na temat rotacji i przesunięć miedzy

kamerami w systemie stereowizyjnym

Macierz podstawowa przedstawia relacje punktów na płaszczyźnie obrazu jednej

kamery, we współrzędnych obrazu, do punktów na płaszczyźnie obrazu drugiej kamery,

również we współrzędnych obrazu. Macierz zasadnicza pokazuje wzajemną relację punktów

w przestrzeni fizycznej. Nie zawiera natomiast danych dotyczących wzajemnego położenia

punktów we współrzędnych obrazu.

Page 109: PRACA DYPLOMOWA INŻYNIERSKA - repo.pw.edu.plInzynierska+Piotr+Guzik.pdf · 1 Rok akademicki 2013/2014 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut

109

Macierz zasadnicza

Jeśli przyjmiemy punkt widziany przez obie kamery jako P, macierz zasadnicza E

pokazuje relacje, we współrzędnych fizycznych, punktu P widzianego przez lewą kamerę

(punkt pl), do tego samego punktu widzianego przez prawą kamerę (punkt pr). Postępując

zgodnie z rozumowaniem przedstawionym w Bradski Gary, Kaebler: Adrian Learning OpenCV

Computer Vision with the OpenCV Library O'Leary 2008, można wykazać, że wzajemna relacja

miedzy punktami pl i pr jest określana przez macierz podstawową i wyraża się wzorem:

Macierz podstawowa

Z praktycznego punktu widzenia ciekawszym zagadnieniem jest wzajemna relacja

miedzy punktami na badanych obrazach, określana we współrzędnych obrazu. Aby znaleźć

relacje pomiędzy punktem na jednym obrazie i odpowiadającą mu linia epipolarną na drugim

obrazie, należy posłużyć sie parametrami wewnętrznymi obu kamer. Jeżeli za punkt ql

przyjmiemy obraz punktu P na lewym obrazie, we współrzędnych obrazu, a za punkt qr obraz

punktu P na prawym obrazie, w analogicznych współrzędnych, to postępując zgodnie ze

schematem przedstawionym w Bradski Gary, Kaebler: Adrian Learning OpenCV Computer Vision

with the OpenCV Library O'Leary 2008, okaże się, iż relacja między tymi punktami określana jest

przez macierz podstawową i opisywana jest wzorem:

Wzajemna relacja miedzy macierzą podstawową a macierzą zasadnicza opisana jest wzorem:

F =

Rektyfikując obrazy z lewej i z prawej kamery dochodzimy do sytuacji, w której

macierz podstawowa i macierz zasadnicza są takie same, E = F.