PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji...

105
1 Rok akademicki 2014/2015 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych Instytut Informatyki PRACA DYPLOMOWA MAGISTERSKA Piotr Guzik Metody kalibracji kamer i wyznaczania ich pozycji w przestrzeni 3W Opiekun pracy Dr inż. Piotr Garbat Ocena: ..................................................... ................................................................ Podpis Przewodniczącego Komisji Egzaminu Dyplomowego

Transcript of PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji...

Page 1: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

1

Rok akademicki 2014/2015

Politechnika Warszawska

Wydział Elektroniki i Technik Informacyjnych

Instytut Informatyki

PRACA DYPLOMOWA MAGISTERSKA

Piotr Guzik

Metody kalibracji kamer i wyznaczania ich pozycji

w przestrzeni 3W

Opiekun pracy

Dr inż. Piotr Garbat

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

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

Podpis Przewodniczącego

Komisji Egzaminu Dyplomowego

Page 2: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

2

Kierunek: Informatyka

Specjalność: Inżynieria Systemów Informatycznych

Data urodzenia: 1991.08.12

Data rozpoczęcia studiów: 2014.02.24

Ż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. Pracę dyplomową inżynierską obroniłem z wynikiem bardzo dobrym w

lutym 2014 r., a następnie kontynuowałem naukę na macierzystym wydziale na studiach drugiego

stopnia w ramach tej samej specjalności. W październiku 2014 r. rozpocząłem pracę w firmie e-

point S.A. jako młodszy programista aplikacji JEE oraz trener metodyk zwinnych wytwarzania

oprogramowania, w szczególności Scrum. Moim największym hobby jest fotografia, którą staram

się łączyć z podróżowaniem po świecie i poznawaniem obcych kultur, architektury, kuchni,

historii oraz obyczajów.

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

Podpis studenta

EGZAMIN DYPLOMOWY

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

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

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

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

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

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

Page 3: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

3

STRESZCZENIE

Celem pracy jest przedstawienie metod kalibracji kamery oraz jej wpływu na wyznaczanie

położenia kamery w przestrzeni 3W. Praca zawiera opis procesu kalibracji kamery na

platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce

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

charakterystycznych w obrazach w celu rozpoznawania obrazów wzorcowych (znaczników).

W pracy zbadano zachowanie poszczególnych algorytmów przy zmianie rozmiarów obrazu,

kalibracji kamery z wykorzystaniem różnych wzorców. Ze szczególną uwagą przyjrzano się

wpływowi kalibracji kamery na detekcję znaczników oraz prawidłowe znajdowanie położenia

kamery i generowania rzeczywistości rozszerzonej. 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, kalibracja kamery, rzeczywistość rozszerzona,

rozpoznawanie obrazów, AR, OpenCV, OS Android, Gradle, Inteliji IDEA

Title: Camera calibration methods and position discovery in 3D space

This paper shows different camera calibration algorithms and methods. The main aim is to

reasearch and discover how camera calibration affects position discovery in 3D space.

Furthermore it is shown how calibration process affects algorithms based on feature points

which can be used for their detection and description. The paper presents details of

implementation working with OS Android. Special attention was paid to analysis of tests of

available camera calibration patterns together with different strategies that can be used to

achieve low reprojection errors and 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, Camera Calibration, Augmented Reality, Pattern Recognition, AR,

OpenCV, OS Android, Gradle, Inteliji IDEA

Page 4: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

4

1. Spis treści

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

1 Wstęp .................................................................................................................................. 7

1.1 Cele i zakres pracy ....................................................................................................... 7

1.2 Struktura i treści pracy ................................................................................................. 7

2 Proces kalibracji kamery ..................................................................................................... 8

2.1 Opis kalibracji kamery ................................................................................................. 8

2.1.1 Model małoobrazkowy i macierz wewnętrzna kamery ........................................ 8

2.1.2 Przekształcanie współrzędnych obiektu na współrzędne kamery ........................ 9

2.1.3 Kalibracja kamery .............................................................................................. 13

2.1.4 Wzorzec kalibracyjny ......................................................................................... 14

2.2 Wykorzystanie rzeczywistości rozszerzonej AR ....................................................... 15

2.2.1 Rzeczywistość Rozszerzona ............................................................................... 15

2.2.2 Aplikacje mobilne: ............................................................................................. 16

2.2.3 Inne przykłady wykorzystania AR ..................................................................... 19

2.2.4 Android OS ........................................................................................................ 22

3 Cechy obrazu i wybrane algorytmy bazujące na nich ...................................................... 23

3.1 Cechy obrazu ............................................................................................................. 23

3.2 Algorytmy bazujące na cechach obrazu .................................................................... 25

3.2.1 FAST .................................................................................................................. 25

3.2.2 Detektor Harrisa ................................................................................................. 27

3.2.3 Algorytm GFTT - Good Features To Track ....................................................... 30

3.2.4 ORB .................................................................................................................... 31

3.2.5 STAR .................................................................................................................. 32

3.3 Wybór algorytmów .................................................................................................... 32

4 Przegląd narzędzi .............................................................................................................. 33

4.1 Android SDK oraz proces tworzenia aplikacji .......................................................... 33

4.2 Gradle ........................................................................................................................ 33

4.3 OpenCV ..................................................................................................................... 33

4.3.1 Opis najważniejszych metod i algorytmów wykorzystanych z biblioteki

OpenCV. ........................................................................................................................... 34

Page 5: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

5

4.4 Pozostałe wykorzystane biblioteki ............................................................................ 36

4.4.1 Apache Commons Math ..................................................................................... 36

4.4.2 Google Guava ..................................................................................................... 36

4.4.3 OpenCSV ........................................................................................................... 37

4.4.4 OpenGL .............................................................................................................. 37

4.4.5 Google Gson ....................................................................................................... 37

5 Implementacja oraz opis aplikacji .................................................................................... 37

5.1 Pakiety domenowe aplikacji ...................................................................................... 37

5.1.1 Pakiet calibration ................................................................................................ 38

5.1.2 Pakiet adapters .................................................................................................... 38

5.1.3 Pakiet filetrs ........................................................................................................ 38

5.1.4 Pakiet matcher .................................................................................................... 38

5.1.5 Pakiet główny ..................................................................................................... 38

5.2 Wzorce projektowe .................................................................................................... 39

5.2.1 Korzyści użycia wzorców .................................................................................. 39

5.2.2 Wzorzec strategii ................................................................................................ 40

5.2.3 Wzorzec budowniczego ..................................................................................... 41

5.2.4 Wzorzec adapter ................................................................................................. 42

5.3 Przekazywanie danych pomiędzy Activity, a w szczególności danych związanych z

kalibracją kamery oraz wykorzystanie tych danych przez poszczególne Activity .............. 42

5.4 Opis procesu kalibracji kamery ................................................................................. 43

5.5 Opis generacji rzeczywistości rozszerzonej .............................................................. 48

5.6 Badanie efektywności aglorytmów detekcji oraz wpływu kalibracji kamery na

algorytmy detekcji oraz generacje rzeczywistości rozszerzonej .......................................... 54

6 Metodyka badań ................................................................................................................ 61

6.1.1 Metody testowania ............................................................................................. 62

6.2 Wyniki testów ............................................................................................................ 63

6.2.1 Wyniki testowania procesu kalibracji ................................................................ 63

6.2.2 Wyniki testowania wpływu procesu kalibracji na detekcję, deskrypcję cech w

obrazie oraz łączenie podobnych scen .............................................................................. 77

6.2.3 Wyniki testowania wpływu procesu kalibracji na renderowanie rzeczywistości

rozszerzonej ...................................................................................................................... 99

7 Podsumowanie i wnioski końcowe ................................................................................. 102

7.1 Wnioski końcowe .................................................................................................... 102

Page 6: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

6

7.2 Perspektywy rozwoju .............................................................................................. 102

7.3 Zastosowanie w praktyce ......................................................................................... 103

Bibliografia ........................................................................................................................... 104

Page 7: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

7

1 Wstęp W niniejszej pracy ukazane są różne metody kalibracji kamery w przestrzeni 3W.

Obejmuje ona wyniki badań dotyczących wpływu różnych wzorców kalibracji na jakość

uzyskanych efektów uprzednio skalibrowanej kamery do detekcji punktów

charatkerystycznych. Istotny jest wpływ kalibracji kamery na wybrane algorytmy detekcji

cech obrazu. Przedstawiony zostanie również praktyczny wpływ niwelowania zniekształceń

kamery na generowanie rzeczywistości rozszerzonej i poprawę jakościową wyszukiwania

zadanego wzroca w przestrzenii 3W.

1.1 Cele i zakres pracy

Celem pracy jest zbadanie procedury kalibracji kamery dla urządzeń mobilnych z

wykorzystaniem wzorców kalibracyjnych ze względu na zastosowane wzorce kalibrazyjne i

metodykę obliczeń oraz określenie wpływu zakłóceń i niedokładności kamer wbudowanych

w urządzenia mobilne działające pod system operacyjnym Android.

W ramach pracy zbadano również, czy spośród znanych algorymtów detekcji cech obrazu są

takie, których efekt działania jest wyraźnie różny w zależności od przeprowadzeniu procesu

kalibracji. Sprawdzono, czy można wykorzystać kalibrację do poprawy wyznaczania pozycji

znaczników, służących do generowania AR. W ramach zakresu pracy powstała aplikacja na

OS Android, która umożliwia opisane powyżej operacje.

1.2 Struktura i treści pracy

Rozdział pierwszy stanowi wstęp pracy. Zawiera krótki jej opis, a także

przedstawienie postawionych celów.

W rozdziale drugim przedstawiono definicję oraz wykorzystane metody procesu

kalibracji kamery. Ponadto przedstawiono definicję rzeczywistości rozszerzonej oraz

praktyczne przykłady jej zastosowania. Przybliżono również platformę Android wraz z jej

historią.

Trzeci rozdział zawiera opis wybranych algorytmów detekcji cech w obrazie. Zawiera

również opis cech w obrazach. W trzecim rozdziale uzasadniono wybór algorytmów detekcji i

ekstrakcji cech w obrazach, które będą podlegały testowaniu.

Czwarty rozdział przedstawia przegląd narzędzi, które zostały wykorzystane w trakcie

tworzenia pracy. bibliotek programistycznych, które zostały wykorzystane w trakcie pisania

kodu aplikacji. Szczególnie przybliżone zostaną w nim arkana pracy z biblioteką OpenCV

oraz jej implementacją w języku Java.

Piąty rozdział przedstawia opis implementacji aplikacji. Przedstawiono w nim

szczegóły dotyczące krytycznych aspektów działania programu.

Szósty rozdział poświęcony propozycji metryk testowych oraz sposobów

przeprowadzania testów. Zawiera również wyniki wraz z analizą z przeprowadzonych testów.

Page 8: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

8

Ostatni, siódmy rozdział, zawiera podsumowanie niniejszej pracy dyplomowej razem

z wnioskami. Zawiera on opis zgodności osiągniętych wyników z założeniami, a także

proponowane perspektywy rozwinięcia zagadnienia poruszanego w ramach projektu.

2 Proces kalibracji kamery Wraz ze wzrostem popularności urządzeń mobilnych, rośnie liczba wbudowanych

kamer umożliwiających przetwarzanie oraz analizę obrazu. Istotnym zagadnieniem jest

pozyskiwanie obrazu w wysokiej jakości i bez zbędnych i szkodliwych, dla jakości obrazu,

zniekształceń i przekłamań. Aby to umożliwić, przedstawimy jedno z możliwych rozwiązań

poprawy jakości przetwarzanych obrazów, czyli proces kalibracji kamery i korekcji

zniekształceń geometrycznych.

2.1 Opis kalibracji kamery

Przedstawimy odpowiedni model matematyczny, który umożliwia symulację

podstawowych zachowań kamery. Wprowadzimy i opiszemy wprowadzone przez kamery

zniekształcenia oraz wskażemy sposoby ich niwelowania.

2.1.1 Model małoobrazkowy i macierz wewnętrzna kamery

Najprostszym modelem kamery jest model kamery otworkowej (ang. pinhole camera).

Kluczowym pojęciem, niezbędnym do zrozumienia procesu kalibracji jest pojęcie macierzy

wewnętrznej kamery. Model małoobrazkowy przedstawiany jest jako urojony mur z

niewielką przysłoną na środku. Promienie słoneczne przechodzą jedynie przez przysłonę,

pośrodku muru. W tym modelu obiekty powstające na płaszczyźnie obrazu są zawsze ostre, a

ich wielkość zależy jedynie od długości ogniskowej kamery.

Rysunek 1: Bradski Gary, Kaebler: Adrian Learning OpenCV Computer Vision with the OpenCV Library

O'Leary 2008, Klasyczny model kamery małoobrazkowej

Z zależności geometrycznych wynika równanie:

Page 9: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

9

Stąd :

Zamieniając miejscami płaszczyznę obrazu i model kamery z rysunku, możemy przekształcić

wzór do postaci:

Niestety, rzeczywisty model kamery cechuje się tym, że środek matrycy może nie znajdować

się 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). Opisują to równania :

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, i ma następującą postać :

2.1.2 Przekształcanie współrzędnych obiektu na współrzędne kamery

Wprowadzimy pojęcia macierzy rotacji oraz wektora przesunięcia. Położenie obiektu,

obserwowanego w scenie można określić względem systemu współrzędnych kamery z

wykorzystaniem wspomnianej macierzy rotacji oraz wektora przesunięcia. Dzięki temu

dostajemy matematyczny opis przekształcania współrzędnych w ukłądzie współrzednyc

związnych z obiektem na współrzędne kamery. Rysunek 2 obrazuje rotację kamery 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:

(ψ) =

Page 10: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

10

(φ) =

(θ) =

R = R(ψ) + R(φ) + R(θ)

Rysunek 2: 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.

Rysunek 3: Bradski Gary, Kaebler: 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.

Page 11: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

11

Matematycznym opisem odwzorowania przesunięcia z jednego układu współrzędnych

do drugiego jest wektor przesunięcia. Inaczej mówiąc, jest to wektor realizujący przesunięcie

między środkami dwóch różnych układów współrzędnych. Mając dane macierz rotacji oraz

wektor przesunięcia, można wyprowadzić równanie na położenie rzeczywistego punktu

(punktu obiektu ze świata trójwymiarowego) odwzorowane 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 tymi 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 stanowi razem z równaniami dotyczącymi korekcji parametrów

macierzy wewnętrznej kamery tworzy układ równań, którego rozwiązywanie jest nazywane

procesem kalibracji kamery. Warto zauważyć, że parametry wewnętrzne kamery oraz

zewnętrzne wiąże relacja, dzięki której można wyznaczyć transformację perspektywiczną,

która przeprowadza punkty z przestrzenii 3D w przestrzeń 2D. Wyraża się ona następująco :

Mając daną macierz wewnętrzną kamery (zawierającą parametry wewnętrzne) :

i macierz zewnętrzną kamery (zawierającą parametry zewnętrzne) :

przechodząc do jednorodnych współrzędnych można zapisać relację łączącą macierze

wewnętrzną i zewnętrzną jako :

gdzie M jest nazywana macierzą projekcji. Macierz projekcji definiuje się po to, aby

uzyskać współrzędne w pikselach. Korzystając ze współrzędnych jednorodnych można

wyznaczyć współrzędne w pikselach dzięki następującemu równaniu :

Page 12: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

12

Zatem, dzięki macierzy projekcji M oraz relacji wiążącej macierz wewnętrzną i

zewnętrzną, można wyznaczyć odwzorowanie punktów z przestrzenii 3D w przestrzeń 2D.

Ściśle powiązanym zagadnieniem dotyczącym kalibracji kamery są zniekształcenia

oraz ich korekcja, która jest skutkiem poprawnie przeprowadzonego procesu kalibracji.

Zniekształcenia toru optycznego zazwyczaj modeluje się zwykle jako radialne, styczne

(tangensowe) oraz liniowe. Zniekształcenia radialne powodują przesunięcie współrzędnych na

obrazie w sposób promienisty i mają decydujący wpływ na dokładność pomiarów. Można je

aproksymować za pomocą równania (gdzie ( ) jest układem kamery) :

gdzie , ... są współczynnikami zniekształcenia radialnego

Zwykle stosuje się od jednego do trzech współczynników, co wystarcza do kompensacji

zniekształceń tego rodzaju. Zniekształcenia styczne, które są prostopadłe do radialnych,

wynikają z faktu, iż środki krzywizny soczewek obiektywu nie zawsze są dokładnie

współliniowe. Modeluje się je za pomocą następującego wyrażenia :

gdzie i są współczynnikami zniekształceń stycznych. Zniekształcenia liniowe

mogą być opisane za pomocą pojedynczego współczynnika krzywizny. Powstają gdy osie

układu obrazowego nie są idealnie prostopadłe do siebie. Na wartość błędu wprowadzanego

przez zniekształcenia liniowe ma wpływ precyzja wykonania przetwornika zastosowanego w

kamerze.

Uwzględniając w modelu kamery zniekształcenia, można podać następujące

parametry wewnętrzne do procedury kalibracji:

– dwuelementowy wektor długości ogniskowej , którego elementy są liniową zależnością

ogniskowej kamery i współczynników wynikających z przeliczenia rozmiaru pikseli w obu

osiach z jednostek metrycznych do obrazowych, wyrażony w pikselach

– dwuelementowy wektor , zawierający rzeczywiste współrzędne położenia środka

rzutowania punktów na obrazie, tzw. punktu głównego

– współczynnik krzywizny zniekształceń liniowych, który określa kąt skręcenia pomiędzy

osiami pikseli w kierunku poziomym i pionowym na matrycy

– pięcioelementowy wektor zniekształceń , zawierający współczynniki zniekształceń

radialnych i stycznych, gdzie

Dla wprowadzonych parametrów wewnętrznych oraz znormalizowanych

współrzędnych obrazowych punktu rzeczywiste współrzędne punktu z uwzględnieniem

równań określających zniekształcenia radialne i styczne można zapisać jako (gdzie ( ) to

znormalizowane współrzędne w układzie obrazowym) :

=

Page 13: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

13

gdzie jest wektorem zniekształceń stycznych postaci:

Uwzględniając wektor ogniskowej kamery, faktyczne położenie środka obrazu i

współczynnik krzywizny, współrzędne punktu w układzie obrazowym można przedstawić

jako :

Powyższe zależności przedstawia się często w postaci równania macierzowego:

=

gdzie jest macierzą wewnętrzną kamery. Zatem elementy macierzy oraz wektor

zniekształceń można uzyskać wraz z parametrami zewnętrznymi kamery w wyniku

procesu kalibracji.

2.1.3 Kalibracja kamery

Operacja odnajdywania parametrów macierzy wewnętrznej kamery, lub inaczej,

parametrów wewnętrznych kamery oraz parametrow określających zniekształcenia powstałe

w trakcie rejestracji obrazu nazywana jest kalibracją kamery. Jednym z zastosowań procesu

kalibracji jest niwelowanie zniekształceń obrazu. Aby skutecznie przeprowadzić kalibrację

kamery potrzebny jest obiekt o znanych kształtach i rozmiarach, zwany wzorcem (lub

obiektem) kalibrującym. Znany wzorzec jest wielokrotnie fotografowany, z możliwie różnych

kątów oraz pozycji kamery. Dzięki temu, różnorodne obrazy wzorca biorą dalszy udział w

procesie kalibracji.

Page 14: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

14

Rysunek 4: Przykład wielu ujęc wzorca w celu kalibracji kamery

2.1.4 Wzorzec kalibracyjny

Obiekt, o znanych wymiarach, który bierze udział w kalibracji kamery może posiadać

dowolny, ale znany kształt. Innymi słowy, cechy obrazu pochodzące ze wzorca powinny być

szybkie do znalezienia, a odległości pomiędzy nimi znane. Najprostszym i często

wykorzystywanym obiektem w procesie kalibracji jest prostokątna szachownica. Punktami,

które biorą udział w procesie są wewnętrzne narożniki pól szachownicy. Odległości miedzy

nimi są znane, gdyż wiadomo, ile pól ma szachownica, a więc wiadomo ile jest narożników

iktóre wezmą udział w kalibracji. Z praktycznego punktu widzenia zastosowania szachownicy

umożliwia podanie położenia punktów narożników bezpośrednio do algorytmu

przeprowadzającego kalibrację, co ułatwia proces testowania jakości rozwiązania.

Zakładając, że wzorcem kalibrującym jest szachownica, należy odpowiedzieć na

pytanie, jak wiele narożników (różnych ujęć szachownicy) jest potrzebne do przeprowadzenia

kalibracji i uzyskania wysokiej jakości wyników. Jak wiadomo, mamy cztery parametry

wewnętrzne kamery. Dodatkowo chcemy wyznaczyć pięć parametrów zniekształceń oraz

sześć parametrów tworzących macierz rotacji i wektor 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ż minimum

ujęć, stanowią 2 zdjęcia szachownicy o rozmiarach 3x3. Praktyka pokazuje jednak, że aby

uzyskać wysokiej jakości wyniki należy użyć co najmniej pięciu ujęć szachownicy o

wymiarach 7x8. Pozycja na każdym ujęciu powinna być inna, gdyż tylko w takim przypadku

kalibracja zostanie przeprowadzona poprawnie.

Page 15: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

15

Rysunek 5: Wzorzec kalibrujący, jako prostokątna szachownica

2.2 Wykorzystanie rzeczywistości rozszerzonej AR

W tym rozdziale przedstawimy pojęcie rzeczywistości rozszerzonej oraz jej

wykorzystanie w otaczającym nas świecie. Złożonym problemem związanym z AR jest

poprawne osadzanie świata wirtualnego (rzeczywistości rozszerzonej) w świecie

rzeczywistym, tak aby użytkownik mógł "zanurzyć" się w świecie wirtualnym. Dzięki

zastosowaniu kalibracji kamery oraz wynikowemu zmniejszeniu się zniekształceń można

minimalizować problemy związane z przetwarzaniem obrazu takie jak : gubienie

rozpoznawanego znacznika pomimo jego widoczności w oknie kamery, utrata renderowania

AR podczas gwałtownych zmian w natężeniu oświetlenia, czy też minimalizacja odległości

na ekranie użytkownika wyrenderowanej AR od środka rozpoznawanego znacznika.

Analiza sklepu Google Play, który gromadzi aplikacje stworzone na system Android,

dowodzi, że coraz większa liczba aplikacji mobilnych posiada funkcjonalności wspierające

AR.

2.2.1 Rzeczywistość Rozszerzona

Rzeczywistość Rozszerzona (ang. Augmented Reality, AR), jako termin została

wprowadzona przez Ronalda Azuma, jako rozwinięcie terminu rzeczywistości wirtualnej w

2001 roku. AR jest terminem określającym sposoby łączenia scen rzeczywistych z

wirtualnymi bytami generowanymi przez komputer. Co ważne, połączenie elementów

wirtualnych i rzeczywistych zachodzi w czasie rzeczywistym. Ogólnie definicja

Rzeczywistości Rozszerzonej uwypukla następujące cechy:

łączenie scen wirtualnych i rzeczywistych,

interaktywność w czasie rzeczywistym,

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

Page 16: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

16

Przedstawiona definicja nie ogranicza AR jedynie do łączenia obrazów, ponieważ

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

przypadku wykorzystania Rzeczywistości Rozszerzonej percepcja użytkownika zostaje

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

Podstawą działania systemów AR jest odszukanie oraz ciągłe śledzenie wybranych

punktów odniesienia na scenie rzeczywistej w celu odpowiedniego naniesienia na nią

obiektów wirtualnych. Większość rozwiązań opiera się na detekcji i śledzeniu kształtów,

krawędzi i innych cech obrazu. Istnieje również zastosowanie nawigacyjne, detekcja struktur

na obrazie może zostać wzbogacona o dane o położeniu pochodzące z odbiornika GPS lub

kompasu.

2.2.2 Aplikacje mobilne

W przypadku aplikacji moblinych i zastosowaniach AR dominują programy

nawigacyjne oraz gry. Zaprezentujemy teraz przykładowe aplikacje dostępne obecnie na

telefonach komórkowych.

Aplikacja Intiaro jest przykładem zastosowania AR w aplikacji mobilnej. Dzięki tej

aplikacji możemy wirtualnie urządzać swoje mieszkanie z wykorzystaniem dostępnych

modeli mebli dostarczanych przez producentów. Dzięki rzeczywistości rozszerzonej możliwe

jest również mierzenie pokoju w celu sprawdzenia, czy mebel o danych wymiarach zmieści

się w zadanej przestrzenii. Aby wygenerować w aplikacji modele 3D mebli, należy

wydrukować czarno - biały znacznik i nakierować kamerę urządzenia na niego.

Rysunek 6: Przykład działania aplikacji Intiaro

Page 17: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

17

Rysunek 7: Przykład wygenerowanej AR w aplikacji Intiaro

Innym przykładem aplikacji wykorzystującej AR jest Sky Map. Jest to aplikacja

napisana przez firmę Google. Po skierowaniu urządzenia na nocne niebo, łączy gwiazd w

konstelacje, wskazuje mgławice oraz większe skupiska gwiazd. Co więcej, natychmiast

kieruje nas do widocznych plante. Dodatkowo, można śledzić ruch gwiazd, ich odległość.

Umożliwia dzielenie się swoimi wrażeniami oraz odkryciami poprzez media

społecznościowe. W przypadku Sky Map nie potrzeba drukowanego znacznika. Naturalnym

wzorcem jest gwiaździste niebo, które ze względu na wysoki kontrast gwiazd względem tła

jest idealnym obiektem podlegającym śledzeniu.

Rysunek 8: Przykład wygenerowanych planet i zbiorów giwazd w aplikacji Sky Map

Page 18: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

18

Rysunek 9: Przykład wygenerowanych konstelacji gwiazd w aplikacji Sky Map

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.

Page 19: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

19

2.2.3 Inne przykłady wykorzystania AR

Rzeczywistość rozszerzona jest również wykorzystywana w trakcie transmisji

sportowych, np. do wyświetlania istotnych informacji (np. linii spalonego) wirtualnie

nałożonych na obraz boiska nadawany na żywo. AR wykorzystuje się również w celu

prezentowania reklam 3D podczas transmisji. Mogą one być różne i spersonalizowane dla

każdej ze stacji telewizyjnych nadających dany program, a tym samym skierowane do

widzów w konkretnym regionie nadawania.

Rysunek 10: Przykład generacji AR w transmisji meczu piłkarskiego w telewizji

Coraz częstszym zastosowaniem systemów AR jest leczenie różnych lęków oraz

zaburzeń. Przykładami mogą być leczenie klaustrofobii poprzez przeniesienie użytkownika w

świecie wirtualnym do mniejszego pokoju, kiedy wie on, że w rzeczywistości znajduje się w

komfortowym pod względem wielkości pomieszczeniu. Innym przykładem może być

leczenie arachnofobii, poprzez wirtualne obcowanie z wygenerowanymi pająkami. Coraz

częściej sztaby wojsk lądowych decydują się na leczenie choroby stresu pourazowego u

powracających z misji żołnierzy, właśnie wykorzystując systemy AR, które przenoszą

rannych ponownie w miejsce kojrzące się z traumą.

Page 20: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

20

Rysunek 11: Przykład generacji AR w celu leczenia arachnofobii

Rysunek 12: Przykład generacji AR w celu leczenia stresu pourazowego u komandosa

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. Analogicznym rozwiązaniem, obecnie dostępnym jedynie w celach

developerskich jest produkt, kupiony przez Facebooka, okulary Oculus Rift. Dzięki Oculus

Rift można pisać gry komputerowe, wykorzystujące AR. Pomysł polega na tym, że gracz

zakłada na oczy Oculus Rift i na ekranie monitora widzi generowane obiekty 3D, które

zapewniają dodatkowe doznania. Niestety, istotnym problemem są obecnie względy

zdrowotne. Po około 10 - 15 minutach korzystania z Oculus Rift wiele osób skarży się na

zawroty głowy oraz uczucie nudności. Aplikacja demo, ktora jest dostępna w sieci, umożliwia

wirtualną przejażdżkę Roller Costerem, co pokazuje następne zastosowanie w celach

symulacyjno - rozrywkowych.

Page 21: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

21

Rysunek 13: Google glass

Rysunek 14: Oculus Rift - zestaw do celów developerskich

Page 22: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

22

Rysunek 15: Oculus Rift - zastosowanie dla użytko masowego, interaktywna gra

2.2.4 Android OS

System Android powstał w firmie Android Inc, która w 2005 roku została kupiona

przez Google. Od tej pory firma Google dba o standardy i wydaje kolejne wersje systemu.

Android jest systemem operacyjnym z rodziny Linux i jest przeznaczony dla urządzeń

mobilnych takich jak telefony komórkowe, smartfony, tablety. W chwili pisania pracy jest to

najbardziej popularny system mobilny na świecie. Android nie jest typową dystrybucją

Linuksa, ale jest oparty na jego jądrze. Android zrzesza bardzo liczną grupę developerów

tworzących aplikacje. W sierpniu 2014 było dla tego systemu dostępnych ponad 1,3 miliona

aplikacji w oficjalnym sklepie Google Play (wcześniej Android Market). Autor zdecydował

się napisać aplikację działającą na urządzeniach z tym systemem operacyjnym ponieważ sam

posiada urządzenia działające pod tym systemem oraz językiem programowania na platformę

Android jest Java.

2.2.4.1 Wersje Androida oraz ich wsparcie w aplikacji

System Android posiada wiele wersji. Każda kolejna wprowadza pewne innowację i

ułatwia korzystanie ze sprzętu działającego na danym systemie operacyjnym. W marcu 2015

najnowszą wersją systemu była wersja 5.1 Lollipop. Autor postanowił wspierać możliwie jak

najwięcej urządzeń działających na systemie Android i zdecydował się napisać aplikację,

która działa na każdym systemie Android w wersji 4.0 lub nowszej. Warto wspomnieć, że

przełomowe wersje systemu to wersja 3.0 oraz 4.0. Wersja 3.0 została wprowadzona na

tablety i umożliwiła tworzenie aplikacji z wykorzystaniem fragmentów (możliwość

łatwiejszego tworzenia współdzielonych szablonów widoków w aplikacji). Największe

zmiany wprowadziła wersja 4.0, dzięki której tworzenie aplikacji stało się jeszcze prostsze, a

dodatkowo zysk wydajnościowy aplikacji był znaczący. Większość nowoczesnych bibliotek

wspiera systemy w wersji 4.0 i wyższej. Możliwe jest wówczas korzystanie z gotowych

komponentów takich jak galeria obrazów, przetwarzanie asynchroniczne przy żądaniach

HTTP, czy też wykorzystanie wzorca wstrzykiwania zależności. Jest to bardzo ważne

Page 23: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

23

ponieważ oprogramowanie powinno spełniać akronim SOLID. W szczególności klasy nie

powinny być ściśle ze sobą powiązane a programowanie powinno polegać na określaniu

kontraktu metod poprzez interfejsy. Klasy nie powinny zależeć od implementacji a od

abstrakcji. Umożliwia to efektywne testowanie i ułatwia programowanie. Udział procentowy

systemów operacyjnych zmienia się w czasie. Poniżej wykres ze stanem na marzec 2015

roku:

Rysunek 16 procentowy udział wersji systemu Android - stan na marzec 2015

Jak widać udział urządzeń wspierających system 4.0 i wyższy jest znaczący.

3 Cechy obrazu i wybrane algorytmy bazujące na nich Rozdział ten ma na celu przybliżenie pojęcia cech obrazu oraz przykładowych

algorytmów operujących na nich. Dodatkowo przedstawiamy argumentację, dlaczego w

dalszej części pracy zdecydowaliśmy się na konkretne algorytmy, ignorując pozostałe.

3.1 Cechy obrazu

Detekcja, ekstrakcja oraz łączenie cech obrazu to kluczowym zagadnieniem tej pracy.

Aby lepiej zrozumieć w jaki sposób renderowania jest AR, należy poznać sposób opisu cech

w obrazie. Wiedza ta jest użyteczna, ponieważ kluczowym zagadnieniem dla poprawnego

prezentowania rzeczywistości rozszerzonej jest poprawne rozpoznawanie znacznika oraz

wyznaczenie pozy kamery w przestrzeni 3W. Aby tego dokonać, należy rozumieć, w jaki

sposób działają algorytmy, które odnajdują w scenie zadany znacznik. Algorytmy

wykorzystywane w tym celu przetwarzają cechy obrazu i na podstawie najlepiej ocenionych

jakościowo cech podejmują decyzję, czy znacznik występuje w scenie oraz jakie jest jego

położenie w przestrzeni 3W. Dlatego znajomość cech obrazu wraz z ich opisem jest

kluczowa.

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

się w określone struktury:

krawędzie,

linie,

zakończenia linii,

rogi,

Page 24: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

24

skupiska (blobs) – koła lub kule,

tekstury,

grzbiety (ridges) i szkielety.

Rysunek 17: Przykład wykrytych na twarzy ludzkiej cech w obrazie

Jedną z metod detekcji powyższych struktur w obrazie jest filtracja. Dzięki zastosowaniu

filtru uzyskujemy w odpowiedzi liczby rzeczywiste. Rozróżniamy dwa typy filtrów : 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).

Jedną z głównych zalet zastosowania cech w opisie obiektów jest możliwość

oszczędności rozmiaru pamięci potrzebnego do przetwarzania obiektu. Cechy ułatwiają

przeprowadzenie operacji odnajdywania odpowiadających sobie elementów w sekwencjach

obrazów (kolejnych klatkach). Aby skutecznie operować na punktach charakterystycznych

niezbędne są pewne ich własności:

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

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

zmianą oświetlenia pola obserwacji,

niewielka złożoność obliczeniowa,

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

Cechy obrazu, typowo, wyznacza się, śledząc zmiany wartości pikseli lub wyliczając

statystyki wartości w pewnym otoczeniu danego piksela. Większość algorytmów detekcji

opiera się na progowaniu. Przekroczenie zadanego progu detekcji wskazuje na występowanie

danej cechy. Przykładami klasycznych detektorów „narożników” są deketory Harrisa oraz

FAST. Zostaną one przybliżone w dalszej części pracy, wraz z innymi wybranymi

algorytmami.

Istotnym faktem jest, że dzięki algorytmom, które ograniczeniają się do przetwarzania

punktów charakterystycznych możliwe jest znaczące zwiększenie szybkości porównywania

obrazów. Algorytm analizujący wszystkie piksele i zestawiający każdy z nich między

obrazami jest niewydajny. Ponadto nie daje pewności, że rozpatrywane piksele są znaczące i

niezmienne w czasie. Dlatego, analizuje się skupiska pikeli cechujące się, o ile to możliwe,

Page 25: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

25

niezmiennością w zależności od rotacji, przesunięcia i skali. W literaturze są one nazywane

punktami kluczowymi lub charakterystycznymi.

Typowym i sprawdzonym podejściem do przetwarzania obrazów jest trójfazowy algorytm

polegający na:

detekcji cech obrazu,

wydobyciu opisu (deskryptorów), cech,

znalezieniu odpowiadających sobie cech dwóch obrazów.

Rysunek 18: Przykład łączenia w pary odpowiadających sobie cech w dwóch obrazach

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

generujące rzeczywistość rozszerzoną (AR).

3.2 Algorytmy bazujące na cechach obrazu

Metody operujące na cechach, w pierwszej fazie, wyszukują punkty szczególne w

danych obrazach. Następnie szukają odpowiedających sobie cech w dwóch obrazach i na

podstawie ich położenia wyliczają wektor przemieszczenia między nimi. Efektywność

algorytmu w znacznym stopniu zależy od jakości wyszukanych punktów szczególnych i

jakości ich opisu. Idealny algorytm powinien wykrywać tylko takie punkty, które są

niezależne od zmian w oświetleniu, położeniu i orientacji obrazu, a także w pewnym stopniu

od zmian punktu widzenia czy skali (czyli odporne i niezmiennicze).

3.2.1 FAST

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

znacznej niezmienniczości wyszukanych cech względem obrotu, przesunięcia oraz

skalowania. Operuje na obrazach w skali szarości.

3.2.1.1 Podstawy algorytmu

Kryterium segmentacji bazuje na okręgu stworzonym przez 16 pikseli (typowo, jest to

domyślna wartość) wokół badanego punktu p (Rosten & Drummond, Machine learning for

high-speed corner detection). Punkt p zostanie uznany za punkt, wtedy i tylko wtedy, gdy w

okręgu istnieje co najmniej 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 Rysunku 19. Prezentowany test segmentowy wykonany jest dla .

Dla tej wartości, odrzucanie punktów, niebędących punktami kluczowymi jest łatwe, gdyż

wystarczy sprawdzić 4 piksele: pierwszy, piąty, dziewiąty i trzynasty – odpowiadające

kierunkom zegarka. Jeśli ta część testu wypadnie pomyślnie, należy sprawdzić wszystkie

pozostałe punkty.

Page 26: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

26

Rysunek 19: Test segmentowy wykrywający narożniki w obrazie dla n = 12. Źródło: (Rosten & Drummond, Machine

learning for high-speed corner detection)

3.2.1.2 Metody niwelujące oddziałowywanie punktów niemaksymalnych

Wadą testu segmentowowego jest fakt, że nie oblicza wartości funkcji odpowiedzi dla

punktów szczególnych. Stad wprost wynika, że wytłumienie oddziaływania punktów

niebędących maksymalnymi nie jest możliwe bezpośrednio po ich wykryciu. Z tego powodu

należy wyznaczyć pewną funkcję 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 dyskretne, 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, o następującej reprezentacji matematycznej:

gdzie

Page 27: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

27

3.2.2 Detektor Harrisa

Detektor narożników Harrisa jest jednym z najstarszych algorytmów przetwarzania

cech w obrazach. Został opracowany w 1988 roku i do dziś jest wykorzystywany.

Charakteryzuje go niezmienniczość względem przesunięć 2D oraz obrotów, niewielkich

zmian nasycenia światła oraz kąta widzenia (Sonka, Hlavac, & Boyle, 2008). Ponadto,

ważnym aspektem jest niska złożoność obliczeniowa. Jest on wrażliwy na znaczne zmiany

skali obiektów oraz duże zmiany kontrastu. Podobnie jak algortytm FAST, przetwarza obrazy

w skali szarości.

3.2.2.1 Podstawy algorytmu

Głównym założeniem detektora Harrisa jest wykorzystanie faktu, że jasności pikseli w

otoczeniu narożnika będą silnie zmienne w wielu kierunkach. Algorytm jest rozwiniętą i

zmodyfikowaną wersją algorytmu Moravca, który jest najprostszym dostępnym detektorem

narożników. Detektor Moravca wykrywał punkty o największym kontraście, które

klasyfikowane były jako narożniki lub ostre krawędzie. Obliczenia polegały na przesuwaniu

lokalnej, prostokątnej maski w różnych kierunkach oraz obliczaniu średniej zmiany jasności.

Algorytm rozróżnia trzy przypadki:

1. Jeśli badane regiony mają niezmienną jasność, przesunięcie okna nie spowoduje

zmiany tej wartości.

2. Jeśli okno leży na krawędzi, przesunięcie go równolegle do krawędzi nie spowoduje

znacznej zmiany wartości, natomiast przesunięcie prostopadłe do krawędzi wywoła

dużą i zauważalną zmianę.

3. Jeśli okno leży na narożniku, wówczas dowolne przesunięcie okna spowoduje dużą

zmianę wartości.

Zmiana wartości okna E związana z przesunięciem o wektor (x,y) wyraża się następujacym

wzorem:

gdzie w opisuje okno: Przesunięcia (x,y) pochodzą ze zbioru .

Wprowadzamy ustalenie, że jedność występuje w obrębie prostokątnego regionu, zero poza

nim, gdzie obraz wejściowy opisany symbolem I. Detektor Moravca poszukuje lokalnego

maksimum dla min{E} powyżej pewnej wartości progowej zwaną wartością odcięcia.

Detektor Moravca, ze względu na swoją prostotę, nie rozwiązaywał pewnych bardziej

złożonych problemów. Jego rozwinięcie oraz poprawa najbardziej znaczących uchybień

pozwoliła skonstruować detektor Harrisa. Problemy te wraz z rozwiązaniami

zaproponowanymi przez algorytm Harrisa, opisano poniżej (Harris & Stephens, 1988).

1. Odpowiedź detektora Moravca nie jest izotropowa, ponieważ rozważane są tylko

przesunięcia co 45°. Rozwiązaniem tego problemu jest określenie wszystkich

Page 28: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

28

pośrednich przesunięć, dokonując analitycznego rozwinięcia wokół punktu

startowego:

gdzie gradienty przybliżane są jako:

A zatem, dla niewielkich przesunięć, E można zostać jako:

gdzie

2. Odpowiedź detektora Moravca nie jest pozbawiona szumów i zakłóceń. Przyczyną

jest kształt okna, czyli prostokąt. Aby rozwiązać ten problem – należy użyć bardziej

gładkiego, kolistego kształtu okna, na przykład gaussowskiego:

3. Detektor zbyt często zwraca wysokie odpowiedzi rozważając krawędzie, ponieważ

tylko minimum funkcji E jest brane jest pod uwagę. Rozwiązanie – 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:

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

Funkcja E jest podobna do lokalnej funkcji autokorelacji, z macierzą M opisującą jej

kształt w badanych punktach. Jeżeli przez α, β oznaczymy wartości własnei macierzy M, to α

i β będą proporcjonalne do krzywizn funkcji autokorelacji, tworząc niezmienniczy względem

obrotu opis macierzy M. Analogicznie jak w przy detektorze Moravca, musimy rozważyć trzy

przypadki

Page 29: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

29

A. Jeśli obie krzywizny są małe, co

oznacza, że funkcja autokorelacji jest

płaska, wówczas badany region obrazu

jest podobnej jasności. Oznacza to, że

przesunięcie okna w każdym kierunku

nie zmienia w znaczący sposób

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 kierunku

prostopadłym do grzbietu wprowadza

zmiany w E. Oznacza to, że mamy do

czynienia z krawędzią, gdyż

przesunięcie wzdłuż grzbietu nie

zmienia znacząco E.

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.

Na rysunku 20 mamy wykres przestrzeni (α, β). Teoretycznie, krawędź miałaby

wysoką wartość α oraz zerową β, jednak w rzeczywistości β przyjmie wartość większą od

zera, ale niewielką w porównaniu do α. Dzieje się tak ze względu na szumy, pikselizację oraz

kwantyzację skali jasności. Narożnik będzie opisany wysokimi wartościami α oraz β, o

porównywalnej wartości, natomiast region płaski, o niewielkim kontraście da niewielkie

wartości α i β. Jeżeli kontrastu w obrazie o wzrośnie o wartość p, to spowoduje wzrost α oraz

β proporcjonalnie o . Zatem jeśli (α,β) należy do części wykresu opisującej krawędzie,

powinno również do niej należeć, dla dodatnich wartości p. Analogicznie

odpowiadać będą narożniki. Z tych powodów przestrzeń (α,β) podzielona jest jak na rysunku

20.

3.2.2.2 Funkcja odpowiedzi narożnika

Aby efektywnie klasyfikować narożniki, oprócz opisanego powyżej podziału

przestrzeni krzywizn, niezbędna jest pewna miara, która określa stopień jakości odpowiedzi

narożnika. Pomaga to w identyfikacji maksymalnych narożników.

Funkcja taka, oznaczona jako R, musi być funkcją, zależną jedynie α oraz β. Nie może

być ona zależna od żadynch dodatkowych parametrów. Tylko wtedy, zachowa

niezmienniczość względem obrotów. Aby algorytm działał wydajnie, ślad macierzy M oraz

jej wyznacznik. Pozwoli to uniknąć bezpośredniego, kosztownego czasowo, obliczania

wartości własnych tej macierzy. A zatem (Harris & Stephens, 1988):

β

α

narożniki

krawędzie

krawędzie płasko

Rysunek 20: Przestrzeń krzywizn autokorelacji.

Page 30: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

30

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

Funkcja R przyjmuje wartości dodatnie dla narożników, ujemne dla krawędzi oraz

oscyluje wokół zera dla regionów o niewielkim kontraście. Trzeba zauważyć, że wraz ze

wzrostem kontrastu obrazu, zwiększa się wartość odpowiedzi narożnika. Regiony o podobnej

barwie rozpoznawane są poprzez opadanie wartości śladu poniżej ustalonej wartości odcięcia,

będącej de facto wartością progową. Wartość parametru k jest mechanizmem sterującym

algorytmu. W literaturze (Sonka, Hlavac, & Boyle, 2008) wykazano, że optymalne działanie

detektora wykazywane jest, gdy jego wartość mieści się w przedziale (0,04; 0,15). Piksel

uznawany jest jako narożnik, jeśli jest to lokalne maksimum dla funkcji odpowiedzi.

3.2.3 Algorytm GFTT - Good Features To Track

W 1994 Jianbo Shi oraz Carlo Tomasi, w swojej pracy „Good Features to Track”,

zaproponowali dalsze modyfikacje detektora Harrisa. Dzięki temu, uzyskali jeszcze lepsze

wyniki w porównaniu do klasycznego detektora krawędzi Harrisa. W algorytmie klasycznym

Harrisa funkcja oceniająca ma postać:

Shi oraz Tomasi postulowali jej modyfikację do postaci:

Semantycznie oznacza to, że jeżeli wartość funkcji oceny przekracza pewną ustaloną wartość

progową, wówczas tak samo jak w algorytmie Harrisa punkt jest uznanwany za narożnik.

Wykres funkcji w wymiarze , wygląda następująco:

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

wartości minimalnej, , mamy wierzchołek.

Page 31: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

31

Analiza rysunku 21 jest podobna jak rysunku 20. Pomarańczowe obszary oznaczają

krawędzie, szary obszar to obszar o niewielkiej różnicy w barwie (kontraście). Algorytm

GFTT wyszukuje N najsilniejszych wierzchołków w obrazie. Operuje na obrazach w skali

szarości. Wprowadza się jeszcze jedną dodatkową wartość progową, która określa próg

jakości wierzchołka. Jeżeli wartość ta, nie jest osiągnięta, wówczas, wszystkie badane

wierzchołki są odrzucane i nie będą uznane za narożniki. Aby ostatecznie wybrać N

najlepszych wierzchołków, wprowadza się miarę jakościową opartą o minimalny dystans w

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

wykryte wierzchołki i wybieramy N najlepszych.

3.2.4 ORB

3.2.4.1 Detektor

Detekor ORB oparty jest na algorytmie BRIEF i jest jego rozszerzeniem. Zasadnicza

różnica między ORB a BRIEF to fakt, że w ORB jest niezmienność wobec rotacji. ORB

wykorzystuje detektor FAST, a dodatkowo jako deskryptor wykorzystuje BRIEF wraz z

rotującym się wzorcem. Na podstawie silnych zmian orientacji wybiera się optymalny

wzorzec.

Detektor wykorzystuje również koncepty znane z algorytmu Harrisa. Oblicza

wskaźniki jakości narożników metodą Harrisa w celu uporządkowania punktów

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

podstawie momentów geometrycznych oraz poziomu intensywności centroidy. Centroidę

definiujemy jako:

Wektor rozpinający od środka narożnika do centroidy, zwany orientacją, ma postać :

Jest to ważna modyfikacja, której nie ma pierwotnie FAST.

3.2.4.2 Desktryptor

ORB poddaje wzorzec serii obrotów. Następnie, należy wiedzieć, że ORB cechuje

niepewność i rozbieżności, względem algorytmu BRIEF, ponieważ punkty kluczowe z

uwzglednioną rotacją mają gorsze własności przy testach binarnych.

W celu minimalizacji rozbieżności względem BRIEF stosuje sięuczenie maszynowe.

Bazę wiedzy poszerza się z wykorzystaniem rotujących wzorców jako zbioru trenującego.

Dzięki temu można uzyskać mniejszą zależność od obrotów.

Page 32: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

32

Przy detekcji wykorzystywany jest algorytm FAST, następnie mamy wybór N

najlepszych punktów, czego dokonuje się poprzez algorytm Harrisa. Następnie dodaje się do

nich orientacę, której nie daje algorytm FAST.

Do opisu cech używa się algorytmu BRIEF, ale nie daje on niezmienniczości 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 współrzędne pikseli. Przy

wykorzystaniu orientacji obliczonej jako kąt , wyznaczana jest również macierz rotacji.

Zostaje ona zaaplikowana wobec macierzy . W efekcie powstaje wysterowana macierz .

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, co

przyspiesza działanie algorytmu.

3.2.5 STAR

Detektor STAR jest modyfiacją detektora CenSurE (Center Surrounded Extrema).

Detektor CenSurE używa wielokątów takich jak kwadraty, sześciokąty i ośmiokąty, w celu

przybliżenia okręgów. STAR aproksymuje okręgi poprzez pary nakładających się na siebie

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

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

Pierwsza faza algorytmu polega na nałożeniu na obraz par kwadratów. Następnie

wykonuje się aproksymację LoG poprzez Lapasjan lub krzywą Gaussa. Dzięki temu

definiujemy regiony 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.

3.3 Wybór algorytmów

Na podstawie wyników uzyskanych w pracy inżynierskiej [17] oraz uwzględnionych

w niej metryk oceniających jakość algorytmów, wybrano najlepsze, które zostały

wykorzystane w aplikacji. Wyniki działania algorytmów prezentowały się następująco:

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ższymi wynikami dalej będziemy wykorzystywać jedynie algorytmy FAST,

GFTT, STAR, HARRIS, ORB. Zrezygnowano z dalszego badania algorytmów DENSE oraz

BRISK. Ponadto zgodnie z uzyskanymi wynikami w pracy inżynierskiej nie będą

Page 33: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

33

analizowane wyniki pracy algorytmów w trybie grid, a jedynie w wersji pyramid, jako że ten

adapter okazywał się najpraktyczniejszy. Autor bardzo żałuje, że nie dane mu było

przetestować algorytmów SIFT oraz SURF, ale niestety są licencjonowane i ich

wykorzystanie jest płatne.

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

4.1 Android SDK oraz proces tworzenia aplikacji

Aby tworzyć aplikację na platformę Android niezbędne jest wykorzystanie Android

SDK. Jest to zbiór narzędzi wspomagających implementację w języku Java. Android SDK

wspiera wiele środowisk programistycznych np. Inteliji IDEA, Eclipse czy Android Studio.

Ważne jest, że aplikacja na platformę Android może powstawać w innym języku niż Java.

Autor pracy zdecydował się na pozostanie przy języku Java, niemniej jednak możliwe jest

programowanie w języku C i korzystanie z natywnego interfejsu Androida.

4.2 Gradle

Gradle wspiera imperatywny sposób deklaracji zależności. Gradle wykorzystuje

repozytoria Mavena, więc ma identyczne możliwości, jeżeli chodzi o dostępność bibliotek.

Co więcej zapis deklaracji zależności jest zdecydowanie bardziej zwięzły niż w przypadku

Mavena. Skrypt budowania jest zdecydowanie krótszy, w przypadku aplikacji ponad 2 razy

krótszy. Gradle ma składnię podobną do Anta, przez co umożliwia definiowanie złożonych

tasków, oraz praktycznie dowolną konfigurację procesu budowania aplikacji. Dzięki

wykorzystaniu procesu demona w trakcie budowania aplikacji udało się uzyskać 30% lepszy

czas w przypadku budowania naszej aplikacji. Gradle w przeciwieństwie do Mavena nie

cierpi na pewnego rodzaju chorobę informatyczną znaną jako Frameworkitis. Chorobę tę

można zdefiniować następująco (cytat z Ericha Gammy): Frameworkitis – "choroba"

polegająca na tym, że framework próbuje zrobić za dużo lub nie w taki sposób w jaki

chciałbyś (ale nie możesz tego zmienić). Poniżej wspomniany cytat:

"Przyjemnie jest otrzymać tyle funkcjonalności za darmo, ale w pewnym momencie okazuje

się, że aby móc uzyskać to co chcesz, musisz zmagać się z frameworkiem zamiast korzystać z

niego. Na tym etapie zaczynasz przegrywać, bo ciężko jest zmusić framework do działania w

kierunku nieprzewidzianym przez jego twórców."

4.3 OpenCV

Biblioteka OpenCV jest najpopularniejszą biblioteką służącą do przetwarzania

obrazów wykorzystywaną na platformie Android. Biblioteka napisana jest w języku C. Aby

skutecznie wykorzystywać ją na OS Android należy skorzystać z wrappera napisanego w

języku Java, który wykorzystując natywny interfejs wywołuje odpowiednie metody z

biblioteki. Dodatkowo warto wiedzieć, że istnieje OpeCV Manager, który pozwala zarządzać

Page 34: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

34

instalacjami biblioteki OpenCV na urządzeniu. Istotną zaletą tego rozwiązania jest fakt, że

biblioteka instaluje się w telefonie osobno i nie obciąża tworzonej aplikacji. Najważniejszym

zastosowaniem biblioteki OpenCV w aplikacji jest możliwość kalibracji kamery przy pomocy

różnych wzorców, wykrywanie cech w obrazie, wyszukiwanie obrazu na podstawie wzorca.

4.3.1 Opis najważniejszych metod i algorytmów wykorzystanych z biblioteki OpenCV

Poniżej opiszemy kilka najważniejszych algorytmów oraz funkcji wykorzystywanych

w bibliotece OpenCV. Przedstawimy kontrakt (interfejsy) poszczególnych metod.

4.3.1.1 Wyszukiwanie wzorca kalibracji

Metoda bool findChessboardCorners(InputArray image, Size patternSize,

OutputArray corners,

int flags=CALIB_CB_ADAPTIVE_THRESH+CALIB_CB_NORMALIZE_IMAGE )

Metoda ta wyszukuje w obrazie prostokątną szachownicę jako wzorzec kalibracji.

Opis parametrów :

image – Źródłowy obraz szachownicy.

patternSize – rozmiar szachownicy określający wiersze i kolumny szachownicy.

corners – wynikowy wektor wykrytych narożników.

flags – zbiór flag, których opis jest następujący :

o CV_CALIB_CB_ADAPTIVE_THRESH - korzystaj z adaptacyjnego progu do

konwersji obrazu z kolorowego na czarno-biały, zamiast sztywnej liczbowej

wartości progowej. Adaptacyjny próg polega na wyliczeniu średniego poziomu

jasności obrazu.

o CV_CALIB_CB_NORMALIZE_IMAGE - poddaj normalizacji histogram obrazu

przed poddaniem obrazu apdatacji na czarno-biały obraz.

o CALIB_CB_FAST_CHECK -wykonaj szybkie sprawdzenie czy obraz przypomina

szachownicę. Jeżeli wynik jest negatywny zakończ pracę algorytmu. Występowanie

tej flagi znacząco przyspiesza przetwarzanie klatek, jeżeli nie prezentujemy wzorca

szachownicy, którego szukamy.

Metoda próbuje określić, czy przetwarzana klatka, jest wzorcem szachownicy, po czym

próbuje zlokalizować narożniki szachownicy. Funkcja zwraca true wartość w przypadku

powodzenia. Dla przykładu szachownica 8 x 8 posiada 7 x 7 wewnętrznych rogów, czyli

miejsc, gdzie czarne kwadraty stykają się ze sobą.

4.3.1.2 Pozbywanie się zniekształceń w obrazie na podstawie procesu kalibracji kamery

Metoda void undistort(InputArray src, OutputArray dst, InputArray cameraMatrix,

InputArray distCoeffs, InputArray newCameraMatrix=noArray() )

Metoda przekształca obraz wejściowy aby skompensować zniekształcenia soczewki.

Opis parametrów :

src – wejściowy (zniekształcony) obraz

dst – wyjściowy (poprawiony, skompensowany) obraz, który jest tego samego

rozmiaru oraz typu co obraz wejściowy src.

Page 35: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

35

cameraMatrix – macierz wewnętrzna kamery .

distCoeffs – wektor współczynników zniekształceń

kamery składa się z 4, 5 lub 8 elementów.

newCameraMatrix – macierz wewnętrzna kamery, dla obrazu zniekształconego.

Domyślnie jest to kopia cameraMatrix, ale można podać inną znaną macierz.

Metoda przekształca obraz, aby skompensować radialne oraz tangensoidalne zniekształcenia

soczewki. Funkcja interpoluje pozyskaną macierz obrotu i translacji kamery i

przemapowywuje piksele z obrazu wejściowego. Jeżeli w obrazie wynikowym po

transformacji, nie ma odpowiadających pikseli w obrazie wejściowym, to wypełniane są te

piksele zerami (kolor czarny). Wynikiem jest modyfikacja macierzy kamery.

4.3.1.3 Wyszukiwanie homografii

Aby wyszukać przekształcenie pomiędzy dwiema płaszczyznami (np. w celu weryfikacji, czy

dwie klatki są podobne) możemy użyć metody :

Mat findHomography (InputArray srcPoints, InputArray dstPoints, int method=0,

double ransacReprojThreshold=3, OutputArray mask=noArray() )

Opis parametrów :

srcPoints – obraz oryginalny (jako macierz punktów).

dstPoints – obraz docelowy (porównywany)

method – flaga określająca metodę porównawczą. Oto dostępne metody :

o

o 0 - metoda porównująca każdy punkt z każdym

o CV_RANSAC - metoda opierająca się o RANSAC-a

o CV_LMEDS - metoda najmniejszych kwadratów

ransacReprojThreshold – wartość progowa, dla algorytmu RANSAC,

określająca,czy punkt jest uznawany za należący do zbioru wynikowego, czy też nie.

Jeżeli obrazu są dostarczone jako zbiory pikseli, to sensowną wartością tego

parametru jest przedział <1, 10>

mask – opcjonalna maska dla algorytmów RANSAC lub metody najmniejszych

kwadratów.

Metoda znajduję i zwraca perspektywiczną transformację pomiędzy obrazem źródłowym a

docelowym (w szczególności pomiędzy ich płaszczyznami). Można to zapisać tak :

zatem błąd reprojekcji jest następujący:

Page 36: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

36

celem funkcji jest jego minimalizacja. Jeżeli wykorzystywane są wszyskie punkty, to jest to

zwykła metoda najmniejszych kwadratów.

Jeżeli, nie korzystamy ze wszystkich par punktów ( , ) w celu

dopasowania odpowiedniej transformacji (oznacza to, że będziemy mieli niedopasowane

niektóre pary), to wówczas bazowe liczenie błędu reprojekcji będzie dawało niezadowalające

wyniki. W takim wypadku należy skorzystać z bardziej odpornych metod

RANSAC lub LMeDS. Najlepsze dopasowanie jest wykorzystane do finalnej estymacji

macierzy homografii oraz maski określającej dopasowane oraz niedopasowane pary.

Niezależnie od metody, odpornej na zakłócenia lub też nie, wyliczona macierz homografii jest

poddawana optymalizacji Levenberg-Marquardt aby jeszcze zmniejszyć finalny błąd

reprojekcji.

Metoda RANSAC potrafi działać nawet przy bardzo dużej liczbie niedopasowanych par,

jednakże wymaga podania odpowiedniego, wyznaczonego eksperymentalnie progu, aby

rozróżniać poprawnie dopasowane pary od niedopasowanych. Metoda LMeDS nie wymaga

podawania żadnego progu, ale działa poprawnie jedynie w przypadku, gdy mamy ponad 50%

poprawnych złączeń. W przypadku jeżeli mamy wysoką jakość scen oraz niewiele

niedopasowanych par, najdokładniejsza, ale również najbardziej podatna na zakłócenia jest

metoda łącząca każdą parę z każdą.

Metoda jest wykorzystywana do znalezienia macierzy wewnętrznej oraz zewnętrznej.

Macierz homografii jest zależna od skali. Dlatego też podlega normalizacji . Jeżeli

nie uda się wyliczyć macierzy H, wówczas zostanie zwrócona pusta macierz.

4.4 Pozostałe wykorzystane biblioteki

OpenCV jest kluczową biblioteką wykorzystywaną w projekcie. Niemniej jednak,

wykorzystano kilka innych bibliotek. Poniżej przedstawimy zasadność i cele ich użycia w

aplikacji.

4.4.1 Apache Commons Math

W celu przyspieszania operacji matematycznych wykorzystywanych przy filtrach

barwnych oraz liczeniu krzywych użyłem biblioteki Apache Commons. Jest to bardzo

przejrzyście napisana biblioteka. Zysk wydajnościowy wynosi około 15% względem własnej

implementacji operacji matematycznych, dlatego warto z niej korzystać.

4.4.2 Google Guava

Jest to biblioteka pochodząca od firmy Google. Wprowadza ona wiele statycznych

metod do wygodnej obsługi kolekcji, napisów oraz wspomaga programowanie defensywne

(fail fast) poprzez asercje oraz programowanie funkcyjne (poprzez predykaty). Wykorzystanie

biblioteki guava zwiększa czytelność kodu i zniechęca do samodzielnego tworzenia metod do

operacji na kolekcjach, dlatego warto z niej korzystać.

Page 37: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

37

4.4.3 OpenCSV

Biblioteka OpenCSV służy do wygodnego generowania plików CSV. Dzięki użyciu

tej biblioteki wystarczy zdefiniować nagłówki kolumn i już można pisać kolejne wiersze do

pliku CSV. Decyzja o tworzeniu plików CSV podyktowana jest faktem, że jest to wygodny

format do przechowywania wyników testów. Z formatu CSV łatwo przejdziemy do Excela,

dzięki czemu generacja wykresów oraz praca z danymi w celu ich obróbki będzie

przyjemnością.

4.4.4 OpenGL

Bibliotek OpenGL jest niezbędna w celu generacji modelu AR w aplikacji.

Zdecydowałem się na jej użycie ponieważ nie chciałem wykorzystywać gotowych bibliotek

takich jak Vuforia. Decyzja ta podyktowana jest faktem, że celem aplikacji jest badanie

algorytmów i ich modyfikacja a nie sama generacja obiektów 3D. Standard OpenGL

umożliwia w prosty sposób generację prostych obiektów 3D, które symulują w aplikacji

rzeczywistość rozszerzoną.

4.4.5 Google Gson

W systemie Android występuje potrzeba przesyłania danych pomiędzy

poszczególnymi Activity. Aby skutecznie serializować i deserializować dane pomiędzy

Activity takie jak : macierze kamer, parametry kamery, błąd reprojekcji zdecydowałem

przesyłać je w formacie JSON. Biblioteka Gson zapewnia mapowania obiektów Javy do

formatu JSON i odwrotnie.

5 Implementacja oraz opis aplikacji W ramach praktycznej części tej pracy powstała aplikacja użytkowa. Została ona

napisana jako rozbudowa aplikacji powstałej w wyniku pracy inżynierskiej [cytowanie

autor.]. Najważniejszymi funkcjonalnościami aplikacji jest możliwość detekcji punktów

charakterystycznych z wykorzystaniem wybranego algorytmu, Możliwość zbierania metryk

pomiarowych w celu porównywania działania poszczególnych algorytmów, Generacja

rozszerzonej rzeczywistości na podstawie wykrytego znacznika będącego predefiniowanym

obrazem bogatym w cechy, możliwość kalibracji kamery z wykorzystaniem różnych wzorców

kalibrujących. Dodatkowe funkcjonalności aplikacji związane z przetwarzaniem obrazów taki

jak mieszanie kanałów barwnych w obrazie, czy też wykorzystywanie filtrów splotu działa

bez zmian względem pracy inżynierskiej. Zgodnie z dobrymi praktykami programowania

obiektowego aplikacja posiada wydzielone klasy do poszczególnych funkcjonalności i

odpowiedzialności za poszczególne operacje. Poniżej opiszemy najważniejsze z

architektonicznego punktu widzenia rozwiązania.

5.1 Pakiety domenowe aplikacji

Zgodnie z filozofią DDD (Domain Driven Design) kod aplikacji powinien być

grupowany poprzez odpowiedzialność (logikę biznesową, domenową), a nie poprzez funkcje

architektoniczne które pełni (np. model, kontroler). Dlatego też w aplikacji zgrupowano kod

wraz z logiką za którą odpowiada w następujących pakietach.

Page 38: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

38

5.1.1 Pakiet calibration

Pakiet calibration odpowiada za grupowanie logiki klas, które realizują kalibrację

kamery. Dla wygody konfiguracji mamy tutaj enumerator określający wzorzec obiektu

kalibrującego (szachownica, symetryczne koła, asymetryczne koła). Analogicznie, mamy też

enumerator służący za flagi wykorzystane w procesie kalibracji kamery. Dla wygody

prezentacji i porównania obrazu z kamery przed i po kalibracji mamy abstrakcyjną klasę

FrameRenderer, której implementacje obrazują na ekranie skalibrowaną kamerę, porównanie

skalibrowanej kamery bądź nieskalibrowaną kamerę. Klasa CameraCalibrator to klasa

odpowiadająca za proces kalibracji. Klasa ta kalibruję kamerę na podstawie zadanego wzorca

oraz oblicza średni błąd reprojekcji. Klasa CalibrationActivity, zgodnie z nomenklaturą

Androida odpowiada za możliwość wywołania przez użytkownika procesu kalibracji. To

właśnie w tej klasie mamy obsługę interakcji z użytkownikiem, który może konfigurować

poprzez menu ustawienia kalibratora kamery oraz po przeprowadzeniu procesu kalibracji

przejść do innych funkcjonalności aplikacji.

5.1.2 Pakiet adapters

Klasa CameraProjectionAdapter znajdująca się w tym pakiecie odpowiada za

przeliczanie współrzędnych obliczonych w openCV na współrzędne do openGL. Wynikową

operacją jest generacja macierzy projekcji kamery.

5.1.3 Pakiet filetrs

W pakiecie filters zgromadzone są różne implementacje filtrów. Mamy tutaj klasy

filtrujące kolory (mieszają barwy kolorów w obrazie wynikowym), filtry krzywych, filtry

splotowe, oraz przede wszystkim filtry generujące AR. Działanie filtra AR polega na

znalezieniu pozy kamery. Zakładając, że wiemy, że znaleźliśmy szukany wzorzec w obrazie z

kamery musimy odpowiednio wyrenderować rozszerzoną rzeczywistość.

5.1.4 Pakiet matcher

W pakiecie matcher mamy klasy odpowiadające za detekcję punktów

charakterystycznych, wyliczanie dla nich deskryptorów oraz odpowiednie łączenie punktów z

dwu obrazów. Klasa Scene jest modelem sceny. W niej przechowujemy dane takie jak :

obraz, listę punktów kluczowych w obrazie, deskryptory obrazu. Klasa SceneDetectData to

następna klasa reprezentująca model. W niej trzymamy wszystkie dane powstałe w wyniku

testów działania algorytmów łączenia punktów charakterystycznych takie jak np. czas

przetwarzania klatki, ilość wykrytych punktów charakterystycznych, ilość połączonych z

sukcesem punktów itp. Klasa Settings odpowiada za zapisywanie ustawień dotyczących

działania algorytmów. Klasa DetectUtility przeprowadza pełen proces detekcji złożony z 3

faz : wykrycie punktów charakterystycznych, wyznaczenie deskryptorów a na koniec

złączenie odpowiadających sobie punktów. Klasa Matcher Activity umożliwia

użytkownikowi wywołanie wszystkich metod związanych z procesem detekcji, konfiguracji

detektorówm, zbieraniem danych testowych.

5.1.5 Pakiet główny

W pakiecie głównym znajdują się następujące klasy. Klasa ARCubeRenderer

odpowiada za renderowanie szecianu jako rzeczywistości rozszerzonej z wielokolorowymi

Page 39: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

39

ściankami przy użyciu biblioteki OpenGL. Klasa LabActivity odpowiada za komunikację z

wbudowanymi aplikacjami w telefon takimi jak wysyłanie zdjęcia poprzez maila, bluetooth.

Klasa CustomJavaCameraView jest własną implementacją kamery pracującej pod systemem

OS Android. Dzięki własnej implementacji możemy wybrać różną wspieraną przez

urządzenie rozdzielczość przetwarzanego obrazu, oraz wykorzystywać wspierane przez

urządzenie efekty fotograficzne takie jak sepia, negatyw. Klasa CameraActivity odpowiada za

główny (startowy) wątek aplikacji. Umożliwia on przejście do innych Activity a ponadto

zarządza kamerą.

5.2 Wzorce projektowe

Ponieważ oprogramowanie powstawało w języku Java, a jest to język wspierający

paradygmat programowania obiektowego, to wspomnijmy o wzorcach projektowych, które

ułatwiają tworzenie dobrego jakościowo kodu. Wzorce projektowe zostały pierwszy raz

opisane w literaturze przez tzw. "Bandę czworga" (ang. GoF). Głównym autorem był Erich

Gamma. Wzorce opisują gotowe, sprawdzone i najlepsze znane praktyki na rozwiązywanie

typowych problemów. Każdy wzorzec ma swoje przypadki zastosowania. W pewnych

architekturach sprawdza się lepiej, a w niektórych gorzej. Ważne, aby znać wady i zalety

zastosowania danego wzorca. W tym podrozdziale opiszemy kilka wykorzystanych w

projekcie aplikacji wzorców.

Wzorce projektowe można podzielić na następujące kategorie:

kreacyjne (konstrukcyjne) – opisujące proces tworzenia nowych obiektów; ich

zadaniem jest tworzenie, inicjalizacja oraz konfiguracja obiektów, klas oraz innych typów

danych

strukturalne – opisujące struktury powiązanych ze sobą obiektów;

czynnościowe (behawioralne) – opisujące zachowanie i odpowiedzialność

współpracujących ze sobą obiektów.

5.2.1 Korzyści użycia wzorców

Wiele zespołów programistycznych chętnie korzysta ze wzorców projektowych,

ponieważ ułatwiają komunikację i wprowadzają wspólne rozumienie proponowanych

rozwiązań. Dzięki korzystaniu ze wzorców kod powstający w myśl paradygmatu

obiektowego jest luźniej powiązany i łatwiejszy w modyfikacji lub utrzymaniu. Wzorce

wspierają wiele uznanych zasad projektowania systemu w tym :

DRY (Dont Repeat Yourself) - kod nie jest powielany i nie zawiera redundancji, przez

co jest łatwiejszy w modyfikacji

Open/Closed Principle - zasada mówiąca, że kod powinien być otwarty na

rozszerzenia, ale zamknięty na modyfikację (inaczej mówiąc, powinno dać się

tworzyć kod dający nowe możliwości bez modyfikacji już istniejącego kodu, a

poprzez dodawanie nowych klas / interfejsów)

Page 40: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

40

Single Responsibility - zasada mówiąca o pojedynczej odpowiedzialności klasy.

Oznacza, że każda klasa powinna odpowiadać za dokładnie jedną rzecz.

Antyprzykładem są klasy typu manager, które wykonują wiele operacji, w

konsekwencji czego, nie wiadomo za co odpowiadają

Dependency Injection oraz Inversion of Control - zasada mówiąca, że kod powinien

powstawać w oparciu o kontrakt. Inaczej mówiąc, kod powinien być możliwie luźno

powiązany (np. poprzez interfejsy, a nie poprzez konkretne implementacje)

Hermetyzacja, enkapsulacja - kod powinien posiadać możliwie najmniejszy zasięg

(preferujemy dostępność private nad public). Klasy nie powinny zdradzać swojej

wewnętrznej implementacji, a jedynie udostępniać przemyślane API.

Preferuj kompozycję od dziedziczenia - architektura kodu oparta o kompozycję (w

przypadku javy oznacza to wiązanie obiektów poprzez referencje), jest bardziej

odporna na zmiany i łatwiejsza w modyfikacji

5.2.2 Wzorzec strategii

W trakcie realizacji projektu wykorzystaliśmy wzorzec strategii. Istotą tego wzorca

jest wydzielenie zmiennego zachowania do specyficznych klas. Wzorzec strategii jest

wzorcem należącym do kategorii wzorców czynnościowych (behawioralnych). Dość dobrze

obrazuje to poniższy rysunek

Rysunek 22: Diagram klas dla wzorca strategii

Jak widzimy, kontekst (często klasa zawierająca logikę domenową) nie jest ściśle zależna od

strategii. Jedyne co posiada klasa kontekstu, to referencja do interfejsu strategii. Często

Page 41: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

41

specyficzna strategia jest dostarczana z zewnątrz (w przypadku aplikacji, to użytkownik w

ustawieniach wybiera specyficzną strategię), co powoduje jeszcze luźniejsze wiązanie

komponentów. Dzięki temu łatwo jest dodawać nowe strategie bez potrzeby modyfikacji już

istniejących. Dodatkowo, dzięki wzorcowi ograniczamy występowanie zaciemniających kod

instrukcji warunkowych. Wadą jest większa liczba powstałych klas.

W przypadku aplikacji zastosowanie wzorca strategii ma jeszcze jeden praktyczny skutek. W

przetwarzaniu obrazów mamy do czynienia z tzw. "Pipelinem". Oznacza to, że mamy kilka

elementów przetwarzania obrazów (segmentacja, kalibracja kamery, rozpoznawanie,

dopasowanie do wzorca), następujących po sobie, gdzie każdy z nich możemy zrealizować na

kilka sposobów. Dzięki temu każdy z tych sposobów realizowany jest poprzez wzorzec

strategii, w konsekwencji czego, jest łatwo wymienić i testować poszczególne algorytmy i

łączyć je ze sobą.

5.2.3 Wzorzec budowniczego

Wzorzec budowniczego należy do rodziny wzorców kreacyjnych. Znalazł on swoje

zastosowanie w stworzonej przez mnie aplikacji. Wykorzystałem go do tworzenia obiektów,

które posiadają pewne cechy obowiązkowe, a pewne opcjonalne (większość konfiguracji

algorytmów). Wzorzec daje możliwość tworzenia obiektów w sposób łańcuchowy, co sprzyja

czystości kodu. Ponadto można dzięki niemu uzyskać obiekty niezmienne (ang. immutable),

co gwarantuje nam bezpieczne przetwarzanie wielowątkowe, jako, że stan obiektu jest stały.

Diagram klas wzorca jest następujący:

Rysunek 23: Diagram klas dla wzorca budowniczego

Page 42: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

42

Dodatkową zaletą jest duża możliwość konfiguracji do uzyskania, co sprzyja procesowi

testowania algorytmów.

5.2.4 Wzorzec adapter

Wzorzec adapter należy do rodziny wzorców strukturalnych. Istotą tego wzorca jest

umożliwienie współpracy dwóm klasom, o niekompatybilnych interfejsach. Diagram klas

wzorca jest następujący:

Rysunek 24: Diagram klas dla wzorca adaptera

W aplikacji wzorzec ten został wykorzystany na potrzeby renderowania

rzeczywistości rozszerzonej. Ze względu na niekompatybilne interfejsy macierzy projekcji

OpenGL oraz OpenCV wykorzystanie adaptera jest w pełni uzasadnione. Niestety wzorzec

ten wprowadza pewien narzut wydajnościowy. Zaletą tego wzorca jest możliwość dodania

nowej funkcjonalności, jak w naszym przypadku centrowania AR na środek obiektu wzorca.

5.3 Przekazywanie danych pomiędzy Activity, a w szczególności danych związanych z

kalibracją kamery oraz wykorzystanie tych danych przez poszczególne Activity

W aplikacji występują 3 główne Activity, które współdzielą model kalibracji kamery:

CameraCalibrationActivity - odpowiada za proces kalibracji i jest dostawcą danych

MatcherActivity - rozpoznaje cechy w obrazie i odpowiada za wyszukiwanie

podobnych scen, jest beneficjentem (konsumuje) dostarczony model kalibracji kamery

CameraActivity - odpowiada za wyszukiwanie wzorca w scenach i umożliwia

rendering rzeczywistości rozszerzonej

Po procesie kalibracji kamery CameraCalibrationActivity udostępnia w trakcie przejść

(tranzycji) do MatcherActivity oraz CameraActivty model kalibracji. Dzięki temu możliwe

jest badanie wpływu kalibracji kamery na rozpoznawanie wzorca oraz detekcję cech. Model

kalibracji kamery zawiera:

Page 43: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

43

Macierz wewnętrzną kamery wraz z jej parametrami

Macierz współczynników zniekształcających uzyskany w wyniku kalibracji (de facto

jest to wektor)

Informację o wykorzystanym wzorcu kalibrującym na potrzeby wyznaczenia

optymalnego w danej sytuacji

Średni błąd reprojekcji wyliczony na podstawie kalibracji

Opisany powyżej model musi być serializowany (zamieniony na ciąg bajtów), a

następnie deserializowany (zamieniony z bajtów na dany obiekt) na potrzeby przesyłania go

pomiędzy poszczególnymi Activity. Najlepszym formatem wymiany danych, nadającym się

do tego zadania jest JSON. Oto uzasadnienie. dlaczego format JSON został wybrany. Po

pierwsze jest serializowalny, czyli daje się łatwo zamienić na ciąg bajtów. Ułatwia to

przesyłanie danych z wykorzystaniem sieci Internet oraz pomiędzy activity. W odróżnieniu

od XML-a jest zdecydowanie lżejszy, ponieważ nie posiada znaczników ani atrybutów. Z

punktu widzenia programisty, JSON jest obiektowy i bardzo łatwo się tworzy JSONa na

podstawie kolekcji obiektów, jak i w drugą stronę, czyli kolekcję obiektów z JSONa.

5.4 Opis procesu kalibracji kamery

W poprzednich rozdziałach opisano już podstawy teoretyczne procesu kalibracji

kamery. Przedstawiono również interfejsy umożliwiające kalibrację w kodzie aplikacji.

Opiszemy teraz sam proces kalibracji, który umożliwia stworzona aplikacja.

Na potrzeby procesu kalibracji powstał dedykowany komponent aplikacyjny. Posiada

on swój własny ekran. Pracując z modułem kalibracji możemy wrócić do ekranu głównego,

bądź przejść do modułu rozpoznawania i łączenia obrazów. Przejście może odbyć się na 2

sposoby. Jeżeli kalibracja się zakończyła sukcesem, to w następnych modułach przetwarzany

obraz będzie podlegał kompensacji. Jeżeli kalibracja nie powiodła się lub się nie odbyła, to

należy wybrać opcję skip calibration, która wraca nas na ekran główny, bez kompensacji

przetwarzanego obrazu. Będąc na tym ekranie możemy wejść w ustawienia procesu i

skonfigurować następujące parametry:

Typ wzorca kalibrującego

Flagi (strategie) algorytmów kalibrujących

Opis flag, które sterują algorytmami kalibracji został dokonany w poprzednim rozdziale.

Aplikacja wspiera 3 typy wzorców. Jest to klasyczna szachownica, symetryczne koła oraz

asymetryczne koła. Poniżej widzimy przykłady poszczególnych wzorców:

Page 44: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

44

Rysunek 25: Wzorzec kalibrujący będący szachownicą

Rysunek 26: Wzorzec kalibrujący wykorzystujący symetryczne koła

Rysunek 27: Wzorzec kalibrujący wykorzystujący asymetryczne koła

Opiszemy teraz scenariusz poprawnego procesu kalibracji :

Wybieramy interesujący nas wzorzec kalibrujący oraz ustawiamy wybrane

strategie kalibracji

Page 45: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

45

Przed kamerą prezentujemy kartkę rozmiaru A4 lub większego zawierającą

skonfigurowany uprzednio wzorzec. Ważne, aby pokazywać kamerze wzorzec

z różnych kątów oraz pozycji. W przeciwnym razie algorytm kalibrujący de

facto uzna, że otrzymał jeden wzorzec (jeżeli dostarczymy N bardzo

podobnych ujęć).

Na ekranie widzimy, czy kamera rozpoznaje dany wzorzec (pojawiają się

łączące się linie określające rogi występujące we wzorcu), wówczas poprzez

dotyk ekranu wykonujemy zapamiętanie migawki na potrzeby procesu

kalibracji. W prawym górnym rogu wyświetlana jest liczba zapamiętanych

migawek.

Po uzyskaniu zadowalającej liczby zróżnicowanych ujęć wzorca (minimum 4,

ale zaleca się aby było ich około 10), możemy wcisnąć przycisk calibrate.

Wówczas dostajemy jedną z dwu odpowiedzi : albo, że mamy za mało

migawek i trzeba dostarczyć więcej, albo ,że trwa proces kalibracji.

Po zakończeniu się procesu kalibracji dostajemy napis, że kalibracja powiodła

się oraz informację zwrotną ile wynosi średni błąd reprojekcji dla procesu

kalibracji. Im jest on mniejszy tym lepiej. Wartością graniczną można przyjąć

liczbę 1.0. Dla kalibracji o większym błędzie reprojekcji należy powtórzyć

proces zbierając bardziej różnorodne migawki wzorca. Optymalna wartość

reprojekcji potwierdzająca wysoką jakość kalibracji wynosi poniżej 0.60.

Rysunek 28: Wybór wzorca kalibrującego w aplikacji

Page 46: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

46

Rysunek 29: Wybór strategii kalibrującej w aplikacji

Rysunek 30: Wybór rozdzielczości w trakcie procesu kalibracji

Page 47: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

47

Rysunek 31: Przykładowe ujęcie wraz z wykrytym wzorcem

Rysunek 32: Okno dialogowe ukazujące się w trakcie wyznaczania parametrów kamery

Page 48: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

48

Rysunek 33: Ekran z informacją zwrotną z podanym średniokwadratowym błędem reprojekcji uzyskanym w wyniku

kalibracji kamery

Po procesie kalibracji, przejście do innego modułu aplikacji spowoduje przetwarzanie

obrazów, które są poddawane kompensacji, mającej na celu usunięcie efektów ubocznych

związanych ze zniekształceniami radialnymi oraz tangensoidalnymi kamery.

5.5 Opis generacji rzeczywistości rozszerzonej

W celu generacji rzeczywistości rozszerzonej potrzebujemy zdefiniować wpierw

obraz, bogaty w cechy, którego będziemy wyszukiwali w scenie. Nazwijmy go znacznikiem.

Obraz ten będzie porównywany z kolejnymi klatkami z kamery. Odnalezienie go w

przestrzenii jest równoważne ze znalezieniem jego pozy w 3D. W finalnym obrazie 2D, który

będzie renderowany na ekranie, 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.

Omówimy teraz algorytm szukania znacznika w scenie. Składa się on z 4 kroków:

1. Znajdź punkty charakterystyczne zarówno w znaczniku i zapamiętaj je, a następnie

wyszukaj cechy w klatce, która podlega analizie.

2. Oblicz deskryptory dla wszystkich znalezionych zbiorów cech. Deskryptor jest

wektorowym opisem punktów kluczowych. Nie każdy punkt kluczowy daje się

opisać, więc zawsze uzyskamy mniej deskryptorów niż punktów kluczowych.

3. Wyszukaj wszystkie odpowiadające sobie cechy w znaczniku oraz analiozwanej

klatce. Wykorzystaj w tym celu obliczone deskryptory. Za miarę jakości przyjmij

dystans Hamminga, czyli miarę odległości cech od siebie.

Page 49: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

49

4. Wyznacz homografię pomiędzy znacznikiem a klatką. Homografia to opis

transformacji 3D niezbędnej do połączenia dwóch prezentowanych obrazów 2D w

celu nałożenia ich na siebie.

Po analizie niezbędnych wymagań dla algorytmu generacji AR, zdecydowaliśmy się na

połączenie i wykorzystanie następujących algorytmów:

detektora STAR - bardzo dokładny, dostarcza wyselekcjonowane punkty kluczowe,

deskryptora ORB,

matchera BRUTEFORCE HAMMING - na potrzeby wykorzystania miary.

Wspomniana konfiguracja zapewnia nam niezbyt liczny, aczkolwiek odpowiedni

jakościowo zbiór cech obrazu. Dzięki deskryptorowi ORB uzyskamy niezależność od

obrotów. Istotne jest, że znacznik pozostanie w obszarze wykrycia i nie będzie szybko

zgubiony z pola widzenia. Stabilność działania tej kombinacji jest bardzo istotna. Ponadto

STAR, ORB I BRUTTFORCE HAMMING są algorytmami nieodpłatnie dostępnymi.

W celu znalezienia homografii niezbędne są punkty kluczowe o bardzo wysokiej jakości.

Miarą tej jakości będzie dystans Hamminga, między parą cech znacznika oraz przetwarzanej

klatki. W celu wyznaczenia homografii wystarczają 4 złączone punkty o bardzo wysokiej

jakości. W tym celu będziemy szukać wierzchołków obrazu. Warto również przeprowadzić

optymalizację, ze względu na wysoką złożoność obliczeniową. Szkic takiego algorytmu,

który uwzględnia rozmaite przypadki jest następujący:

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

czyścimy listę punktów, które próbujemy dopasować jako wierzchołki, gdyż

najprawdopodobniej jest ona błędna.

2. Jeżeli złączenia są częściowo poprawne (pewne wartości dystansu Hamminga są

wysokie, ale występują też takie o niskiej wartości), 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.

Na potrzeby dalszego zrozumienia, w jaki sposób należy rozumieć generację AR,

rozpatrzmy następujący przykład. Rozpatrzmy znaną sobie fotografię, którą wykonaliśmy

pewien czas temu. Wiemy gdzie została ona wykonana, a naszym celem jest odpowiedź na

pytanie jakich nastaw aparatu użyto w celu jego wykonania. Aby odpowiedzieć na to pytanie,

należy osobiście odwiedzić miejsce wykonania ujęcia. Następnie, należy odpowiedzieć na

pytanie, gdzie położony był aparat w przestrzenii 3D oraz jaki był kąt widzenia. Jeżeli nam

się to uda, znamy długość ogniskowej. Znajomość ogniskowej jest niezbędna aby poprawnie

odwzorować zdjęcie. Analogiczny problem należy rozwiązać w trakcie szukania obrazu w

scenie. Aby tego dokonać, trzeba ustalić, jakie są pionowe i poziome pola widzenia kamery

oraz jakie są wyrażone w pikselach rozdzielczości w obu kierunkach.

W celach optymalizacyjnych warto wiedzieć, że operacje wyznaczania macierzy

projekcji są bardzo kosztowne obliczeniowo. Aby nie przeliczać ich każdorazowo, należy

zapamiętać, wykorzystując flagę typu boolean, czy dana macierz jest

nadal aktualna. Wychodząc z modelu kamery małoobrazkowej, istotna jest znajomość tzw.

Page 50: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

50

płaszczyzny obcinanej bliży i płaszczyzny obcinananej dali. 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 34: Przedstawienie płaszczyzn obcinania, obraz kamery uwzględnia jedynie obszar ściętego ostrosłupa

Aby skutecznie wyznaczać położenie kamery w przestrzenii 3W, nie wystarczy

wyznaczenie homografii. W zamian za to, trzeba operować na wszystkich dotychczasowych

danych dotyczących cech znacznika i kamery. Naszym celem nie jest zatem wyznaczenie

homografii, lecz właściwej pozy w 3D. Taka zmiana, niesie za sobą różnice w implementacji.

Po pierwsze, rozszerzamy wymiar punktów kluczowych do 3D, dodając wartość 0 dla

zmiennej z. Następnie, 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.

Zgodnie z modelem małoobrazkowym kamery, wynikiem działania programu jest

wyznaczenie macierzy obrotu oraz translacji. Dzięki temu, możemy w OpenGL

wyrenderować sześcian na obszarze należącym do znacznika. Dokonujemy tego na podstawie

pozy kamery. Wyznaczamy ją w podobny sposób jak niegdyś homografię, tylko w 3D, a nie

w 2D.

Dla celów wygodne testowania aplikacji, poprawne wyznaczenie pozy 3D kamery

oznacza, że wyrysujemy na ekranie kolorwy sześcian. Jeżeli znacznik nie został znaleziony, w

lewym górnym rogu kamery wyrysujemy obraz, którego używamy jako znacznika.

Page 51: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

51

Rysunek 35: Szukanie wzorcowego obrazu w scenie w czasie rzeczywistym

Do rozpatrzenia pozostały niskopoziome zagadnienia związane z bindowaniem

biblioteki OpenGL oraz systemu Android. Dzięki umiejętnemu połączeniu tych dwu

środowisk, możliwe jest generowanie własnej rzeczywistości rozszerzonej. OS Android

wspiera OpenGL i umożliwia rysowanie po widgecie zwanym GLSurfaceView, którego

będziemy wykorzystwać.

OpenGL, dostarcza nam dwie możliwości: stosowanie macierzy do przekształceń 3D

na wierzchołkach sześcianu oraz renderowanie trójkątów na podstawie przekształconych

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

Z punktu widzenia wydajności, niekorzystynm jest fakt, że OpenGL przeprowadza

operacje na kolorach z wykorzystaniem buforów. Oznacza to, że trzeba pisać

niskopoziomowy kod, służący do przekształceń oraz alokowania z góry znanej liczby

określającej zasoby pamięci. Jednym z takich przykładów jest konieczność czyszczenia

(zerowania) wszystkich buforów z poprzednio wyrysowanego obrazu.

Poniżej prezentujemy efekt działania, renderowania sześcianu, rozszerzonej

rzeczywistości znanej jako AR.

Page 52: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

52

Rysunek 36: Odnaleziony wzorzec charakteryzuje wygenerowany sześcian jako rozszerzona rzeczywistość

Jednym z celów tej pracy, jest próba ulepszania wyznaczania pozy kamery w

przestrzeni 3W z wykorzystaniem kalibracji kamery. Jak widać na powyższym obrazku,

sześcian nie jest domyślnie renderowany w centrum obrazu. W pracy, dzięki kalibracji

kamery, udało się poprawić rendering na bliższy centrum wyszukiwanego wzorca. Aby to

było możliwe, należy zrozumieć, dlaczego początkowo nie renderował się on w centrum

wzorca.

Dzięki kalibracji kamery, do adaptera, którego zadaniem jest poprawne

przekształcanie oraz mapowanie na siebie macierzy projekcji (pochodzącej z OpenCV) oraz

macierzy pozy obiektu (pochodzącej z OpenGL), możemy przekazać jako macierz projekcji,

macierz kamery po kalibracji. Bez procesu kalibracji, macierz kamery była estymowana na

podsatawie homografii. Jak dowodzi działanie aplikacji, prawidłowa kalibracja kamery

dostarcza bardziej dokładnej macierzy projekcji. Sam sposób wykorzystania OpenGL do

renderowania AR w systemie operacyjnym Android OS jest dobrze oddany na poniższm

rysunku:

Page 53: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

53

Rysunek 37: Architektura powiązań między OpenGL a Androidową aplikacją w celu wyświetlania AR

Aby adapter działał prawidłowo z nową macierzą projekcji powstałą w wyniku

procesu kalibracji kamery niezbędnych jest naniesienie pewnej korekty. Problemem jest

niezgodność modeli objektu w OpenGL oraz OpenCV. Aby tę niezgodność naprawić

wykorzystamy wzorzec projektowy adaptera, opisany wcześniej. Zakładamy, że mamy już

wyznaczone macierze rotacji oraz translacji. Poniżej prezentujemy algorytm działania

specyfinczego adaptera :

1. Niech R to macierz rotacji, t to wektor przesunięcia, natomiast A to macierz

parametrów zewnętrznych kamery (wszystkie te dane mamy dostarczona na bazie

kalibracji kamery). Wykonujemy transpozycję (mapowanie 2D-3D):

transpose([u, v, 1]) = A * [R | t] * transpose([X, Y, Z, 1])

2. Ze względu na odwrócone osie Y oraz Z w OpenGL musimy przekształcić naszą

macierz obiektu (pozy) :

modelView = [1 0 0 0] * [r00 r01 r02 t1]

[0 -1 0 0] [r10 r11 r12 t2]

[0 0 -1 0] [r20 r21 r22 t3]

[0 0 0 1] [0 0 0 1]

3. Teraz trzeba zadbać o poprawne wyliczenie macierzy projekcji. Problemem jest fakt,

że OpenCV dostarcza nam macierzy projekcji o wymiarze 3x3 i nie uwzględnia

bufora z, który jest uzwględniany przez OpenGL. Dlatego też OpenGl wymaga

wektora 4D. W celach normalizacji będziemy skalować pozyskaną macierz projekcji z

OpenCV, tak aby jej współczynniki były z przedziału <-1,1>. Tutaj width oraz height

to wymiar klatki, podczas gdy far oraz near to płaszczyzny obcinania.

projection =

[0 1 0 0] * [2*A00/width 0 -1+(2*A02/width) 0]

[-1 0 0 0] [0 2*A11/height -1+(2*A12/height) 0]

Page 54: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

54

[0 0 1 0] [0 0 -(far+near)/(far-near) -2*far*near/(far-near)]

[0 0 0 1] [0 0 -1 0]

W kodzie aplikacji powyższy algorytm prezentuje się następująco : Mat expandedR;

Rodrigues(r, expandedR);

Mat Rt = Mat::zeros(4, 4, CV_64FC1);

for (int y = 0; y < 3; y++) {

for (int x = 0; x < 3; x++) {

Rt.at<double>(y, x) = expandedR.at<double>(y, x);

}

Rt.at<double>(y, 3) = t.at<double>(y, 0);

}

Rt.at<double>(3, 3) = 1.0;

//OpenGL ma odwrócone osie Y & Z

Mat reverseYZ = Mat::eye(4, 4, CV_64FC1);

reverseYZ.at<double>(1, 1) = reverseYZ.at<double>(2, 2) = -1;

//obrót o 90 stopni w celach wyświetalnia landscape

Mat rot2D = Mat::eye(4, 4, CV_64FC1);

rot2D.at<double>(0, 0) = rot2D.at<double>(1, 1) = 0;

rot2D.at<double>(0, 1) = 1;

rot2D.at<double>(1, 0) = -1;

Mat projMat = Mat::zeros(4, 4, CV_64FC1);

float far = 10000, near = 5;

projMat.at<double>(0, 0) = 2*scaledCameraMatrix.at<double>(0, 0)/imageWidth;

projMat.at<double>(0, 2) = -1 + (2*scaledCameraMatrix.at<double>(0, 2)/imageWidth);

projMat.at<double>(1, 1) = 2*scaledCameraMatrix.at<double>(1, 1)/imageHeight;

projMat.at<double>(1, 2) = -1 +

(2*scaledCameraMatrix.at<double>(1, 2)/imageHeight);

projMat.at<double>(2, 2) = -(far+near)/(far-near);

projMat.at<double>(2, 3) = -2*far*near/(far-near);

projMat.at<double>(3, 2) = -1;

Mat mvMat = reverseYZ * Rt;

projMat = rot2D * projMat;

Mat mvp = projMat * mvMat;

5.6 Badanie efektywności aglorytmów detekcji oraz wpływu kalibracji kamery na

algorytmy detekcji oraz generacje rzeczywistości rozszerzonej

Jednym z celów, dla których powstała opisywana aplikacja, jest możliwość badania

wpływu kalibracji kamery na algorytmy, które dokonują detekcji, deskrypcji oraz ekstrakcji

punktów charakterystycznych w obrazie. Z punktu widzenia działania algorytmu aplikacji,

fakt, czy kamera była poddana procesowi kalibracji jest obojętny. W przypadku kalibracji,

otrzymamy inne wyniki, ale przebieg działania programu będzie identyczny. To właśnie

pozwoli nam zweryfikować przydatność procesu kalibracji. Jeżeli kamera została uprzednio

skalibrowana, to przetwarzane klatki obrazu są kompensowane, tak, aby pozbawić klatki

efektów związanych ze zniekształceniem obrazu. Oczywiście, widać w interfejsie

użytkownika dzięki efektowi "poduszki" lub "rybiego oka", czy proces kalibracji przebiegł

pomyślnie.

Page 55: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

55

Interfejs użytkownika został zaprojektowany tak, aby testowanie było czytelne,

intuicyjne i możliwie najwygodniejsze. Główną część okien zajmuje podgląd "na żywo" z

kamery z wrysowanym w prawym górnym rogu licznikiem klatek na sekundę oraz

rozdzielczością przetwarzania obrazu.

Niestety, ze względu na częste zmiany stanów Activity w systemie Android oraz

wynikającą z tego faktu sporą ilość kodu do wytworzenia, zdecydowano się na wspieranie

jedynie orientacji kamery w trybie landscape (poziomym). Nie wpływa to znacząco na

przyjemność pracy z aplikacją, ponieważ widok z kamery najczęściej ogląda się w orientacji

poziomej (szczególnie na mniejszych ekranach, ze względu na większą powierzchnię

widocznego podglądu).

Przycisk Clear w menu górnym służy do wyczyszczenia listy migawek

porównywanych do obrazu referencyjnego. 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 38: Przykładowe działanie aplikacji do porównywania algorytmów

Page 56: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

56

Rysunek 39: Wiadomość do użytkownika, gdy próbuje porównać obrazy bez ich poprzedniego dodania.

Aby uniknąć zbędnego, każdorazowego przeliczania cech dla obrazu refencyjnego,

należy robić to tylko raz, lub wtedy gdy się zmieni. Z tego powodu przeprowadzanie obliczeń

za pierwszym razem dla nowych obrazów trwa znacznie dłużej niż za każdym kolejnym.

Oznacza to, że na potrzeby testów należy wybrać sporą liczbę obrazów do zbioru trenującego.

Uśrednione wyniki będą lepiej reprezentowały zachowanie poszczególnych algorytmów.

Aby skutecznie testować, niezbędna jest możliwość 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 mechanizmu systemowego 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.

Z punktu widzenia programisty, AsyncTask posiada bardzo wygonde API. Jego

implementacja jest prosta. AsyncTask działa w sposób asynchroniczny, przez co, możemy

wykonywać równocześnie inne obliczenia, bez oczekiwania na wyniki. Bardzo istotny jest

brak 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 logikę pomiędzy wątkami

roboczymi oraz głównym, dzięki czemu nie mieszają się one ze sobą.

Page 57: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

57

Rysunek 40: AsyncTask w toku, komunikat postępu porównywania obrazów z listy ze wzorcem

W menu występują jeszcze 2 przyciski typu checkbox, które zachowują stan włączony

lub wyłączony. Pierwszym z nich jest przycisk Homography. Jeżeli jest włącznony,

dodatkowo wyznacza 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 zakończeniu analizy wszystkich zadanych obrazów i ich porównaniu z obrazem

refencyjnym, prezentowane jest okno dialogowe pokazujące najlepszy z dopasowanych

obrazów z listy oraz obraz referencyjny. Dodatkowo, pokazywane są nazwy algorytmó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 58: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

58

Rysunek 41: Wynik najlepszego dopasowania dwóch klatek bez narysowanych złączeń

Rysunek 42: Wynik najlepszego dopasowania dwóch klatek z narysowanymi złączeniami

Kliknięcie na przycisk Dismiss powoduje niejawne zapisanie do pamięci telefonu

zdjęcia o nazwie zawierającej wspomniane parametry i nazwy algorytmów. Taki schemat

nazewniczy gwarantuje unikatowość. Pozwala na identyfikowanie obrazów z plikami

zawierającymi dane z przebiegu testów.

Page 59: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

59

Istnieje również możliwość wyboru jednej z dostępnych rozdzielczości

przetwarzanego obrazu:

Rysunek 43: Lista rozwijana z dostępnymi do wyboru rozdzielczościami dla przetwarzanych obrazów z kamery

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.

Bardzo ważnym przyciskiem jest 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.

Page 60: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

60

Rysunek 44: 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.

Rysunek 45: Dostępne do wyboru deskryptory cech wraz z pewnymi parametrami algorytmu szukania najlepszego

dopasowania

Page 61: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

61

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 46: Dostępne do wyboru algorytmy łączenia dopasowań pomiędzy klatkami oraz sposób przeprowadzania

procesu łączenia klatek

6 Metodyka badań Rozdział ten przedstawia opis metodyk badań oraz metod testowania powstałej

aplikacji wraz z wynikami oraz ich omówieniem. Na wstępie należy określić, jakie zależności

zbadano wraz z uzasadnieniem dlaczego były one przedmiotem badań.

Dzięki aplikacji, która powstała w ramach pracy magisterskiej, zbadano następujące

zależności, dzięki którym można było określić optymalny wzorzec kalibrujący :

wpływ rozdzielczości kamery na jakość oraz szybkość procesu kalibracji

wpływ strategii kalibrującej (wykorzystanych w algorytmie kalibracji wariancji

dotyczących uproszczeń modelu kalibracji) na jakość oraz czas procesu kalibracji dla

każdego ze wzorców

wpływ kształtu wzorca na jakość oraz czas procesu kalibracji

miarę odporności wzorców na zmienne natężenie światła, rotację oraz skalę

Następnym obszarem badawczym jest zbadanie (przy ustalonej optymalnej strategii

dla każdego wzorca) zachowań poszczególnych algorytmów detekcji cech w obrazie, z

uwzględnieniem wpływu kalibracji kamery. Celem tego badania, było odkrycie, czy pewne

algorytmy można usprawnić, dzięki procesowi kalibracji. Dokonano tego poprzez zbadanie:

Page 62: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

62

wpływu jakości kalibracji kamery (mierzonej jako błąd reprojekcji) na liczbę

wykrytych cech w obrazie

wpływu wzorca kalibrującego na liczbę cech wykrytych przez algorytmy

wpływu błędnie przeprowadzonego procesu kalibracji na działanie algorytmów

wpływu rozdzielczości kamery na liczbę przetwarzanych i wykrywanych cech

wpływu kalibracji kamery na czas przetwarzania klatki przez algorytmy

wpływu kalibracji kamery na czas przetwarzaniu cechy w obrazie

wpływu kalibracji kamery na czas przetwarzania cechy, która została wyznaczona

przez homografię

wpływu kalibracji kamery na jakość wyznaczonych cech w obrazie poprzez mierzenie

dystansu Hamminga między cechami obrazu

wpływu procesu kalibracji na procentowy udział cech wyznaczonych poprzez

homografię (wysokich jakościowo cech) spośród wszystkich wykrytych cech

Ostatnim obszarem badawczym, była próba odkrycia związku łączącego proces

kalibracji kamery z renderowaniem AR. Celem było wykazać wpływ kalibracji na

wyznaczanie pozy kamery w przestrzeni 3W. W tym celu zbadano :

Różnicę w odległości względnej (położenie w układzie świata) i bezwzględnej (cm)

od środka znacznika do renderowanego obiektu 3D przed i po procesie kalibracji

6.1.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. Ze

względu na potrzebę przetwarzania wyników na komputerze PC, w celach wizualizacji

danych oraz wybrania najciekawszych wyników zdecydowano się na generowanie plików

csv. Aplikacja dostarcza danych w formacie csv i dzięki temu można je łatwo dalej

przetwarzać. Ze względu na problem z testowaniem generacji rzeczywistości rozszerzonej i

wpływu kalibracji na ten proces, zdecydowano się również wykonać kilka zrzutów ekranów

dowodzących zmian. Tutaj również dodatkowo generujemy pliki csv, mające na celu

zbadanie centryczności generowanych modeli AR.

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,

jakości procesu kalibracji w zależności od strategii oraz wykorzystanych wzorców

szybkości oraz jakości działania algorytmów przu zmianach wynikających z

przeprowadzonego procesu kalibracji kamery

szybkości oraz jakości działania algorytmów przy zmianie rozdzielczości kamery

liczby punktów spełniających zadanych dystans,

liczby punktów będących wynikiem szukania homografii,

średniego czasu przetwarzania jednego zdjęcia.

Page 63: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

63

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 scen z mieszkania, bardzo bogatych w cechy.

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.

Istotnym jest, że ze względu na niemożliwość powtórzenia testów z pracy

inżynierskiej będziemy mogli testować obrazy uprzednio skalibrowane oraz nie poddane

kalibracji. Dzięki temu zasymulujemy odtworzenie testów na bazie tych samych scen. W ten

sposób porównamy działanie algorytmów bez procesu kalibracji kamery jak również i

poddanych kompensacji zniekształceń.

Zgodnie z wcześniej przyjętymi założeniami, testujemy tylko wybrane algorytmy,

które w pracy inżynierskiej zostały uznane za najlepsze. Wynikiem testowania aplikacji

będzie analogiczna metryka w postaci tabelarycznej ze wskazaniem optymalnych algorytmów

pod kątem jakości przetwarzania, szybkości oraz ogólnego działania wraz z uwagi i

wnioskiami wynikającymi z zebranych danych.

6.2 Wyniki testów

Należy wróżnić 3 etapy testowania :

testowanie procesu kalibracji

testowanie wpływu kalibracji na generację rzeczywistości rozszerzonej AR

testowanie wpływu kalibracji na działanie algorytmów rozpoznawania cech oraz

wyszukiwania podobnych obrazów

Opiszemy po kolei poszczególne wyniki testów.

6.2.1 Wyniki testowania procesu kalibracji

Na wstępie przedstawię kilka wniosków, dotyczących wykorzystanych wzorców

kalibracji, które mają znaczenie na proces kalibracji.

Zaskakującym, okazuje się być fakt, że wzorzec symetrycznych kół, posiada

nieznaczną odporność na przedstawianie go w ujęciu kamery. Poniżej mamy przykład, gdy

wzorzec został wykryty w scenie, ale niepoprawnie.

Page 64: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

64

Rysunek 47: Widoczne niepoprawne wykrycie wzorca (w prawym rzędzie 3-4 mamy ukośne połączenie)

W wyniku testów okazało się, że wzorzec symetrycznych kół nie sprawdza się, gdy

mamy niezbyt jasne tło, lub ostry kąt widzenia kamery, to zbyt łatwo otrzymać zakłamane

wyniki. Jest to spowodowane dużą czułością detektorów na ten wzorzec i przez to łatwo

wprowadzić ujęcie wzorca kalibrującego, które będzie outlinerem i spowoduje niepoprawną

kalibrację kamery. Ze wszystkich trzech wzorców ten wypada zdecydowanie najgorzej. W

przypadku wykrycia takiego outlinera i zaburzenia procesu kalibracji, średni błąd reprojekcji

jest o rząd wielkości gorszy niż w przypadku pozostałych wzorców. Warto niemniej jednak,

zbadać, jak wpływa kalibracja z użyciem tego wzorca na algorytmy oraz generację AR.

Page 65: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

65

Rysunek 48: Uzyskany z symetrycznym wzorcem kalibrującym średni błąd reprojekcji rzędu 10-krotnie większego

niż wskazujący na poprawną kalibrację.

Wzorzec szachownicy oraz wzorzec asymetrycznych kół są zdecydowanie bardziej

odporne na zakłócenia w obrazie i tło. W trakcie procesu testowania nie udało się uzyskać 10-

krotnie gorszych wyników zależnych od otoczenia.

Rysunek 49: Efekt niepoprawnej kalibracji kamery tzw. efekt poduszki

Page 66: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

66

Warto nadmienić, że w przypadku wzorca szachownicy mamy znacząco wolniejszy

proces przetwarzania obrazu. Dla rozdzielczości 320x240 pikseli różnica względem wzorców

kolistych jest niewidoczna, ale dla rozdzielczości 800x480 pikseli jest to już znacząca

różnica, która wpływa na proces kalibracji. Dla rozdzielczości 800x480 pikseli uzyskaliśmy

średnio :

dla wzorców kolistych - szybkość przetwarzania około 20 klatek / sekunda

dla wzorca szachownicy - szybkość przetwarzania około 5 klatek / sekunda

Należy podkreślić, iż nie jest to czas potrzebny na wykonanie procesu kalibracji, lecz

czas swobodnego przetwarzania obrazu przez kamerę w trakcie analizy sceny i wyszukiwania

wzorca. Znaczenie tego eksperymentu jest takie, że dla użytkownika końcowego wzorce

koliste stwarzają wrażenie ciągłego przetwarzania obrazu, podczas gdy szachownica

powoduje efekt klatkowania.

Ciekawą zależnością jest wpływ rozdzielczości klatek na jakość procesu kalibracji.

Zgodnie z oczekiwaniami, im mniejsza rozdzielczość, tym proces kalibracji jest szybszy, ale

jego dokładność jest gorsza. Obrazuje to następujący wykres:

Zgodnie z powyższym wykresem, z punktu widzenia procesu kalibracji rozdzielczość

analizowanych klatek ma niebagatelne znaczenie. Dlatego też, dla dalszych testów

wykonywaliśmy kalibrację kamery z obrazów 800x480 pikseli. Ogólnie, warto zawsze

rozpatrywać proces kalibracji z największą dostępną dla urządzenia rozdzielczością, gdyż

utrata jakości kalibracji spowodowana zmniejszaniem rozdzielczości jest znacząca. Dzieje się

tak dlatego, że przy mniejszej rozdzielczości, dla każdego błedu w dopasowaniu narożnika,

różnica w pikselach będzie względnie większa. Dla porównania prezentujemy wykresy

czasów kalibracji pojedynczej klatki w zależności od wybranej rozdzielczości kamery :

0

0,5

1

1,5

2

2,5

3

320x240 640x480 800x480

Błą

d r

ep

roje

kcji

rozdzielczość

Page 67: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

67

Jak widać, zysk czasowy na przetwarzaniu jednej klatki nie jest znaczący. Oczywiście, czas

przetwarzania klatki rośnie wraz z rozdzielczością ponieważ do przetworzenia mamy więcej

pikseli. Biorąc pod uwagę fakt, że w procesie kalibracji bierze udział około 10 - 20 klatek, to

łączny zysk czasowy wyniesie około 1 sekundy. W zamian za kalibrację kamery szybszą o 1

sekundę, która jest niezauważalna dla człowieka, pogarszamy ponad dwukrotnie jakość

procesu. Stąd wniosek, że należy wybierać możliwie największą rozdzielczość.

Następnym wyzwaniem przy projektowaniu optymalnego procesu kalibracji jest wyznaczenie

najlepszej strategii kalibrującej dla każdego ze wzorców kalibrujących. W tym celu

przeprowadziliśmy badania, których celem było wyszukanie odpowiednich strategii poprzez

obliczenie średniego błędu reprojekcji oraz czasów kalibracji klatki. Najlepsza strategia

będzie cechowała się tym, że ma możliwie niski średni błąd reprojekcji oraz możliwie szybko

przetwarza klatkę. Na potrzeby testów powtarzaliśmy 10-krotnie każdą strategię kalibrującą,

aby uzyskać uśrednione wyniki pozbawione zakłóceń.

Przed przystiąpieniem do mówienia wyników testów, warto przypomnieć, w jaki sposób

działają algorytmy kalibracji. Opisane funkcje wykorzystują model kamery małoobrazkowej.

Dla przypomnienia klatka (widok) powstaje jako projekcja punktów pochodzących z

przestrzeni 3D na płaszczyznę 2D z wykorzystaniem transformacji perspektywicznej, co

można zapisać jako :

lub w postaci macierzowej jako:

0

0,02

0,04

0,06

0,08

0,1

0,12

0,14

0,16

320x240 640x480 800x480

Cza

s p

rze

twar

zan

ia k

latk

i [s]

Rozdzielczosć

Page 68: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

68

gdzie :

są współrzędnymi 3D w układzie świata

są współrzędnymi 2D projekcji w pikselach

jest macierzą kamery lub inaczej, jej parametrów wewnętrznych

jest punktem skupienia, zazwyczaj znajdującym się w centrum

obrazu

są długościami ogniskowych kamery wyrażonymi w pikselach

Zatem, jeżeli obraz pochodzący z kamery jest skalowany przez jakąś stałą, wszystkie

pozostałe parametry kamery również muszą podlegać skalowaniu przez tę samą stałą.

Macierz kamery nie zależy w żaden sposób od wyświetlanej sceny, gdyż jest to macierz

parametrów wewnętrznych kamery. Jest zatem reużywalna, pod warunkiem niezmienności

długości ogniskowych. W przypadku kamer wbudowanych w urządzenia mobilne, właśnie

taki przypadek ma miejsce. Połączona macierz rotacji oraz translacji jest nazywana

macierzą zewnętrzną kamery. Używa się jej, aby opisać ruch kamery dookoła statycznej

sceny lub vice versa, ruch sceny względem statycznej kamery. Zatem macierz

przeprowadza współrzędne punktu do współrzędnych systemu, z ustalonym

położeniem kamery. Taka transformata jest równoważna poniższej (gdy ):

Rzeczywiste soczewki w kamerach mają pewne zniekształcenia, głównie radialne i

tangensoidalne. Zatem należy zmodyfikować nasze równania i rozszerzyć je do następujących

:

Page 69: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

69

, , , , , oraz są współczynnikami zniekształceń radialnych.. oraz są

współczynnikami tangensoidalnych zniekształceń. Współczynniki wyższego rzędu nie są

uwzględniane przez algorytmy. Zatem wektor współczynników zniekształceń kamery jest

następujący :

Zatem, jeżeli wektor zawiera tylko 4 elementy oznacza to, że . Współczynniki

zniekształceń nie zależą od wyświetlanej sceny. Dlatego też, niekiedy są zaliczane do

parametrów wewnętrznych kamery. Są również niezmienne względem rozdzielczości kamery.

Jeżeli kamera była kalibrowana przy rozdzielczości 320 x 240 to, takie same efekty uzyskamy

kalibrując kamerę obrazami o rozdzielczości 640 x 480 pozyskanymi z tej samej kamery.

Jednakże parametry , , , oraz muszą być odpowiednio przeskalowane.

Opisane poniżej funkcje działają zgodnie z następującymi założeniami :

Przeprowadzają projekcję punktów 3D na płaszczyznę mając dane parametry

wewnętrzne i zewnętrzne kamery

Obliczają parametry zewnętrzne kamery mając dane parametry wewnętrzne

kamery oraz kilka punktów 3D oraz ich projekcji.

Szacują parametry wewnętrzne oraz zewnętrzne kamery mając danych kilka

ujęć znanego i zdefiniowanego wzorca kalibrującego (każdy widok jest

opisany mapowaniem odpowiednich punktów 3D-2D i zależnościami

pomiędzy tymi punktami).

Szacują pozycję względna oraz orientację kamery, tak aby osie optyczne

kamery były równoległe do siebie.

Metoda o nagłówku: double calibrateCamera(objectPoints, imagePoints, pointCounts,

imageSize, cameraMatrix, distCoeffs, rvecs, tvecs, flags=0)

Metoda ta oblicza parametry wewnętrzne i zewnętrzne kamery, otrzymując na wejściu kilka

zdjęć z różnych perspektyw danego i znanego wzorca kalibrującego.

Opis parametrów :

objectPoints – jest to lista zawierająca listy punktów należących do wzorca

kalibrującego oraz określonych we współrzędnych należących do wzorca

Page 70: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

70

kalibrującego kamery. Zewnętrzna lista zawiera tyle list, ile jest dostarczonych zdjęć

wzorca. Jeżeli wszystkie ujęcia wzorca będą identyczne lub zbliżone do siebie,

wówczas każda z list punktów będzie do siebie podobna lub identyczna. Dlatego

ważne jest, aby ujęcia były zbierane pod różnymi kątami w celu zapewnienia

różnorodności. Punkty są 3D, ale ponieważ należą do układu współrzędnych wzorca,

to jeżeli jest on planarny, to można przyjąć, że Z = 0.

imagePoints – jest to lista zawierająca listy punktów będących projekcjami wzorca

kalibrującego. Rozmiar listy imagePoints musi być identyczny jak rozmiar listy

objectPoints dla każdej listy w imagePoints oraz objectPoints.

point_counts – jest to lista zawierająca zliczoną ilość wystąpień punktów w każdym

ujęciu wzorca. Typowo jest to lista jednakowych elementów, które wynoszą tyle ile

liczba punktów kluczowych we wzorcu.

imageSize – rozmiar obrazu użyty do zainicjalizowania macierzy wewnętrznej

kamery.

cameraMatrix – wynikowa macierz 3x3 liczb rzeczywistych będąca macierzą

kamery .

Jeżeli flaga CV_CALIB_USE_INTRINSIC_GUESS lub

flaga CV_CALIB_FIX_ASPECT_RATIO są zdefiniowane, to niektóre lub

wszystkie ze współczynników fx, fy, cx, cy muszą być zdefiniowane przed

wywołaniem metody.

distCoeffs – wynikowy wektor współczynników zniekształceń kamery

zawierający 4, 5, lub 8 elementów.

rvecs – wynikowa macierz rotacji obliczona dla każdego ujęcia wzorca. Oznacza to,

że każdy k-y wektor rotacji występuje wspólnie z wektorem przesunięcia, dzięki

czemu można przeprowadzić wzorzec kalibrujący z jego własnego układy

współrzędnych do współrzędnych świata, czyli rzeczywistego położenia wzorca w

każdym k-tym ujęciu.

tvecs – wynikowa macierz przesunięcia zawierająca wektory przesunięć oszacowane

dla każdego ujęcia wzorca.

flags – różne flagi, które mogą tworzyć kombinację, wyjaśnimy znaczenie

poszczególnych flag :

o CV_CALIB_USE_INTRINSIC_GUESS oznacza, że macierz kamery zawiera

początkowe poprawne wartości dla fx, fy, cx, cy które podlegają następnie

optymalizacji. W przeciwnym wypadku, (cx, cy) jest ustawiony jako środek obrazu,

natomiast wartości ogniskowych są wyliczane z wykorzystaniem metody

najmniejszych kwadratów.

o CV_CALIB_FIX_PRINCIPAL_POINT ustawia niezmienną wartość dla punktu

skupienia, która nie podlega optymalizacji. Pozostanie ustawiona jako środek

obrazu. CV_CALIB_FIX_ASPECT_RATIO wówczas funkcja wylicza jedynie

wartość ogniskowej fy . Stosunek fx/fy pozostaje niezmienny. Jeżeli nie użyto flagi

CV_CALIB_USE_INTRINSIC_GUESS wówczas nie są wyliczane ani fx ani fy,

a jedynie ich stosunek.

o CV_CALIB_ZERO_TANGENT_DIST ustawia tangensoidalne zniekształcenia

kamery jako zera i tak już zostaje.

o CV_CALIB_FIX_K1,...,CV_CALIB_FIX_K6 zadany k-ty parametr zniekształceń

Page 71: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

71

radialnych nie podlega zmianie w trakcie optymalizacji.

o CV_CALIB_RATIONAL_MODEL pozwala pozyskać 8 parametrów

zniekształceń, zamiast 5.

criteria – specyficzne kryteria zatrzymania algorytmu optymalizacyjnego.

term_crit – analogicznie jak criteria.

Opisywana funkcja wylicza wewnętrzne i zewnętrzne parametry kamery dla każdej

dostarczonej klatki. Algorytm opiera się na algorytmach Zhanga i Bougeta. Współrzędne

3D oraz ich odpowiedniki 2D muszą być dostarczone dla każdej projekcji. Można tego

dokonać pokazując kamerze wzorzec, bogaty w cechy. Algorytm działa następująco:

1. Oblicz początkowe parametry wewnętrzne kamery.

2. Oszacuj początkową pozę kamery, znając parametry wewnętrzne kamery.

3. Wykonaj globalną optymalizację Levenberg-Marquardt aby zminimalizować błąd

reprojekcji. Błąd reprojekcji jest to suma pierwiastków ze wszystkich różnic w

odległości pomiędzy cechami występującymi we wzorcu oraz w projekcji.

Funkcja zwraca średni błąd projekcji jako miarę jakości procesu kalibracji. Im mniejszy

błąd tym lepsza kalibracja.

Wyniki testów ze względu na jakość kalibracji (średni błąd reprojekcji), dla wzorca

szachownicy obrazuje poniższy wykres :

Analizując powyższy wykres widzimy, że najlepszą jakościowo strategią jest połączenie

strategii PP, TD, FR, K4, K5. Przyczyną tego jest fakt, że punkt główny PP nie powinien

zmieniać swojego położenia i powinien być w środku obrazu, parametry K4 i K5 mają

znikomy wpływ na korekcję zniekształceń względem parametrów K1 i K2, a dodatkowo FR

czyli niezmienna proporcja między bokami obrazu również nie powinna ulegać zmianie.

0

0,2

0,4

0,6

0,8

1

1,2

1,4

Błą

d r

ep

roje

kcji

Startegia kalibracji

Page 72: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

72

Dzięki temu mamy ograniczoną liczbę parametrów od których zależy proces kalibracji i

możemy je dokłądniej wyznaczyć, traktując je w izolacji od pozostałych. Inną wartą

rozważenia startegią jest niemodyfikowanie oryginalnego algorytmu kalibrującego o żadne

założenia. Pozostałe strategie przekraczają próg wartości 1.0 dla średniego błędu reprojekcji,

który potwierdza wysoką jakość kalibracji.

Dla wzorca szachownicy oraz powyższych strategii przeprowadziliśmy również test

szybkości przetwarzania klatki w trakcie działania algorytmu kalibracji :

Analiza wykresu szybkości przetwarzania klatki w algorytmie kalibrującym pokazuje, że

najszybszą startegią jest ustalenie niezmiennej wartości dla parametrów K1 lub K2. Niestety

poprzedni wykres pokazuje, że ustalenie K1 lub K2 jako niezmiennej w procesie kalibracji

obniża jakość procesu, ponieważ w korekcji zniekształceń parametry K1 i K2 mają większą

wagę od pozostałych Kn. Również szybko działa startegia AR - o ustalonym i niezmiennym

stosunku ogniskowych, ale jej jakość z poprzedniego wykresu, jest poniżej progu akceptacji.

Pośród startegii PP, TD, FR, K4, K5 lub algorytmu bez żadnych modyfikacji szybszy i

dokładniejsza jest strategia PP, TD, FR, K4, K5. Oznacza to, że jest to optymalna strategia w

przypadku kalibracji kamery z wykorzystaniem wzorca szachownicy.

Dla wzorca asymetrycznych kół przeprowadziliśmy identyczne badania. Poniżej

prezentujemy wykres jakościowy algorytmu kalibracji w zależności od wykorzystanej

startegii :

0

0,02

0,04

0,06

0,08

0,1

0,12

0,14

Cza

s p

rze

twar

zan

ia k

latk

i [s]

Strategia kalibrująca

Page 73: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

73

Po uśrednieniu wyników, widzimy, że identyczna startegia PP, TD, FR, K4, K5 daje znacząco

najlepsze rezultaty jakościowe w przypadku wzorca asymetrycznych kół. Uzyskany średni

błąd reprojekcji jest zdecydowanie niższy niż w przypadku zastosowania pozostałych

strategii. Wytłumaczenie jest analogiczne jak w poprzednim przypadku testowym z

wykorzystaniem wzorca szachownicy.

Poniżej prezentujemy wykres zależności wykorzystanej strategii i czasu przetwarzania

pojedynczej klatki :

Analiza czasów przetwarzania pojedynczej klatki wskazuje na zasadność korzystania ze

strategii PP, TG, K1, K2 oraz K4, K5. Porównując jednakże uzyskane na poprzednim

0 0,05

0,1 0,15

0,2 0,25

0,3 0,35

0,4 0,45

0,5 Śr

ed

ni b

łąd

re

pro

jekc

ji

Strategia kalibrująca

0

0,02

0,04

0,06

0,08

0,1

0,12

0,14

0,16

0,18

Cza

s p

rze

twar

zan

ia k

latk

i [s]

Strategia kalibrująca

Page 74: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

74

wykresie jakościowe wyniki dla wspomnianych strategii dochodzimy do wniosku, że są one

co najmniej 20% gorsze jakościowo niżli startegia PP, TD, FR, K4, K5. Dla tej startegii czas

przetwarzania klatki jest wysoki, ale biorąc pod uwagę fakt, że w procesie kalibracji udział

bierze około 15 klatek, to sumaryczna starta czasowa wynosi około 0,5 s względem

najszybszej startegii K1, która to różnica jest pomijalna.

Zatem analogicznie, jak w przypadku wzorca szachownicy, w przypadku wzorca

asymetrycznych kół najlepszą startegią kalibrującą jest startegia PP, TD, FR, K4, K5.

Analogicznie poniżej prezentujemy wykres zależności jakości procesu kalibracji od

wykorzystanej startegii w przypadku wzorca symetrycznych kół :

Co ważne, wspomnieliśmy już poprzednio, że wzorzec symetrycznych kół, nie jest odporny

na gwałtwone zmiany w oświetleniu obrazu lub tła. Widać to w przypadku prawie o rząd

wielkości większego błędu reprojekcji dla strategii uznających za stałe i wynoszące 0

parametry korekcyjne K4, K5 oraz K2, K1, K3, K4, K5.

Poniżej prezentujemy wykres pozbawiony tych strategii, aby zwiększyć czytelność i

wyszukać optymalną strategię:

0

2

4

6

8

10

12

Błą

d r

ep

roje

kcji

Strategia kalibrująca

Page 75: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

75

Analizując powyższy wykres widzimy odmienny trend niż w przypadku wzorców

asymetrycznych kół oraz szachownicy. W przypadku wzorca symetrycznych kół najlepsze

strategie to te powiązane ze strategią AR. W szczególności najlepiej pod względem

jakościowym sprawdza się strategia AR, PP. Należy tutaj nadmienić, że w przypadku

symetrycznego wzorca kół, pominięcie zniekształceń tangensoidalnych (TD) ma znaczący i

niekorzystny wpływ na kalibrację. Wynika to z faktu, że wzorzec symetryczny przy ujęciach

klatek o zmiennym kącie może fałszywie rozpoznać narożniki kół. Wówczas założenie, że nie

istnieją tangensoidalne zniekształcenia się nie sprawdza i powoduje gorszą jakościowo

kalibrację.

Poniżej prezentujemy wykres zależności wykorzystanej strategii i czasu przetwarzania

pojedynczej klatki :

Analiza wykresu pokazuje, że startegie AR, TD, AR + PP są najszybsze, jeżeli chodzi o

przetwarzanie obrazu. Strategie zawierające jako składową strategię AR miały najwyższą

jakość i są najszybsze. Dlatego też uznajemy, że do kalibracji kamery z wykorzystaniem

wzorca symetrycznego wykorzystywać będziemy startegię AR, PP.

0

0,1

0,2

0,3

0,4

0,5

0,6

[] [IG] [AR] [PP] [TD] [AR, PP] [PP,TD,FR, K4, K5]

Błą

d r

ep

roje

kcji

Strategia kalibrująca

0

0,05

0,1

0,15

0,2

0,25

Cza

s p

rze

twar

zan

ia k

latk

i [s]

Strategia kalibrująca

Page 76: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

76

Po przeprowadzeniu testów wykorzystując wszystkie strategie, na wszystkich wzorcach

kalibrujących, należy porównać ze sobą optymalne strategie dla każdego wzorca. Porównamy

je ze względu na jakość kalibracji oraz szybkość przetwarzania klatek. Poniżej prezentujemy

wykres obrazujący porównanie jakościowe optymalnych algorytmów dla różnych wzorców

Wyraźnie widać, że wzorce kołowe dają wyższą jakość kalibracji kamery. Najlepszy

jakościowo okazuje się być wzorzec asymetrycznych kół. Dodatkowo, wzorzec asymetryczny

jest bardziej odporny na zmiany oświetlenia oraz kąta widzenia kamery względem wzorca

symetrycznego. Wzorce kołowe dają lepszą jakość kalibracji od wzorca szachownicy,

ponieważ różnica między punktami wyliczonymi z modelu (wzorca) a wyznaczonymi na

podstawie parametrów zewnętrznych kamery będzie dla nich mniejsza. Jest tak dlatego, że w

sensie klasycznego detektora Harrisa, koła tworzą wierzchołki i zmiana w każdym kierunku

poza przekątną daje praktycznie pewność, że nie pomylimy się przy wyznaczaniu

narożników, podczas gdy w przypadku szachownicy, możemy uznać punkt krawędzi za

narożnik. Warto nadmienić, że wszystkie optymalne strategie gwarantują wysoką jakość

kalibracji (błąd kalibracji jest mniejszy od jedności w każdym przypadku).

Poniżej prezentujemy wykres porównujący czasy przetwarzania klatki dla optymalnych

startegii dla wybranych wzorców :

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

[SYMMETRIC CIRCLE - AR, PP] [ASSYMETRIC CIRCLE PP,TD,FR, K4, K5]

[CHESSBOARD PP,TD,FR, K4, K5]

Błą

d r

ep

roje

kcji

Optymalna strategia dla wzorców

Page 77: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

77

Jeżeli porównywać czasy przetwarzania klatki przez optymalne algorytmy dla różnych

wzorców, to widzimy, że różnice czasowe, nie są znaczące. Najlepiej wypadł symetryczny

wzorzec kołowy. Wzorzec asymetryczny jest jednakże jedynie o 0,05s wolniejszy w

przypadku przetwarzania klatki. Nie jest to istotna różnica, ponieważ w procesie kalibracji

przy 15 klatkach daje to nam 0,75 s co nie jest zauważalne dla użytkownika końcowego.

Podsumowując, analiza przeprowadzonych badań pokazuje optymalne startegie kalibrujące

dla każdego ze wzorców. Można wyciągnąć wniosek, że czasy przetwarzania klatek nie

różnią się znacząco ani między wzorcami, ani między poszczególnymi stategiami i są mniej

istotne, w porównaniu do jakości kalibracji. Warto wspomnieć, że wzorzec symetrycznych

kół okazał się być najmniej odpornym na zmiany w oświetleniu oraz tle obrazu. Ze względu

na jego wysoką czułość, należy cenić go niżej niż dwa pozostałe. W przypadku szachownicy,

mamy kosztowny proces analizy obrazu, co jak już wspomniano jest widoczne dla

użytkownika końcowego (utrata około 5 - 10 klatek FPS) i nie powoduje płynności w

przetwarzaniu obrazu. Najmniej problematyczny okazał się być wzorzec asymetrycznych kół.

Badania pokazują, że jest to optymalny wzorzec. W dalszych testach będziemy już

wykorzystywać jedynie optymalne strategie dla każdego wzorca oraz dodatkowo w celach

eksperymentalnych zbadamy jak zniekształcona (niepoprawna) kalibracja z użyciem wzorca

symetrycznych kół o błędzie reprojekcji rzędu 10 jednostek wpływa na działania algorytmów

opartych o cechy obrazu.

6.2.2 Wyniki testowania wpływu procesu kalibracji na detekcję, deskrypcję cech w

obrazie oraz łączenie podobnych scen

Testowane są jedynie następujące algorytmy:

FAST

ORB

STAR

HARRIS

0

0,02

0,04

0,06

0,08

0,1

0,12

0,14

[SYMMETRIC CIRCLE - AR, PP] [ASSYMETRIC CIRCLE PP,TD,FR, K4, K5]

[CHESSBOARD PP,TD,FR, K4, K5]

Cza

s p

rze

twar

ania

kla

tki [

s]

Optymalna strategia dla wzorców

Page 78: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

78

GFTT

Jest tak dlatego, że zostały one zbadane w ramach pracy inżynierskiej oraz uznane za

najlepsze pod względem jakości oraz szybkości przetwarzania cech w obrazach na

urządzeniach mobilnych.

Dodatkowo, do wyznaczanie deskryptorów cech wykorzystamy również zbadany w ramach

pracy inżynierskiej algorytm ORB.

Do ekstrakcji cech oraz łączenia ich ze sobą między poszczególnymi klatkami wykorzystamy

algorytm LMeDS - Least Median of Squares.

Na potrzeby testów wybrano 3 sceny rzeczywiste. Jedna z nich jest uboga pod względem

występujących w obrazie cech, jedna zawiera średnią liczbę cech a ostatnia jest bogata w

punkty charakterystyczne. Dla każdej ze scen wykonamy obowiązkowo testy :

bez kalibracji kamery

z optymalną strategią kalibrującą z wykorzystaniem wzorca szachownicy

z optymalną strategią kalibrującą z wykorzystaniem wzorca symetrycznych kół

z optymalną strategią kalibrującą z wykorzystaniem wzorca asymetrycznych kół

Dodatkowo, aby zbadać wpływ niewłaściwej kalibracji kamery wykonamy serię testów dla

jednej ze scen z wyraźnie niepoprawnie przeprowadzoną kalibracją. Analogicznie aby zbadać

wpływ rozdzielczości kamery przy procesie kalibracji na dalszą jakość przetwarzania obrazu

wykonamy serię testów na jednej ze scen.

Poniżej prezentujemy sceny, które służyły jako testowe:

Scena z niewielką liczbą cech :

Scena ze średnią liczbą cech:

Page 79: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

79

Scena z dużą liczbą cech :

Dla każdego algorytmu oraz typu kalibracji będziemy analizować następujące wyniki testów:

Liczbę wykrytych w obrazie cech, złączeń oraz złączeń wynikających z homografii

Średni dystans Hamming pomiędzy wykrytymi w obrazie cechami

Czas przetwarzania klatki, punktu kluczowego, cechy złączonej

Dodatkowo, dla każdej sceny pokażemy jak wyglądały obrazy referencyjne wraz z wykrytymi

duplikatami w ramach serii przetwarzanych scen. Dzięki temu, będziemy mogli zobaczyć, czy

algorytmu poprawnie złączył i wykrył w bazie wiedzy zadaną scenę.

Zacznijmy od analizy pierwszej sceny:

Page 80: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

80

Poniżej prezentujemy wykres dla algorytmu GFTT

Analiza powyższego wykresu pokazuje, że istnieje znaczący i pozytywny wpływ kalibracji

kamery na liczbę złączonych i wysokich jakościowo (pochodzących z wyznaczenia

homografii) cech obrazu. Najlepiej algorytm działał w przypadku kalibracji kamery z

wykorzystaniem wzorca asymetrycznego koła, gdzie błąd reprojekcji wyniósł 0.41. Można

więc wysnuć hipotezę, że kalibracja kamery zwiększa jakość wykrywanych cech, skoro

większy ich procent zostaje wyznaczony w wyniku homografii. Wykonano dalsze testy, które

mają na celu weryfikację tej hipotezy

Poniżej prezentujemy wykres obrazujący jakość uzyskanych cech obrazu :

0

20

40

60

80

100

120

140

160

180

Brak kalibracji Asymetryczne koła - 0.41

Symetryczne koła - 0.45

Szachownica - 0.71

Licz

ba

wyk

ryty

ch c

ech

Typ kalibracji

Porównanie działania algorytmu GFTT

Punkty charakterystyczne

Złączone punkty charakterystyczne

Punkty homografii

12,8

13

13,2

13,4

13,6

13,8

14

14,2

14,4

14,6

Brak kalibracji Asymetryczne koła - 0.41

Symetryczne koła - 0.45

Szachownica - 0.71

Dys

tan

s h

amm

inga

Typ kalibracji

Porównanie działania algorytmu GFTT

Page 81: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

81

Analiza wykresu pokazuje, że wpływ kalibracji na jakość uzyskanych cech obrazu jest

pozytywny. Najlepsze efekty uzyskujemy stosując kalibrację z wykorzystaniem

asymetrycznych kół. Wykres ten potwierdza wcześniejszą hipotezę, że dzięki kalibracji

zmniejsza się dystans Hamminga między cechami obrazu. Co ciekawe, kalibracja wykonana

ze wzorcem szachownicy (o błędzie reprojekcji 0.71) pozwala uzyskać mniejszy dystans

Hamminga między cechami obrazu niż kalibracja o mniejszym błędzie reprojekcji z

wykorzystaniem symetrycznych kół. Przyczną tego zjawiska jest fakt, że błąd reprojekcji nie

jest jedyną miarą świadczącą o jakości kalibracji kamery. Dodatkowo, wystarczy aby w

podatnym na wykrywanie błędnych cech wzorcu symetrycznych kół wzięto pod uwagę kilka

obserwacji odstających (ang. outliers), których występowanie nie będzie tak częste we wzorcu

szachownicy, a wówczas średni dystans hamminga będzie wyższy, jak na powyższym

wykresie. Wniosek jest następujący : wzorzec szachownicy ma mniejsze odchylenie

standardowe względem symetrycznych kół pod względem dystansu hamminga.

Czas przetwarzania cech:

Analiza wykresu dowodzi również pozytywnego wpływu na szybkość przetwarzania klatki.

Najlepiej działa algorytm po wykorzystaniu kalibracji z wykorzystaniem symetrycznych kół.

Dzieje się tak dlatego, że wzorzec symetrycznych kół wykrywa najmniejszą liczbę cech,

przez co pomimo wysokiego czasu przetwarzania pojedynczej cechy, sumarycznie jest

najszybszy.

Poniżej wykres dla algorytmu GFTT prezentujący czas przetwarzania pojedynczej cechy

obrazu:

680

690

700

710

720

730

740

750

760

770

Brak kalibracji Asymetryczne koła - 0.41

Symetryczne koła - 0.45

Szachownica - 0.71

Cza

s p

rze

twar

zan

ia k

latk

i [m

s]

Typ kalibracji

Page 82: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

82

Analiza wykresu pokazuje, że po przeprowadzeniu procesu kalibracji wzrasta czas

przetwarzania cechy w obrazie. Istotą tego zjawiska jest to, że dzięki kalibracji, znamy model

porównawczy, a ponieważ cechy są przyrównane do tego modelu, to zajmuje to więcej czasu.

Najmniejszy wzrost jest przy wykorzystaniu wzorca asymetrycznego.

Pozostała jeszcze analiza czasu przetwarzania złączonego w wyniku procesu homografii

punktu charakterystycznego :

Analiza wykresu pokazuje, że czas przetwarzania wykorzystanych w homografii cech maleje

po wykorzystaniu algorytmu kalibracji. Wyniki mają swoje uzasadnienie, ponieważ cechy

mają wyższą jakość (dzięki kalibracji), a większość algorytmów rozpatruje tylko N

najlepszych cech obrazu, to pośród N najlepszych cech, dokładne i długotrwałe sprawdzenia,

czy cecha będzie brała udział w złączeniu obrazów następuje dla mniejszej liczby cech, co

przyspiesza proces. Największy zysk czasowy uzyskujemy z wykorzystaniem wzorców

kołowych.

Dla tej samej sceny prezentujemy wyniki dla algorytmu FAST :

0

1

2

3

4

5

6

7

8

Brak kalibracji Asymetryczne koła - 0.41

Symetryczne koła - 0.45

Szachownica - 0.71

Cza

s p

zetw

arza

nia

ce

chy

[ms]

Typ kalibracji

0

10

20

30

40

50

60

70

Brak kalibracji Asymetryczne koła - 0.41

Symetryczne koła - 0.45

Szachownica - 0.71

Cza

s p

rze

twar

zan

ia z

łącz

on

ej c

ech

y [m

s]

Typ kalibracji

Page 83: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

83

Przeprowadzimy analizę analogicznych danych jak w przypadku powyżej i będziemy tak

postępować dla każdego algorytmu oraz każdej sceny.

Powyższy wykres potwierdza tendendencje wynikająca z analizy analogicznego wykresu dla

algorytmu GFTT. Strategia kalibracyjna z wykorzystaniem asymetrycznych kół oraz

szachownicy okazała się być najlepsza. Wnioski i ich przyczyny są analogiczne, jak dla

algorytmu GFTT.

Powyższy wykres uwidacznia zysk jakościowy, poprzez zmniejszenie dystansu hamminga

między cechami obrazu referencyjnego oraz złączonego. Najlepiej wypadła startegia

asymetrycznych kół. Wnioski i ich przyczyny są analogiczne, jak dla algorytmu GFTT.

Teraz przedstawimy kilka wykresów prezentujących czasy działania algorytmów:

0

100

200

300

400

500

600

Brak kalibracji Asymetryczne koła - 0.41

Symetryczne koła - 0.45

Szachownica - 0.71

Licz

ba

wyk

ryty

ch c

ech

Typ kalibracji

Punkty charakterystyczne

Złączone cechy obrazu

Punkty homografii

12

12,5

13

13,5

14

14,5

15

15,5

Brak kalibracji Asymetryczne koła - 0.41

Symetryczne koła - 0.45

Szachownica - 0.71

Śre

dn

i dys

tan

s h

amm

ing

Typ kalibracji

Page 84: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

84

Analogicznie jak w przypadku algorytmu GFTT, dzięki kalibracji kamery udało się skrócić

czas przetwarzania klatki. Wnioski i ich przyczyny są analogiczne, jak dla algorytmu GFTT.

Jeżeli rozpatrzymy czas przetwarzania cechy w obrazie, to kalibracja spowalnia proces

przetwarzania cech w obrazie. Wnioski i ich przyczyny są analogiczne, jak dla algorytmu

GFTT.

320

325

330

335

340

345

350

355

360

365

370

Brak kalibracji Asymetryczne koła - 0.41

Symetryczne koła - 0.45

Szachownica - 0.71

Cza

s p

rze

twar

zan

ia k

latk

i [m

s]

Typ kalibracji

0

0,2

0,4

0,6

0,8

1

1,2

Brak kalibracji Asymetryczne koła - 0.41

Symetryczne koła - 0.45

Szachownica - 0.71

Cza

s p

rze

twar

zan

ej c

ech

y [m

s]

Typ kalibracji

Page 85: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

85

Raz jeszcze podobnie jak dla GFTT mamy szybsze przetwarzania punktów wykorzystanych

przy złączeniu obrazów. Wnioski i ich przyczyny są analogiczne, jak dla algorytmu GFTT.

Ze względu na podobieństwo uzyskanych wyników przy analizie czasowej (bez względu na

ilość cech w scenie, oraz algorytm wykorzystany), od tej pory będziemy prezentować

najważniejszy test obrazujący czas przetwarzania cechy wykorzystanej w złączeniu między

obrazami. Analiza czasów przetwarzania klatek dowiodła, że sumaryczny czas maleje po

wykonaniu kalibracji kamery. Zatem, wzrost czasu przetwarzania cech w obrazie nie jest tak

istotny, jak zysk czasowy na skróceniu przetwarzania punktów wykorzystanych w złączeniu

obrazów.

Analiza algorytmu HARRIS:

Poniższy wykres przedstawia liczbę wykrytych cech:

0

2

4

6

8

10

12

14

16

18

Brak kalibracji Asymetryczne koła - 0.41

Symetryczne koła - 0.45

Szachownica - 0.71

Cza

s p

rze

twar

zan

ia p

un

ktu

ho

mo

graf

ii [m

s]

Typ kalibracji

0

10

20

30

40

50

60

Brak kalibracji Asymetryczne koła - 0.41

Symetryczne koła - 0.45

Szachownica - 0.71

Licz

ba

wyk

ryty

ch c

ech

w o

bra

zie

Typ kalibracji

Punkty charakterystyczne

Złączone cechy obrazu

Punkty homografii

Page 86: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

86

Ponownie daje się zauważyć korzyści płynące z przeprowadzenia procesu kalibracji. Typ

kalibracji asymetrycznych kół ponownie działał najlepiej. Raz jeszcze uwidacznia się, że

wzorzec symetryczny dostarcza najgorszych jakościowo cech spośród badanych wzorców

kalibrujących.

Dalej zajmiemy się analizą jakości wykrytych cech:

Można wyciągnąć wniosek, że działanie procesu kalibracji zwiększa jakość wykrytych cech

obrazu. W odróżnieniu od algorytmów GFTT oraz FAST, tutaj wzorzec symetrycznych kół

wykrył cechy o mniejszym średnim dystansie Hamminga względem wzorca szachownicy.

Jeżeli połączymy analizę tego wykresu oraz poprzedniego, to można wnioskować, że

algorytm Harrisa dla wzorca symetrycznych kół dostarczył około 10 bardzo wysokich

jakościowo cech oraz całkiem sporo cech, o niskiej jakości, ale poniżej wartości progowej,

aby uznać je za złączenia. W przypadku szachownicy, więcej było cech uznanych za

złączenie, ale o średniej niższej jakości. W efekcie, średni dystans Hamminga jest niższy dla

symetrycznych kół, pomimo faktu, że wzorzec ten dostarczył mniej cech będących

złączeniami.

Warto zaprezentować analizę powiązania algorytmu Harrisa na czasie przetwarzania

złączonej cechy:

12,8

13

13,2

13,4

13,6

13,8

14

14,2

14,4

Brak kalibracji Asymetryczne koła - 0.41

Symetryczne koła - 0.45

Szachownica - 0.71

Śre

dn

i dys

tan

s H

amm

inga

mię

dzy

ce

cham

i ob

razu

Typ kalibracji

0

20

40

60

80

100

120

140

160

180

Brak kalibracji Asymetryczne koła - 0.41

Symetryczne koła - 0.45

Szachownica - 0.71

Cza

s p

rze

twar

zan

ia p

un

ktu

ho

mo

graf

ii [m

s[

Typ kalibracji

Page 87: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

87

Raz jeszcze widzimy, korzystne działanie prawidłowo przeprowadzenog procesu kalibracji

kamery. Ponownie największy zysk przyniosła strategia z wykorzystaniem asymetrycznych

kół.W tym przypadku wyniki i ich analiza jest identyczna jak w przypadku pozostałych

algorytmów.

Przenalizujemy jeszcze algorytmy ORB i STAR. Zacznijmy od algorytmu ORB:

Oto wykres wykrytych cech w obrazie :

Wyniki nie zadziwiają, albowiem prezentują identyczną tendencję, jak wcześniejsze wykresy

dla innych algorytmów. Również analiza tych wyników jest analogiczna jak poprzednio.

Oto wykres prezentujący jakość cech wykrytych w scenie :

Przy analizie powyższego wykresu warto zwrócić uwagę, że dystans Hamminga jest

najwyższy spośród wszystkich dotychczasowych testów, niezależnie od wybranego wzorca.

Zgodnie z tabelą prezentowaną w rozdziale 3.3, algorytm ORB, wykrywa cechy o gorszych

jakościowo metrykach niż inne badane algorytmy. Fakt, że wzorzec szachownicy dostarczył

0

20

40

60

80

100

120

140

Brak kalibracji Asymetryczne koła - 0.41

Symetryczne koła - 0.45

Szachownica - 0.71

Licz

ba

wyk

ryty

ch c

ech

w o

bra

zie

Typ kalibracji

Punkty charakterystyczne

Złączone cechy obrazu

Punkty homografii

14,6

14,7

14,8

14,9

15

15,1

15,2

15,3

15,4

15,5

15,6

Brak kalibracji Asymetryczne koła - 0.41

Symetryczne koła - 0.45

Szachownica - 0.71

Śre

dn

i dys

tan

s H

amm

inga

mię

dzy

ce

cham

i ob

razu

Typ kalibracji

Page 88: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

88

najlepszych pod względem dystansu Hamminga cech, nie powinien być szczególnie

interpretowany. Jest tak dlatego, że ogólny dystans Hamminga jest wysoki i wyniki mogą nie

być reprezentatywne.

Oto wykres prezentujący czasy przetwarzania punktu biorącego udział w wyznaczeniu

homografii:

W przypadku algorytmu ORB, czasy przetwarzania złączonych cech okazały się być bardzo

zbliżone do siebie, w przeciwieństwie do pozostałych algorytmów. Stało się tak dlatego, że

algorytm ORB wykrył znaczną liczbę cech o przeciętnej jakości (wysokim dystansie

Hamminga), dlatego też czasy przetwarzania cech są podobne, bo jakościowo, nie ma istotnej

różnicy w analizowanych cechach obrazu.

Pozostał do przeanalizowania algorytm STAR.

Oto wykres wykrytych cech w obrazie :

Zaskakującym jest fakt, że na powyższym wykresie, wzorzec asymetrycznych kół, dostarcza

procentowo zdecydowanie więcej cech homografii i złączenia w stosunku do wszystkich cech

0

5

10

15

20

25

Brak kalibracji Asymetryczne koła - 0.41

Symetryczne koła - 0.45

Szachownica - 0.71

Cza

s p

rze

twar

zan

ia p

un

ktu

ho

mo

graf

ii [m

s[

Typ kalibracji

0

5

10

15

20

25

30

35

Brak kalibracji Asymetryczne koła - 0.41

Symetryczne koła - 0.45

Szachownica - 0.71

Licz

ba

wyk

ryty

ch c

ech

w o

bra

zie

Typ kalibracji

Punkty charakterystyczne

Złączone cechy obrazu

Punkty homografii

Page 89: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

89

obrazu. Oznacza to wysoką jakość wykrytyc cech w obrazie oraz wyższą od pozostałych

wzorców.

Oto wykres prezentujący jakość cech wykrytych w scenie :

Powyższy wykres prezentuje identyczne tendencje jak ten sam wykres dla pozostałych

algorytmów, z tą istotną różnicą, że algorytm STAR, dostarcza nam cech o bardzo niewielkim

dystansie Hamminga (rzędu 10.0, podczas, gdy algorytm ORB rzędu 15.0). Znacząco lepiej

zachowywał się wzorzec asymetrycznych kół. Ma to swoje uzasadnienie w budowie

algorytmu STAR, który wykorzystuje próbkowanie i badanie kąta obrotu cechy z progiem 15

stopni. Oznacza to, że STAR będzie lepiej działał, po kalibracji z wykorzystaniem wzorców

kolistych. Jak widać na wykresie, nawet, typowo gorsza kalibracja z symetrycznymi kołami

daje porównywalne wyniki dla algorytmu STAR co szachownica, ze względu na

kompatybilność z detekcją wokół koła z progową wartościową kątową, która uzupełnia się z

kalibracją kolistą.

Oto wykres prezentujący czasy przetwarzania punktu biorącego udział w wyznaczeniu

homografii :

Analiza powyższego wykresu, pokazuje, że wzorce koliste dla algorytmu STAR, powodują

szybsze przetwarzania niż wzorzec szachownicy. Jest tak ze względu na wykorzystany w

algorytmie kolisty deskryptor.

0

2

4

6

8

10

12

14

Brak kalibracji Asymetryczne koła - 0.41

Symetryczne koła - 0.45

Szachownica - 0.71

Śre

dn

i dys

tan

s H

amm

inga

mię

dzy

ce

cham

i ob

razu

Typ kalibracji

0

50

100

150

200

250

Brak kalibracji Asymetryczne koła - 0.41

Symetryczne koła - 0.45

Szachownica - 0.71

Cza

s p

rze

twar

zan

ia p

un

ktu

ho

mo

graf

ii [m

s[

Typ kalibracji

Page 90: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

90

Ze względu na uzyskane podobne wyniki potwierdzające wpływ procesu kalibracji na

przetwarzanie i łączenie obrazów, niezależnie od wykorzystanego algorytmu oraz liczby cech

występujących w scenie (powyższe wykresy prezentują identyczne tendencje dla pozostałych,

bogatszych w cechy scen), zdecydujemy się na pokazanie ciekawego wpływu błędnej

kalibracji kamery na opisane działanie algorytmów oraz wpływu rozdzielczości kamery w

procesie kalibracji na dalsze przetwarzanie obrazu.

Zacznijmy od niepoprawnie przeprowadzonego procesu kalibracji :

Warto zaprezentować przykład obrazujący efekt wizualny niepoprawnej kalibracji :

Co gorsza, taka kalibracjia o błędzie reprojekcji rzędu 10 jednostek umożliwia porównywanie

sceny referencyjnej takiej jak ta na poniższym rysunku :

Już na pierwszy rzut oka widać, że te dwie złączone klatki, są podobne, ale nie są identyczne.

Sprawdźmy teraz, jak taka niepoprawna kalibracja wpływa na przetwarzanie cech przez

algorytmy :

Zacznijmy od wykresu prezentującego liczbę wykrytych cech ( i jego porównaniu z

działaniem algorytmów bez przeprowadzenia błędnej kalibracji):

Page 91: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

91

Analiza powyższego wykresu jest jednoznaczna. W przypadku błędnej kalibracji kamery,

otrzymamy zarówno mniej cech w obrazie, mniej złączeń oraz wyznaczymy homografię na

podstawie mniejszej liczby cech. Jest to spowodowane wysoką entropią cech w obrazie.

Błędny model kalibracji powoduje błędne dopasowania cech w obrazach, przez co maleje

liczba złączeń.

Teraz rozpatrzmy jakość uzyskanych cech obrazu:

Analiza wykresu jednoznacznie potwierdza, że błędna kalibracja wypływa negatywnie

(powoduje wzrost dystansu Hamminga) na jakość pozyskanych cech w obrazie. Błędna

kalibracja kamery powoduje dostarczenie niepoprawnego modelu, na podstawie którego

wyznaczymy położenie cechy. Jeżeli porównamy je z położeniem cechy wynikającym z

parametrów kamery, to różnicą będzie większa niż w przypadku braku kalibracji, ponieważ

nie ma dodatkowego narzutu spowodowanego błędnym modelem kalibracji.

Ostatnie badanie dotyczy czasu przetwarzania cech, które brały udział w złączeniu:

0

100

200

300

400

500

600

700

800

900 Li

czb

a w

ykry

tych

ce

ch

Typ kalibracji wraz z algorytmem

Punkty charakterystyczne

Złączone cechy obrazu

Punkty homografii

0 2 4 6 8

10 12 14

Śre

dn

i dys

tan

s H

amm

inga

Typ kalibracji wraz z algorytmem

Page 92: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

92

Błędna kalibracja wpływa negatywnie również na czas przetwarzania cech obrazu. Jest to

spowodowane narzutem czasowym na zbudowanie błędnego modelu. Następnie na bazie

błędnego modelu homografia rozpatruje gorsze jakościowo cechy (wyższy dystans

Hamminga) więc wiele testów np. 12 punktówych dla algorytmu FAST, musi być

przeprowadzanych w pełnii.

Zatem błędna kalibracja wpływa niekorzystnie na działanie algorytmów operujących na

cechach obrazu. Istotnym jest zatem, aby proces kalibracji kamery zakończył się sukcesem, w

przeciwnym wpadku należy powtórzyć kalibrację, gdyż przejście ze źle skalibrowaną kamerą

do przetwarzania obrazu pogorszy uzyskane rezultaty.

Kolejny badany przypadek to wpływ rozdzielczości klatek przy procesie kalibracji na

działanie algorytmów operujących na cechach. W tym celu, wykonane zostały badania po

kalibracji kamery zakończonej z sukcesem w rozdzielczości 800x480 o błędzie reprojekcji

0.41 z wykorzystaniem wzorca asymetrycznych kół oraz kalibracji w rozdzielczości 640 x

480, również z wykorzystaniem wzorca asymetrycznych kół, gdzie uzyskano błąd reprojekcji

0.52.

Zacznijmy od porównania liczby wykrytych i wykorzystanych w złączeniach i homografii

cech w obrazie:

0

10

20

30

40

50

60

70

80

90 C

zas

prz

etw

arza

nia

pu

nkt

u h

om

ogr

afii

[ms]

Typ kalibracji wraz z algorytmem

Page 93: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

93

Na podstawie powyższego wykresu, widzimy, że korzystając z tego samego wzorca

kalibrującego, ale mniejszej rozdzielczości uzyskamy gorsze wyniki. Niższa rozdzielczość

kalibracji wpływa niekorzystnie na liczbę wykrytych cech w obrazie. Przyczyną tego

zjawiska jest to, że wraz ze zmniejszaniem rozdzielczości wzrasta dystan Hamminga i

pogarsza się jakość wykrywanych cech. Jest tak dlatego, że każda różnica o piksel jest przy

mniejszej rozdzielczości bardziej znacząca.

Przeanalizujmy teraz jakość uzyskanych cech uwzględniając rozdzielczość kalibracji:

Analiza jakościowa wskazuje, że w przypadku wszystkich algorytmów zmniejszenie

rozdzielczosci obrazów w procesie kalibracji ma swoje odzwierciedlenie w jakości

uzyskanych złączeń cech w procesie dalszego przetwarzania obrazu. Uzasadnienie jest proste,

jako, że dystans Hamminga jest operacją XOR na bitach, to przekłamanie nawet o 1 piksel

(które to ma większe znaczenie przy mniejszej rozdzielczości) zwiększa dystans Hamminga.

Poniżej przedstawiamy wykres zależności czasu przetwarzania cech obrazu od rozdzielczości

użytej w procesie kalibracji :

0

50

100

150

200

250

300

350

400

450 Li

czb

a w

ykry

tych

ce

ch

Algorytm wraz z kalibracją asymetryczną o podanej rozdzielczości

Punkty charakterystyczne

Złączone cechy obrazu

Punkty homografii

0

2

4

6

8

10

12

14

16

18

GFTT 800x480

GFTT 640x480

FAST 800x480

FAST 640x480

HARRIS 800x480

HARRIS 640x480

ORB 800x480

ORB 640x480

STAR 800x480

STAR 640x480

Śre

dn

i dys

tan

s H

amm

inga

Algorytm wraz z rozdzielczoscią kalibracji

Page 94: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

94

Analiza czasów przetwarzania punktów homografii również wypada niekorzystnie względem

zmniejszania rozdzielczości przetwarzanych w trakcie procesu kalibracji klatek. Różnice w

przeciwieństwie do poprzednich testów nie są znaczące.

Na koniec przedstawione zostaną dla każdego algorytmu w każdej scenie analogiczne

powyższe 3 wykresy, aby dla każdego algorytmu wybrać optymalny wzorzec kalibrujący oraz

zysk z wykonania poprawnej kalibracji. Dzięki temu, będzie można ponownie oszacować i

porównać działania testowanych algorytmów.

Zacznijmy od algorytmu GFTT:

0

20

40

60

80

100

120

140

160

180

GFTT 800x480

GFTT 640x480

FAST 800x480

FAST 640x480

HARRIS 800x480

HARRIS 640x480

ORB 800x480

ORB 640x480

STAR 800x480

STAR 640x480

Cza

s p

rze

twar

zan

ia p

un

ktu

ho

mo

graf

ii [m

s]

Algorytm wraz z rodzielczością kalibracji

0

100

200

300

400

500

600

700

800

900

1000

Licz

ba

wyk

ryty

ch c

ech

w o

bra

zie

Typ kalibracji oraz stopień liczności cech w scenie

Punkty charakterystyczne

Złączone cechy obrazu

Punkty homografii

Page 95: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

95

Analiza wyników pokazuje, że w każdym przypadku sceny, najlepiej zadziałała kalibracja

asymetryczna. To dla tego wzorca uzyskaliśmy najwięcej cech wykrytych w obrazie, które

następnie zostały uznane za złączenia. Przyczyną tego zachowania jest fakt, że wzorzec

asymetryczny dostarcza najlepsze jakościowo pojedyncze cechy, które są następnie

wykorzystane przy złączeniach.

Wykres obrazujący jakość wykrytych cech:

Również powyższy wykres utwierdza nas w przekonaniu, że najlepszym wzorcem

kalibrującym jest wzorzec asymetrycznych kół. Wzorzec asymetrycznych kół dzięki pokryciu

się z różnymi deskryptorymi opartymi o analizę kolistych obiektów (ORB, STAR, SIFT,

SURF) dostarcza dodatkowych parametrów w modelu kalibracji, dzięki czemu uzyskujemy

sumarycznie lepszy efekt.

Zobaczmy jeszcze analogiczny wykres dla czasów przetwarzania punktu złączenia :

0

2

4

6

8

10

12

14

16

Page 96: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

96

Powyższy wykres raz jeszcze potwierdza, że optymalnym wyborem jest wzorzec

asymetrycznych kół. Co prawda, często wzorzec symetrycznych kół pozwala uzyskać

mniejsze czasy, to porównanie z poprzednimi wykresami dowodzi, że zysk czasowy nie

rekompensuje braku znaczącej poprawy jakości przetwarzanych cech oraz braku odporności

na zmienne oświetlenie, które cechują wzorzec symetryczny.

W pracy pominięto analogiczne serie wykresów dla pozostałych algorytmów, gdyż

przedstawiają one zbieżne wyniki. Należy zatem przyjąć, że wzorzec asymetrycznej

szachownicy najlepiej oddziałowywuje na dalsze przetwarzanie obrazów. Ten wniosek

potwierdza wcześniejsze przypuszczenia, że uzyskując najmniejszy średni błąd reprojekcji w

procesie kalibracji kamery, uzyskujemy możliwie najlepszą kalibrację. Istotnym jest fakt, że

liczba cech w scenie nie wpływała znacząco na wybór optymalnego wzorca.

Na koniec przedstawimy wykresy, które porównają zysk, jaki niesie za sobą kalibracja

kamery dla każdego z testowanych algorytmów. Obliczać będziemy procentową różnicę po

uśrednieniu ze wszystkich scen względem przetwarzanych obrazów bez kalibracji.

Zacznimy od porównania liczby wykrywanych cech:

0

10

20

30

40

50

60

70

Page 97: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

97

Analiza wykresu pokazuje, że w każdym przypadku zastosowania optymalnej kalibracji

maleje liczba wykrywanych cech w obrazie. Rosną natomiast liczby złączonych cech oraz

punktów wynikających z wyznaczenia homografii. Oceniając powyższe algorytmy wypada

wspomnieć, że najgorsze wyniki prezentuje algorytm ORB. Jako miarę oceny należy wziąć

pod uwagę przede wszystkim procent punktów uznanych za wartościowe po wyznaczeniu

homografii. Zgodnie z tym kryterium lepiej radzą sobie algorytmy HARRIS, FAST, STAR

oraz największy zysk odnotowywujemy w przypadku algorytmu GFTT. Działanie

algorytmów jest zgodne z oczekiwanym, ponieważ kalibracja powinna dzięki dostarczonemu

modelowi dodatkowo filtrować i nie przepuszczać cech, które nie przekroczą wartości

progowej. Również dzięki dostarczonemu modelowi, można precyzyjniej wybrać cechy

biorące udział w złączeniu i w efekcie czego takich cech jest więcej.

Teraz rozpatrzmy podobną analizę w przypadku badania dystansu hamminga dla algorytmów:

-30

-20

-10

0

10

20

30

40

50

60

70

80

GFTT FAST HARRIS ORB STAR

Pro

cen

tow

a zm

ian

a p

o o

pry

mal

ne

j kal

ibra

cji

Algorytm

Punkty charakterystyczne

Złączone cechy obrazu

Punkty homografii

0

1

2

3

4

5

6

7

8

GFTT FAST HARRIS ORB STAR

Pro

cen

tow

a ró

żnic

a w

śre

dn

im

dys

tan

sie

Ham

min

ga

Algorytm

Page 98: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

98

Analiza wykresu jest prosta. Im większa procentowa różnica, tym większa korzyść z

zastosowania procesu kalibracji. Najlepiej pod tym względem wypadają algorytmy FAST

oraz STAR.

Na koniec przeanalizujmy jeszcze procentową zmianę czasu przetwarzania cech w obrazie:

Analiza tego wykresu jest również jednoznaczna. Im większa procentowa różnica, tym

bardziej zasadne stosowanie algorytmu kalibracji. Najlpiej wypadają algorytmy GFTT, STAR

oraz FAST.

Dzięki wnikliwej analizie testów, widzimy, że optymalnym wzorcem okazała się być

asymetryczne koła. Dodatkowo, badając wpływ kalibracji na działanie algorytmów można

uznać, że

Maleje liczba wykrytych cech w obrazach

Wzrasta liczba cech uznanych za homograficzne

Wzrasta liczba cech biorących udział w złączeniu

Wzrasta jakość wykrtytych cech

Maleje czas przetwarzania cech biorących udział w złączeniu obrazów

Zastanawiając się, które kryterium jest najważniejsze, dochodzimy do wniosku, że

najistotniejsze jest aby wzrastała jakość wykrywanych cech, dalej w kolejności mamy czas

przetwarzania cechy. Biorąc to pod uwagę należy uznać, że dzięki procesowi kalibracji

kamery możemy sklasyfikować jej oddziaływanie na poszczególne algorytmy od najlepszej

do najmniej znaczącej następująco :

1) FAST

2) STAR

3) GFTT

4) HARRIS

5) ORB

Oznacza to, że największymi beneficjentami kalibracji są algorytmy FAST oraz STAR.

0

10

20

30

40

50

60

GFTT FAST HARRIS ORB STAR

Pro

cen

tow

a ró

żnic

a w

cza

sie

p

rze

twar

zan

ia c

ech

y zł

ącze

nia

Algorytm

Page 99: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

99

6.2.3 Wyniki testowania wpływu procesu kalibracji na renderowanie rzeczywistości

rozszerzonej

Na potrzeby testów zakładamy, że do detekcji cech wykorzystamy algorytm STAR,

deskryptory cech wyliczamy za pomocą ORB, a do łączenia obrazów wykorzystamy algorytm

oparty na dystanise Hamminga. Dodatkowo, załóżmy, że za optymalny wzorzec do

przeprowadzenia procesu kalibracji kamery uznajemy asymetryczne koła.

Na początek przedstawimy dowód, że kalibracja kamery pozytywnie wpływa na wyznaczanie

pozycji kamery w przestrzenii 3W. Jako miarę jakości należy uznać dystans pomiędzy

wyrenderowanym obiektem AR, a środkiem znacznika (im renderowany sześcian będzie

bliżej środka znacznika, tym lepiej określona jest poza kamery):

Powyższy obraz prezentuje działanie renderowania AR na wskazanym obiekcie 2D

(znaczniku) bez kalibracji kamery. Widzimy, że sześcian został wyrenderowany w otoczeniu

znacznika, ale jego odległość od środka znacznika jest znacząca. Spójrzmy teraz, jak wygląda

renderowanie AR, po zastosowaniu kalibracji kamery optymalną metodą wzorca

asymetrycznych kół.

Page 100: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

100

Powyższy przykład obrazuje, że dzięki kalibracji kamery renderowany sześcian znajduje się

bliżej środka znacznika, co oznacza lepsze wyznaczenie pozy kamery w świecie, czyli

przestrzeni 3W.

Przyjrzyjmy się następującym danym :

Ustalono, że środek wykrytego znacznika znajduje się w środku układu współrzędnych, czyli

w przestrzenii 3W w punkcie (0,0,0). W trakcie serii testów renderowania AR zbierano dane

przed i po procesie kalibracji, w szczególności wektory transalcji oraz obrotu, które pozwalają

określić stopień poprawności renderowania AR i jej odległość od środka znacznika. Po

przeprowadzeniu przekształceń, możemy zbierać dane macierzy określających pozę kamery

w OpenGL oraz w OpenCV. Dzięki danym z tych macierzy będzie można wyliczyć w

odległość wyrednerowanej AR od punktu (0,0,0). Im mniejsza odległość w każdym z

wymiarów, tym bliżej środka znacznika renderowany jest sześcian.

Dane prezentują się następująco :

Page 101: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

101

Ujemne wartości na osi z należy interpretować jako renderowanie się AR poniżej płaszczyzny

o z = 0 i obejmującej znacznik. Potocznie oznacza to "wtapianie się" AR w scenę. Powyższy

wykres obrazuje, że dzięki procesowi kalibracji możemy zmniejszyć odległość dla każdej z

osi od środka znacznika. Podsumowanie wraz z analizą przeniesiemy na koniec, wszak nie ma

znaczenia, czy rozpatrujemy względną odległość, czy też bezwględną.

Aby zaprezentować bardziej wymierne wartości, w przeciwieństwie do pikseli, autor

postanowił zmierzyć w trakcie renderowania AR dystans w cm od środka znacznika. Poniżej

wykres obrazujący wpływ kalibracji kamery na tę wartość :

Analizując powyższy wykres widzimy, że optymalna kalibracja kamery, zmniejsza odległość

renderowania AR od środka znacznika. Oznacza to, że kalibracja kamery pozwala z większą

dokładnością wyznaczyć położenie kamery w przestrzeni 3W. Przyczyną takiego działania

renderingu jest fakt, że dzięki kalibracji kamery dostajemy informację o parametrach

wewnętrznych i zewnętrznych kamery, których korelacja jest taka, że możemy wyznaczyć

macierz projekcji, która precyzyjniej określi pozę kamery, co zmniejszy dystanse względne i

bezwzględne rednerowanej AR od znacznika.

-100

-50

0

50

100

150

200

250

300

350

x y z Od

legł

ość

sze

ścia

nu

AR

od

śro

dka

zn

aczn

ika

Osie układu współrzędnych

Brak kalibracji

Optymalna kalibracja

0

2

4

6

8

10

12

14

16

18

Brak kalibracji Optymalna kalibracja

Od

legł

ość

śro

dka

sze

ścia

nu

od

śro

dka

zn

aczn

ika

[cm

]

Page 102: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

102

7 Podsumowanie i wnioski końcowe

7.1 Wnioski końcowe

Celem mojej pracy magisterskiej było zbadanie wpływu kalibracji kamery na

wyszukiwanie pozy kamery w przestrzeni 3W. Po przeprowadzeniu licznych testów oraz

wnikliwej analizie, mogę stwierdzić, że teza brzmiąca, że kalibracja kamery w urządzeniach

mobilnych ma wpływ na wyznaczanie pozy w przestrzeni 3W jest prawdziwa. Wykazałem, że

istotne jest, aby przeprowadzać kalibrację z możliwie największą dostępną rozdzielczością.

Przetestowałem 3 typy znaczników oraz wykazałem ich zalety i wady. Symetryczne koła

okazały się być zbyt wrażliwe na gwałtownie zmieniające się oświetlenie. Wzorzec

szachownicy powoduje nieprzyjemny efekt "klatkowania" obrazu, niemniej jednak w trakcie

dalszego przetwarzania obrazu jest porównywalny jakościowo oraz czasowo do optymalnego

wzorca jakim okazały się być asymetryczne koła. Ważne jest, aby monitorować błąd

reprojekcji wynikający z przeprowadzenia kalibracji. Zależność jest taka, że im jest on

mniejszy, tym lepsza jakość skalibrowanego obrazu i mniejszy jest wpływ zniekształceń.

Ponadto wykazałem, że pośród różnych strategii kalibrujących każdy wzorzec ma swoją

najlepszą. Następnie zbadałem wpływ kalibracji na przetwarzanie sekwencji klatek w celu

wyszukiwania możliwie najlepiej dopasowanego wzorca w scenie. Badaniu poddałem

najlepsze wg mojej pracy inżynierskiej algorytmy GFTT, FAST, HARRIS, ORB, STAR.

Wykazałem, że poprawnie przeprowadzona kalibracja (taka, której średni błąd reprojekcji jest

mniejszy od jedności), przyspiesza złączanie obrazów, odfiltrowywuje przeciętne jakościowo

cechy obrazu oraz zmniejsza średni dystans Hamminga między cechami wykorzystanymi w

procesie wyznaczania homografii. Wyniki badań wskazały, że algorytmy FAST, STAR oraz

GFTT mają tendencję ulegać wzmocnieniu w wyniku kalibracji i są na nią bardziej podatne

od pozostałych. Co ważne, udowodniłem praktyczne zastosowanie procesu kalibracji przy

renderowaniu rzeczywistości rozszerzonej. Dzięki kalibracji kamery obiekty znajdują się

bliżej znacznika, w obszarze którego powinny zostać wyrenderowane na ekranach

użytkowników. To właśnie pośrednio dowodzi pozytywnego wpływu kalibracji kamery na

odnajdywanie pozy kamery w przestrzeni 3W.

7.2 Perspektywy rozwoju

Aplikacja stworzona w mojej pracy inżynierskiej umożliwia dodatkowo kalibrację

kamery, testy jej wpływu na algorytmy przetwarzania obrazu, a tym bardziej generację AR.

Realizacja opisywanej aplikacji zakończyła się sukcesem. Wraz z jej rozwojem odkrywałem

coraz szersze możliwości biblioteki OpenCV, platformy OS Android oraz wzorców

projektowych i dobrych praktyk programowania obiektowego. Aplikacja, która powstała jest

typem "grubego klienta", przez co nie ma możliwości dostępu do jej wyników w wygodnej

formie jak np. przeglądarka internetowa. Na pewno jest to jeden z możliwych kierunków

rozwoju aplikacji w stronę platformy z panelem administratora do zarządzania testami i

zbieraniu wyników. Można przypuszczać, że ewentualny rozwój aplikacji powinien

uwzględniać:

Stworzenie bliższego obiektowym praktykom programistycznym API niże to, które

dostarcza biblioteka OpenCV

Page 103: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

103

Włączenie mechanizmów Dependency Inection do projektu, być może z

wykorzystaniem frameworku Spring

Stworzenie odpowiednich testów jednostkowych na platformę OS Android

Komunikację z serwerem, który gromadziłby dane i przetwarzał je w czasie

rzeczywistym

Stworzenie własnego wzorca kalibrującego kamerę, asymetrycznego, który

umożliwiłby jeszcze skuteczniejszą kalibrację kamery

Stworzenie algorytmu kalibracji kamery, który będzie wspierał dowolny, zadany

wzorzec kalibrujący

Wsparcie do wspierania dynamicznego dodawania znaczników, na których podstawie,

generowana będzie AR

Udostępnienie kodów źródłowych projektu na otwartym i dostępnym publicznie

repozytorium GitHub

Udostępnienie aplikacji w serwisie Google Play Store, aby każdy mógł ją

zainstalować na swoim telefonie

Stworzenie instrukcji obsługi programu

Wsparcie urządzeń mobilnych działających na platformach iOS oraz Windows Phone

7.3 Zastosowanie w praktyce

W chwili tworzenia pracy magisterskiej, rynek aplikacji mobilnych coraz

powszechniej wykorzystuje znaczniki oraz generowania AR. Głównymi typami aplikacji,

które wykorzystują ten model są reklamy oraz aplikacje o charakterze rozrywkowym.

Warto wspomnieć, że możliwości aplikacji mobilnych wykorzystujących cechy

obrazów oraz kalibrację kamery będą stawały się z roku na rok coraz większe. Przykładowo

telefon komórkowy Samsung Galaxy S2, na którym przeprowadzano testy, posiada

przestarzałe w 2015 roku parametry techniczne, aczkolwiek wystarczające do wykorzystania

opisywanych algorytmów i AR w czasie rzeczywistym. Wraz z rozwojem sprzętu mobilnego

prognozuje się odchodzenie od drogich kamer i aparatów fotograficznych. Dodatkowo

pojawienie się na rynku urządzeń takich jak Google glass oraz Oculus Rift otwiera przed

aplikacjami przetwarzającymi obraz nowe dziedziny zainteresowania takie jak: leczenie

lęków u pacjentów, wideokonferencje, nawigacja w przestrzenii 3D, gry komputerowe,

przewodniki po miastach, aplikacje symulacyjne dla różnego rodzaju środków transportu.

Rynek aplikacji wykorzystujących rzeczywistośc rozszerzoną AR lub wirtualną VR

jest rynkiem stale roznącym o następujących prognozach odnośnie wzrostu oraz wartości:

Page 104: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

104

Analizując powyższy wykres, widzimy, że branża dotycząca zagadnień AR jest

przyszłościowa. Ciekawe, jaka przyszłość czeka aplikacje, które przetwarzają obraz, ale na

podstawie wspomnianych prognoz, można mieć przypuszczenia, że rzeczywistość

rozszerzona ma przed sobą świetlaną przyszłość.

Bibliografia:

1. Szeliski Richard: Computer Vision: Algorithms and Applications 2010

2. Bradski Gary, Kaebler: 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. The OpenCV Tutorials Release 2.4.10

5. Pavlenko Andrey: OpenCV for Android ECCV 2012: 1-35

6. Baggio Daniel Lelis: Mastering OpenCV with Practical Computer Vision Projects Packt

Publishing 2011

7. Rublee Ethan, Rabaud Vincent, Konolige Kurt, Bradski Gary R: ORB: An efficient

alternative to SIFT or SURF. ICCV 2011: 2564-2571

8. Collins Charlie, Galpin Michael, Kaeppler Matthias: Android w praktyce Helion 2012

9. Howse Joseph: OpenCV for Secret Agents Packt Publishing 2015

10. Brown, D. C.: Close-range camera calibration. Photogrammetric Engineering,

Page 105: PRACA DYPLOMOWA MAGISTERSKA · platformie Android OS. Uwzględniono różne algorytmy kalibracji oraz różne wzorce kalibrujące. Praca zawiera opis algorytmów łączenia oraz odnajdywania

105

1971 : 855–866.

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. Shao, J. Han, J:Computer Vision and Machine Learning with RGB-D Sensors (Springer,

2014). ISBN 978-3-319-08651-4

15. Jink Kong: Camera Calibration Using Vertical Lines Packt Publishing ISBN 978-3-642-

37409-8

16. Hanning Tobias: High Precision Camera Calibration Packt Publishing ISBN 978-

3834814135

17. Guzik Piotr: Metody wyszukiwania punktów charakterystycznych i wyznaczania ich cech,

Wydział Elektroniki i Technik Informacyjnych Politechniki Warszawskiej, Instytut

Informatyki 2014 r.

18. Z. Zhang. Flexible Camera Calibration By Viewing a Plane From Unknown

Orientations. International Conference on Computer Vision (ICCV'99), Corfu, Greece, pages

666-673, September 1999.

19. Bouguet Jean-Yves Camera Calibration from Points and Lines in Dual-Space Geometry -

Technical Report, ECCV 1998