Metody wyszukiwania punktów charakterystycznych i wyznaczania ich cech.

Wielkość: px
Rozpocząć pokaz od strony:

Download "Metody wyszukiwania punktów charakterystycznych i wyznaczania ich cech."

Transkrypt

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

2 Kierunek: Specjalność: Informatyka Inżynieria Systemów Informatycznych Data urodzenia: Data rozpoczęcia studiów: Życiorys Urodziłem się 12 VIII 1991 r. w Tychach. Uczęszczałem do IX Liceum Ogólnokształcącego im. C. K. Norwida w Częstochowie, które ukończyłem w 2010 r. W październiku 2010 r. podjąłem studia na Wydziale Elektroniki i Technik Informacyjnych Politechniki Warszawskiej. W lipcu 2012 r. podjąłem pracę zawodową w firmie informatycznej Agitive Sp. z.o.o. jako programista aplikacji mobilnych. W lipcu 2013 r. rozpocząłem pracę w firmie Pentacomp Systemy Informatyczne S.A. jako programista aplikacji JEE oraz projektant systemów baz danych. Współpracuję z tą firmą do dziś.... Podpis studenta EGZAMIN DYPLOMOWY Złożył egzamin dyplomowy w dniu r z wynikiem... Ogólny wynik studiów:... Dodatkowe wnioski i uwagi Komisji:

3 STRESZCZENIE Celem pracy jest przedstawienie cech pozwalających opisać obrazy z wykorzystaniem punktów charakterystycznych. Praca zawiera opis algorytmów łączenia oraz odnajdywania punktów charakterystycznych w obrazach. Ze szczególną uwagą przyjrzano się różnicom w opisywanych algorytmach. Ponadto praca zawiera szczegółowy opis implementacji poszczególnych rozwiązań na system operacyjny OS Android. Znaczną część zajmuje analiza wyników testów w celu klasyfikacji algorytmów ze względu na takie kryteria jak czas przetwarzania i dokładność przetwarzania. Integralną część pracy stanowi kod źródłowy aplikacji mobilnej. Słowa kluczowe: punkty charakterystyczne, detekcja punktów charakterystycznych, deskryptory cech, rzeczywistość rozszerzona, AR, OpenCV, OS Android Title: Feature points characteristics and detection algorithms This paper shows characteristics of feature points and algorithms that can be used for their detection and description. The main aim is to outline differences between the anlysed algorithms. Futrhermore, the paper presents details of implementation working with OS Android. Special attention was paid to analysis of tests and classification of available algorithms on the basis of their performance in certain circumstances such as precision and speed. The crucial part of the paper is a source code of a mobile application. Keywords: Feature Points, Feature Detection, Feature Descriptors, Augmented Reality, AR, OpenCV, OS Android 3

4 1. Spis treści Wstęp Wprowadzenie Cechy punktowe Rzeczywistość Rozszerzona Algorytmy bazujące na punktach kluczowych SIFT: Scale Invariant Feature Transform Wykrywanie ekstremów w przestrzeni skali Wyznaczanie dokładnego położenia punktów kluczowych Usuwanie wpływu krawędzi Przypisanie orientacji Lokalny deskryptor obrazu Dopasowanie punktów kluczowych Wyznaczanie parametrów przekształcenia afinicznego FAST: Features from Accelerated Segment Test Podstawy algorytmu Implementacja detektora punktów kluczowych przy pomocy uczenia maszynowego Minimalizacja oddziałowywania punktów niemaksymalnych Deskryptor punktów kluczowych i ich dopasowanie Detektor narożników Harrisa Podstawy algorytmu Funkcja odpowiedzi narożnika Metoda implementacji algorytmu Deskryptor narożników i ich dopasowanie Algorytm GFTT - Good Features To Track BRISK - Binary Robust Invariant Scalable Keypoints DENSE MSER ORB - oriented BRIEF SURF STAR

5 2.11 BRIEF SIMPLEBLOB FREAK Adaptery dodatkowe Więcej o losowości, czyli RANSAC Przegląd narzędzi Opis Aplikacji Aplikacja pierwsza - własna implementacja wykrywania znacznika i generowania AR Zmiany krawędzi kolorów w obrazie i ich miksowanie Filtry wykorzystujące sąsiedztwo zwane filtami konwolucji (filtry splotu) Szukanie i śledzenie obrazu w scenie Aplikacja druga - badanie efektywności aglorytmów detekcji Metody testowania Wyniki testów Wyniki dla obrazu przedstawiającego książki na półce Wyniki dla obrazu z martwą naturą Wyniki dla obrazu przedstawiającego laptopa i Gwiaździstą Noc van Gogha Wyniki dla obrazu przedstawiają dwie fotografie wiszące na ścianie Wyniki dla obrazu przedstawiającego obraz na ścianie, fragment monitora i fragment szafy Załącznik A - Właściwości kamer i kalibracja Model i parametry wewnętrzne kamery Macierz rotacji i wektor przesunięcia Kalibracja kamery Załącznik B - Stereowizja i geometria epipolarna Stereowizja Geometria epipolarna Macierz zasadnicza i podstawowa

6 Wstęp W niniejszej pracy przedstawimy zbiór dobrze poznanych i opisanych w literaturze metod detekcji punktów charakterystycznych. Metody detekcji mają szeroki zbiór zastosowań. Wykorzystuje się je np. w celu dopasowywania obrazów do wzroca, wyszukiwaniu wzorca w obrazie z kamery w czasie rzeczywistym. Znane są również przypadki wykorzystania opisywanych metod przy uczeniu maszynowym np. przy uczeniu konturu i kształtu wzorców znaków drogowych dla automatów, które sterują samochodami. W końcu szerokim spektrum zastosowań, które obecne prężnie się rozwija jest rzeczywistość rozszerzona (AR), np. poprzez wykrywanie znaczników i wyświetlanie reklam 3D na ekranach telefonów komórkowych (smartfonów). Zaprezentowane zostaną wybrane aspekty ich taksonomii. Przede wszystkim sklasyfikujemy je ze względu na ich najistotniejsze cechy oraz niezmienniki. Najważniejszym kryterium klasyfikacji będzie konkretne zachowanie parametru, na podstawie którego jest dokonywana detekcja. Rozpatrzone zostaną następujące cechy: cechy obrazu, krzywizny geometryczne, przestrzenie skali, piramidy i siatki, zestaw danych wejściowych. Po dokonaniu klasyfikacji przeprowadzimy testy wybranych algorytmów pod kątem ich optymalizacji na potrzeby płynnego działania na urządzeniach mobilnych. W szczególności będą to urządzenia z systemem operacyjnym OS Android. Celem pracy jest stworzenie aplikacji - dema, które pozwoli na benchmarkowe testowanie różnych algorytmów oraz wybranie najlepszych sugestii optymalizacyjnych, przyspieszających obecnie dostępne algorytmy. Dodatkowo zaprezentujemy nowoczesny sposób tworzenia aplikacji na system mobilny OS Android z wykorzystaniem elementów rozszerzonej rzeczywistości (AR). Przedstawione zostanie praktyczne zastosowanie opisywanych algorytmów na potrzeby przekazywania informacji oraz rozrywki. 1 Wprowadzenie 1.1 Cechy punktowe Cechy punktowe są kluczowym zagadnieniem tej pracy. Sposób ich opisu oraz działanie jest niezbędny do zrozumienia działania algorytmów oraz generowania rzeczywistości rozszerzonej (AR). Cechy (ang. features) rozumiane są jako specyficzne konfiguracje pikseli układające się w określone struktury: krawędzie, 6

7 linie, zakończenia linii, rogi, skupiska (blobs) koła lub kule, tekstury, grzbiety (ridges) i szkielety. Struktury zwykle wykrywa się poprzez filtrowanie obrazu. Odpowiedź to najczęściej liczba rzeczywista. Filtry mogą być liniowe bądź nieliniowe. Skuteczny filtr powinien dawać: wysokie odpowiedzi dla pikseli należących do szukanych struktur, niskie odpowiedzi dla pikseli nienależących do szukanych struktur (choć mogących należeć do innych struktur). Cechy punktowe obiektów pozwalają zmniejszyć rozmiar ich opisu na obrazie. Mogą ułatwić przeprowadzenie operacji odnajdywania korespondujących elementów na kolejnych obrazach w sekwencji. Wymagają uważnego doboru progów dyskryminacji dla uzyskania obiektów istotnych do śledzenia elementów. Ważnymi własnościami punktów charakterystycznych są: mała czułość na zmiany orientacji i przesunięcia obiektów, odporność na szum i wahania wartości pikseli obiektów w czasie wywołane zmianą oświetlenia pola obserwacji, mała złożoność obliczeniowa, łatwość przeprowadzania operacji dopasowania w algorytmach śledzenia. Cechy punktowe wyznacza się, analizując zmiany wartości pikseli lub wyliczając statystyki wartości w kołowym obszarze wokół danego piksela. Przekroczenie zadanego progu detekcji wskazuje na wystąpienie cechy punktowej. W zastosowaniach ważne są detektory narożników Harrisa, FAST. Zostaną one zaprezentowane w dalszej części pracy, wraz z innymi algorytmami. Należy podkreślić, że przetwarzanie punktów charakterystycznych pozwala na zwiększenie szybkości porównywania obrazów. Algorytm analizujący każdy piksel i zestawiający wszystkie piksele między obrazami jest niewydajny. Ponadto nie daje pewności, że rozpatrywane piksele są znaczące i niezmienne w czasie. Z tego powodu analizuje się punkty cechujące się, o ile to możliwe, niezmiennością w zależności od rotacji, przesunięcia i skali. W literaturze są one nazywane punktami kluczowymi lub charakterystycznymi. Klasycznym podejściem do analizy obrazów jest trójfazowy algorytm polegający na: detekcji punktów charakterystycznych, wydobyciu cech (deskryptorów), czyli opisów tych punktów, znalezieniu odpowiadających sobie punktów charakterystycznych dwóch obrazów. Jednym z najpowszechniejszych zastosowań cech punktowych w aplikacjach są rozwiązania powiązane z generowaniem rzeczywistości rozszerzonej (AR). 1.2 Rzeczywistość Rozszerzona Rzeczywistość Rozszerzona (ang. Augmented Reality, AR) jest terminem określającym metody łączenia scen rzeczywistych z elementami wirtualnymi 7

8 wygenerowanymi przez komputer. Łączenie elementów wirtualnych i rzeczywistych zachodzi w czasie rzeczywistym. Ogólnie przyjętą definicję Rzeczywistości Rozszerzonej przedstawił Ronald Azuma. Uwypukla ona następujące cechy Augmented Reality: łączenie scen wirtualnych i rzeczywistych, interaktywność w czasie rzeczywistym, poprawne odwzorowywanie wzajemne położenie obiektów. Definicja nie ogranicza Rzeczywistości Rozszerzonej jedynie do łączenia obrazów, ponieważ coraz częściej spotyka się systemy oddziałujące na inne zmysły - słuch czy węch. Systemy Rzeczywistości Rozszerzonej wywodzą się z systemów Rzeczywistości Wirtualnej (VR), które przenoszą użytkownika do syntetycznie wygenerowanego środowiska. Systemy AR należą do rodziny systemów Mixed Reality, którą zdefiniował Paul Milgram. Dzięki Rzeczywistości Rozszerzonej percepcja użytkownika wzbogacona zostaje o wirtualne informacje, które pomagają w wykonywaniu rzeczywistych zadań. Podstawą działania każdego systemu AR jest odnalezienie oraz ciągłe śledzenie wybranych punktów odniesienia na scenie rzeczywistej w celu odpowiedniego naniesienia na nią obiektów wirtualnych. Obecne rozwiązania bazują między innymi na detekcji i śledzeniu kształtów, krawędzi i innych cech charakterystycznych obrazu. Jeśli chodzi o zastosowania nawigacyjne, detekcja struktur na obrazie może zostać wzbogacona o dane o położeniu pochodzące z odbiornika GPS lub kompasu. Oprogramowanie oraz sprzęt dedykowany systemom AR: Współczesne zastosowania Systemów Rzeczywistości Rozszerzonej zyskują coraz większą popularność. Systematycznie polepsza się jakość urządzeń optycznych. Następuje miniaturyzacja komputerów, a ich ceny są coraz niższe. Czynniki te powodują, że Rzeczywistość Rozszerzona stosowana jest w wielu dziedzinach życia. Wykorzystuje się ją w pracach specjalistycznych, narzędziach użytkowych, reklamie oraz przemyśle rozrywkowym. Aplikacje mobilne: W zastosowaniach mobilnych dominują programy nawigacyjne oraz gry. Zaprezentujemy teraz przykładowe aplikacje dostępne obecnie na telefonach komórkowych. Wikitude jest aplikacją, która za pomocą algorytmów Rzeczywistości Rozszerzonej wyświetla informacje o otoczeniu użytkownika widocznym poprzez zamontowaną w telefonie kamerę. Aplikacja określa położenie użytkownika za pomocą odbiornika GPS, kompasu oraz ackelereometru. Następnie na tej podstawie uzyskuje z bazy danych informacje o istotnych punktach w otoczeniu. Istnieje kilka wersji omawianej aplikacji. Każda z nich wyświetla informacje innego typu, np. o ważnych punktach turystycznych (Travel guide). Na podobnej zasadzie działają aplikacje takie jak Layar czy SREngine. TwittARound jest reprezentantem społecznościowych aplikacji AR. Za jego pomocą można zobaczyć, kto w okolicy zamieszcza posty na serwisie Twitter. Na obraz z kamery naniesione zostają ikony reprezentujące aktywnych użytkowników znajdujących się w przestrzeni zawartej w polu widzenia kamery. Ze względu na malejące ceny urządzeń mobilnych oraz doświadczenie autora w pracy z systemem operacyjnym OS Android pokażemy informacyjno-rozrywkowe zastosowanie systemu AR. Transmisje telewizyjne: 8

9 Podczas transmisji sportowych programy AR wykorzystywane są do wyświetlania istotnych informacji (np. linii spalonego) wirtualnie nałożonych na obraz areny sportowej nadawany na żywo. Systemy AR coraz częściej pełnią rolę wirtualnej interaktywnej scenografii w studiach telewizyjnych. Z Rzeczywistości Rozszerzonej korzysta się też w celu nakładania wirtualnych reklam podczas transmisji. Mogą one być odmienne dla każdej ze stacji telewizyjnych nadających dany program, a tym samym skierowane do widzów w konkretnym regionie nadawania. Oprócz wymienionych wyżej zastosowań Rzeczywistość Rozszerzona jest obecnie wdrażana i rozwijana w wielu innych dziedzinach, takich jak medycyna, militaria, edukacja, projektowanie czy produkcja. W MIT Media Lab (laboratorium Szkoły Architektury i Planowania będącej częścią Massachusetts Institute of Technology), opracowano prototyp interfejsu użytkownika, będący realizacją pomysłu z filmu Raport Mniejszości. Sterowanie w opisywanym interfejsie odbywa się za pomocą gestów dłoni. Istniejąca w rzeczywistości wersja interfejsu za pomocą zestawu kamer śledzi specjalne znaczniki zamontowane na opuszkach palców. W wersji filmowej użyto przezroczystego wyświetlacza. W przyszłości pomysł ten mógłby otworzyć nowe zastosowania dla systemów Rzeczywistości Rozszerzonej. Być może posłuży jako panel operatorski, który zapewni jednoznaczne rozpoznanie poszczególnych urządzeń oraz bezpośrednią interakcję z nimi. Google obecnie promuje Google Glass - produkt, który może zrewolucjonizować i spopularyzować rynek AR. Jest to następny modelowy przykład dynamiki i rozwojowości badanej tematyki. Stworzyliśmy użyteczną aplikację mobilną - demo, które po wykryciu zadanego obrazu (na potrzeby testów wybrano obrazy Polowanie Akhbara" oraz Gwiaździsta Noc" Vincenta van Gogha), generuje w OpenGL sześcian podążający za kamerą. Ukazuje to łatwość tworzenia aplikacji z elementami rzeczywistości rozszerzonej. Podsumowanie: Rzeczywistość Rozszerzoną można określić jako szerokie spektrum aplikacji tworzonych na potrzeby różnych, często niespokrewnionych zastosowań. Wiele przedstawionych rozwiązań to prototypy we wczesnym stadium rozwoju. Obecnie największą popularność zdobywają aplikacje na urządzenia mobilne, ponieważ wymagają najmniejszego nakładu ze strony użytkownika. Programy tego typu tworzone są niemal na każdy średniej klasy telefon komórkowy. Inne rozwiązania, takie jak specjalne okulary, są jeszcze drogie oraz pod wieloma względami niedoskonałe. Zostało to zaprezentowane we wcześniejszych podrozdziałach. Programy przeprowadzające syntezę elementów w oparciu o informacje zawarte na obserwowanym obrazie używają specjalnych markerów jako punktów odniesienia. Inne metody niewymagające stosowania syntetycznych punktów odniesienia są trudne w implementacji oraz ograniczone do niewielu zastosowań, jak np. śledzenie twarzy. Z tego powodu postanowiliśmy stworzyć demo, które generuje AR korzystając z markera (obrazy van Gogha). Nie sposób generować rzeczywistości rozszerzonej bez znajomości pojęcia cech punktówych, które zostały opisane poniżej. 2 Algorytmy bazujące na punktach kluczowych Algorytmy bazujące na cechach najpierw znajdują punkty szczególne w danych obrazach. Następnie dopasowywują je parami i na podstawie ich położenia wyliczają wektor przemieszczenia. Jakość algorytmu w znacznym stopniu zależy od jakości znalezionych 9

10 punktów szczególnych i ich opisu. Algorytm powinien wykrywać te punkty w odpowiednich miejscach niezależnie od zmian w naświetleniu, położeniu i orientacji obrazu, a także w pewnym stopniu od zmian punktu widzenia czy skali. 2.1 SIFT: Scale Invariant Feature Transform Algorytm ten jest obecnie najpowszechniej stosowany przy tworzeniu obrazów panoramicznych ze względu na jego bardzo dobre wyniki w porównaniu do innych tego typu algorytmów (Mikolajczyk & Schmid). Operuje na obrazach w skali szarości Wykrywanie ekstremów w przestrzeni skali Punkty mogące być kluczowymi identyfikowane są za pomocą wydajnego algorytmu, a następnie sprawdzane pod względem niezależności od przekształceń (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004). Najpierw są lokalizowane w obrazie oraz w konkretnej skali w taki sposób, aby mogły być identycznie umiejscowione w innym widoku tego samego obiektu. Następnie, przy wykorzystaniu ciągłej przestrzeni skali, znajdowane są punkty niewrażliwe na zmianę skali poprzez wyszukiwanie cech stabilnych we wszystkich możliwych skalach. Przestrzeń skali obrazu zdefiniowana jest jako funkcja będąca splotem funkcji Gaussa o różnych skalach z obrazem wejściowym : Gdzie jest operatorem splotu oraz (1) (2) Aby znalezione punkty kluczowe były stabilne w przestrzeni skali, stosuje się wyszukiwanie ekstremów tej przestrzeni stworzonej poprzez splot różnic funkcji Gaussa (Difference-of- Gaussian) z obrazem., która może zostać obliczona poprzez różnicę dwóch sąsiadujących skali z uwzględnieniem stałego mnożnika k: ( ) (3) Funkcja ta wykorzystywana jest ze względu na łatwość obliczeń. Wygładzony obraz L musi zostać wyznaczony w każdym przypadku opisu cech w przestrzeni skali. D jest obliczana przez proste odjęcie obrazów (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004). Oprócz tego udowodniono, że różnica funkcji Gaussa, zwana DoG, jest bliską aproksymacją znormalizowanego Laplasjanu z funkcji Gaussa, którego ekstrema są, w porównaniu do wielu innych dostępnych funkcji, najbardziej stabilnymi punktami kluczowymi w obrazach (Mikolajczyk K., 2002). Zależność pomiędzy D a może zostać wyprowadzona ze wzoru na dyfuzję ciepła: 10

11 (4) Wynika stąd, że może zostać wyliczone ze skończonej aproksymacji przy wykorzystaniu różnicy pomiędzy sąsiadującymi skalami oraz : (5) a zatem: Pokazuje to, że jeśli funkcja DoG posiada skale różniące się o stałą wartość, automatycznie uwzględnia normalizację skali wymaganą przez Laplasjan niezależny od skali. Współczynnik (k 1) w równaniu jest stały dla wszystkich skali i nie wpływa na położenie ekstremów. Błąd aproksymacji zbliża się do zera wraz ze zbliżaniem się k do 1. Jednak w praktyce okazało się (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004), że aproksymacja ma znikomy wpływ na stabilność wykrywania ekstremów i ich lokalizacji, nawet dla stosunkowo dużych różnic między skalami, jak. (6) 11

12 Rysunek 1: Dla każdej oktawy przestrzeni skali obraz jest poddawany splotowi z funkcją Gaussa, dając w wyniku zestaw obrazów w lewej kolumnie. Sąsiadujące obrazy są odejmowane od siebie tworząc różnice w prawej kolumnie. Po każdej oktawie obraz rozmyty jest zmniejszany dwukrotnie. Na Rysunek 1. została zaprezentowana wydajna metoda konstrukcji. Obraz wejściowy jest przyrostowo splatany z funkcją Gaussa, aby dawać obrazy oddzielone w przestrzeni skali stałą wartością współczynnika k, zaprezentowaną w lewej kolumnie. Każda oktawa w przestrzeni skali (odpowiadająca podwajaniu ) została podzielona na stałą liczbę interwałów s, takich, że. Należy stworzyć s + 3 obrazy rozmyte dla każdej oktawy - tak, aby końcowe wykrywanie ekstremów obejmowało pełną oktawę. Sąsiadujące obrazy są od siebie odejmowane, aby stworzyć obrazy różnicowe DoG, pokazane po prawej stronie. Po przetworzeniu pełnej oktawy obraz rozmyty funkcją Gaussa o równej dwukrotności początkowej jej wartości (obraz ten będzie trzecim obrazem od początku zestawu obrazów) jest skalowany poprzez wzięcie każdego wiersza i co drugiego piksela z każdej kolumny. 12

13 Jakość próbkowania zależna od nie różni się od tej na początku poprzedniej oktawy, podczas gdy obliczenia są mocno zredukowane. Rysunek 2: przykład piramidy rozmytych obrazów oraz piramidy DoG. Źródło: (Ostiak). W celu wykrycia ekstremów w każdy piksel porównywany jest z ośmioma sąsiadami w danym obrazie oraz z dziewięcioma w skali ponad i poniżej, tak jak na Rysunek 3. Piksel jest oznaczany jako ekstremum, jeśli jest większy bądź mniejszy od wszystkich sąsiadujących. Koszt takiego sprawdzenia jest stosunkowo niski, gdyż większość sprawdzanych punktów jest odrzucana podczas kilku pierwszych porównań. Ważnym zagadnieniem jest ustalenie częstotliwości próbkowania przestrzeni obrazu i skali niezbędnej do wiarygodnego znalezienia ekstremów. Niestety okazuje się, że nie istnieje określona minimalna odległość pomiędzy dwoma ekstremami, jako że mogą one leżeć bardzo blisko siebie. Można to zauważyć, rozważając przypadek białego koła na czarnym tle. Pojedyncze maksimum w przestrzeni skali występuje w miejscu, gdzie pozytywny region centralny funkcji DoG dopasuje się do rozmiaru i położenia okręgu. Dla bardzo wydłużonej elipsy znajdziemy dwa ekstrema położone blisko jej końców. Jednak skoro położenie maksimów jest ciągłą funkcją obrazu, to dla elipsy o umiarkowanym wydłużeniu znajdziemy się pomiędzy powyższymi przypadkami, z dwoma maksimami leżącymi bardzo blisko siebie. Z tego powodu należy znaleźć równowagę pomiędzy wydajnością a dokładnością. W praktyce okazuje się (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004), że ekstrema leżące blisko siebie są dość niestabilne nawet przy niewielkich zmianach w obrazie. Najlepsze wartości znajdowane są eksperymentalnie poprzez przestudiowanie wyników dla różnych częstotliwości próbkowania. Wybiera się te dające najbardziej rzetelne rezultaty w warunkach symulacyjnych. 13

14 Rysunek 3: Ekstrema funkcji DoG są wykrywane poprzez porównanie piksela (oznaczonego jako X) z jego dwudziestoma sześcioma sąsiadami (oznaczone kołami) w obszarze 3x3 w obrazie oraz jego dwóch sąsiednich skalach. Częstotliwość próbkowania w dziedzinie skali jest wyznaczona na podstawie badania różnych obrazów z kamery. Eksperymenty opisane w literaturze (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004) wykazały, że największa powtarzalność osiągana jest przy trzech skalach na oktawę. Wynika to z faktu, że większa liczba skali na oktawę powoduje wykrycie znacznie większej liczby ekstremów lokalnych, które okazują się mało stabilne i nie są znajdowane w obrazach po przekształceniu. Dzięki tak małej częstotliwości wykrywanie ekstremów jest mało kosztowne obliczeniowo. Po określeniu częstotliwości próbkowania w dziedzinie skali należy ustalić częstotliwość próbkowania w przestrzeni zależną od skali wygładzania. Również w tym przypadku istnieje zależność pomiędzy częstotliwością a jakością wykrywania ekstremów, wynikająca z możliwej małej odległości pomiędzy ekstremami. Oczywiście wygładzanie takie powoduje efektywną stratę dużej ilości informacji o wysokiej częstotliwości. Z tego powodu warto zastanowić się nad rozszerzeniem obrazu. Pozwala to otrzymać większą liczbę punktów kluczowych. Rozmiar obrazu jest zwiększany dwukrotnie przed zbudowaniem pierwszego poziomu piramidy, przy wykorzystaniu interpolacji liniowej. Zakładając, że obraz wejściowy charakteryzuje się rozmyciem o co najmniej (jest to minimum wymagane aby uniknąć efektu aliasingu), obraz o dwukrotnie większym rozmiarze rozmyty jest z Oznacza to, że potrzeba niewielkiego dodatkowego rozmycia otrzymanego obrazu przed rozpoczęciem tworzenia oktawy skali. Działanie takie zwiększa liczbę stabilnych punktów kluczowych prawie czterokrotnie. Nie zauważono jednak innych pozytywnych skutków dalszego rozszerzania obrazu (Lowe, Distinctive Image Features from Scale- Invariant Keypoints, 2004). 14

15 2.1.2 Wyznaczanie dokładnego położenia punktów kluczowych Po znalezieniu punktów mogących być kluczowymi poprzez porównanie ich z sąsiednimi, następnym krokiem jest dokładne przeanalizowanie danych dotyczących ich lokalizacji, skali oraz stosunku krzywizn w sąsiedztwie. Pozwala to odrzucić punkty o słabym kontraście (tym samym wrażliwe na szum) lub niepoprawnie zlokalizowane na krawędzi. Dzięki opracowaniu metody (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004) dopasowania trójwymiarowej funkcji kwadratowej do lokalnych punktów próbkowych w celu określenia interpolowanej lokalizacji ekstremum udało się znacznie polepszyć dopasowanie i stabilność punktów kluczowych znalezionych jako piksele. Dokonuje się tego używając rozszerzenia Taylora do funkcji przestrzeni skali. Funkcja jest przesunięta tak, że początek układu współrzędnych znajduje się w punkcie próbkowania: (7) gdzie D i jego pochodne przetwarzane są w punkcie próbkowania oraz jest przesunięciem względem tego punktu. Położenie ekstremum, wyznaczane jest poprzez przyrównanie różniczki powyższej funkcji względem x do zera, co daje (8) Hesjan oraz pochodna D są aproksymowane przy wykorzystaniu różnic sąsiednich punktów. Jeśli przesunięcie jest większe niż 0,5 w którymkolwiek z kierunków, ekstremum leży bliżej innego piksela. W takim przypadku próbkowany punkt jest zmieniany i na nim dokonuje się interpolacja. Wynikowe przesunięcie jest dodawane do położenia tego punktu, aby otrzymać interpolowane położenie ekstremum. Obliczenie wartości funkcji w ekstremum jest przydatne przy odrzucaniu niestabilnych punktów kluczowych o niskim kontraście. Wartość funkcji można obliczyć korzystjąc ze wzoru: (9) 15

16 2.1.3 Usuwanie wpływu krawędzi Ze względu na stabilność usuwanie punktów kluczowych o niskim kontraście nie jest konieczne. Funkcja DoG daje natomiast wysoką wartość wzdłuż krawędzi nawet jeśli zlokalizowanie tam punktu kluczowego nie jest wyraźnie uzasadnione (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004). Skutkuje to brakiem stabilności na niewielki szum. Maksimum funkcji DoG nieznacznie wyróżniające się ponad otaczające je wartości będzie charakteryzowało się wysoką wartością krzywizny poprzecznej do krawędzi, a niską wzdłuż krawędzi. Krzywizny mogą zostać wyliczone z macierzy Hesjanu 2x2, H, wyznaczonej dla miejsca i skali związanej z punktem kluczowym: [ ] (10) Wartości pochodnych wyliczane są poprzez różnice sąsiednich pikseli. Wartości własne macierzy H są proporcjonalne do krzywizn D. W związku z tym, że interesują nas nie same wartości własne, ale ich stosunek, możemy wprowadzić α jako większą z wartości własnych oraz β jako mniejszą. Sumę tych wartości możemy obliczyć jako ślad H, natomiast iloczyn jako wyznacznik: (11) (12) W przypadku, w którym wyznacznik jest ujemny, wartości krzywizn mają różne znaki. Oznacza to, że punkt nie jest ekstremum i jest odrzucany. Niech r będzie stosunkiem większej wartości własnej do mniejszej, tak, że. Wówczas poniższa formuła jest zależna jedynie od stosunku wartości własnych, a nie ich wartości. (13) Wynik równania jest minimalny, jeśli wartości własne są sobie równe, a rośnie wraz ze wzrostem r. Chcąc sprawdzić czy stosunek wartości własnych jest większy od danej wartości r, musimy zweryfikować: (14) Sprawdzenie tej nierówności jest bardzo wydajne obliczeniowo. Zajmuje zwykle mniej niż 20 operacji zmiennoprzecinkowych dla każdego punktu kluczowego. 16

17 2.1.4 Przypisanie orientacji Poprzez przypisanie orientacji do każdego znalezionego punktu kluczowego deskryptor tego punktu będzie stworzony relatywnie do jego orientacji. Dzięki temu zyska niezależność od orientacji. Pomimo kilku wad, takich jak ograniczenie możliwości wykorzystania deskryptorów do niebazujących na spójności orientacji, metoda ta okazała się najbardziej stabilna (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004). Skala punktu kluczowego wykorzystywana jest do wybrania obrazu L spleconego z funkcją Gaussa o najbliższej skali. Dzięki temu wszystkie obliczenia dokonywane są niezależnie od skali. Dla każdej próbki w danej skali obliczany jest kierunek i wielkość gradientu. Wartości te obliczane są na podstawie różnic pomiędzy pikselami: (15) ( ) (16) Histogram orientacji jest tworzony na podstawie orientacji gradientów w sąsiedztwie wokół danego punktu. Histogram ten ma 36 przedziałów pokrywających 360 stopni. Każda wartość dodawana do histogramu jest ważona wielkością gradientu oraz oknem gaussowskim o σ równym 1,5 x skala danego punktu kluczowego. Maksima histogramu orientacji odpowiadają dominującym kierunkom lokalnego gradientu. Wybierany jest najwyższy wierzchołek. Jeśli w histogramie istnieje inne maksimum o wielkości co najmniej 80% najwyższego, tworzony jest kolejny punkt kluczowy z daną orientacją. Oznacza to, że w punktach, dla których w histogramie istnieje wiele wierzchołków o podobnej wielkości, zostanie stworzonych wiele punktów kluczowych o tej samej lokalizacji, ale różnych orientacjach. Zwykle około 15% punktów posiada wiele orientacji, ale wpływa to znacząco na stabilność dopasowania punktów kluczowych (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004). Na koniec trzy wartości histogramu najbliższe każdego wierzchołka interpolowane są parabolą, aby lepiej wyznaczyć położenie wierzchołka Lokalny deskryptor obrazu Opisane powyżej operacje przyporządkowały każdemu punktowi kluczowemu lokalizację, skalę oraz orientację. Parametry zostały wyliczone z powtarzalnością zapewniającą niezmienniczość względem nich. Następnym krokiem jest stworzenie deskryptora obszaru obrazu będącego indywidualnym, a jednocześnie możliwie niezmienniczym względem pozostałych przekształceń, takich jak zmiana naświetlenia czy punktu widzenia. Autor algorytmu, po analizie wielu badań (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004), zdecydował się na zastosowanie podejścia bazującego na biologicznym modelu widzenia jako funkcji neuronów w korze mózgowej. Rysunek 4. przedstawia sposób tworzenia deskryptora. W pierwszym kroku wyznaczane są wielkość i kierunek gradientu w punktach wokół punktu kluczowego. W tym 17

18 celu używa się skali punktu kluczowego jako poziomu rozmycia gaussowskiego obrazu. Dla osiągnięcia niezmienniczości względem obrotu współrzędne deskryptora oraz kierunki gradientów obracane są relatywnie do orientacji punktu kluczowego. Ze względów wydajności gradienty są wyliczane zawczasu dla wszystkich poziomów piramidy. Widoczne są jako małe strzałki po lewej stronie Rysunek 4. Kierunki i wartości gradientu Deskryptor punktu kluczowego Rysunek 4: Deskryptor punktu kluczowego tworzony jest poprzez obliczenie wartości i kierunku gradientów w każdym punkcie w danym sąsiedztwie, co jest widoczne po lewej stronie. Wartości gradientów ważone są za pomocą okna gaussowskiego, oznaczonego zielonym okręgiem. Wartości te są następnie akumulowane w histogramach obejmujących podobszary 4x4, widoczne po prawej stronie. Gaussowska funkcja ważąca o σ równym połowie wielkości okna deskryptora stosowana jest do wyliczenia wielkości gradientu w każdym punkcie. Taki zabieg stosuje się, aby zapobiec nagłym zmianom w deskryptorze przy niewielkich zmianach w pozycji okna oraz aby nadać mniejsze znaczenie gradientom leżącym daleko od środka deskryptora, ponieważ są one bardziej narażone na błędy. Deskryptor punktu kluczowego pokazany jest po prawej stronie Rysunek 4. Pozwala on na znaczne zmiany w położeniu gradientów dzięki zastosowaniu podobszarów o wielkości 4x4 pola. Na rysunku widocznych jest osiem kierunków dla każdego histogramu, z długościami strzałek odpowiadającymi wielkościom gradientów. Próbka gradientu po lewej stronie może przemieścić się aż o 4 pozycje próbkowania, dając wciąż ten sam histogram po prawej stronie. Ważne jest, aby zapobiec wszelkim efektom wynikającym z granicznego przejścia danej próbki z jednego histogramu do drugiego lub z jednego kierunku gradientu w inny. W związku z tym używana jest trójliniowa interpolacja przy przyporządkowywaniu danej wartości do odpowiedniego przedziału histogramu. Innymi słowy, każda wartość mnożona jest przez wagę równą 1 d dla każdego wymiaru, gdzie d równe jest odległości próbki od środkowej wartości przedziału histogramu. 18

19 Deskryptor budowany jest z wektorów zawierających wartości ze wszystkich histogramów. Odpowiadają one długościom strzałek po prawej stronie Rysunek 4. Widać tam macierz 2x2 histogramy. Eksperymentalnie (Lowe, Distinctive Image Features from Scale- Invariant Keypoints, 2004) najlepsze rezultaty zostały osiągnięte dla macierzy 4x4 histogramy zawierające 8 przedziałów każdy. Daje to 128 wartości w deskryptorze dla każdego punktu kluczowego. Na koniec procesu tworzenia deskryptor jest modyfikowany tak, aby zapewnić punktowi kluczowemu stabilność względem naświetlenia. Wektor wartości deskryptora jest normalizowany do długości jednostkowej. Zmiana kontrastu w obrazie, podczas której wartość każdego piksela jest mnożona przez stałą, spowoduje pomnożenie wartości gradientów przez tę samą stałą. Oznacza to, że taka zmiana zostanie zredukowana przez normalizację. Zmiana jasności poprzez dodanie stałej do każdego piksela nie wpłynie na zmianę wartości gradientów, ponieważ są one liczone z różnicy pomiędzy pikselami. Wynika to z własności, że deskryptor jest niezmienniczy względem liniowych zmian w naświetleniu. W przypadkach rzeczywistych występują jednak również nieliniowe zmiany w naświetleniu, wynikające ze zmian w nasyceniu kamery lub oświetlenia przy zmianie punktu widzenia. Mogą one powodować duże różnice w wartościach gradientów. Jest jednak mało prawdopodobne, że spowodują zmiany kierunków gradientów. Dlatego należy zredukować wpływ dużych wartości gradientów poprzez obcięcie wartości w znormalizowanym wektorze tak, aby żadna z nich nie była większa od 0,2, a następnie ponownie znormalizować wektor. Oznacza to ograniczenie wpływu dużych wartości gradientu na dopasowanie, a zwiększenie wpływu dopasowania kierunków gradientu. Wartość 0,2 została wyznaczona eksperymentalnie (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004) Dopasowanie punktów kluczowych Zastosowanie algorytmów wyszukujących punkty kluczowe do rozpoznawania obiektów polega na dopasowaniu znalezionych punktów lub ich grup do odpowiadających im punktów dla obiektu modelowego. Zwykle najpierw szuka się dopasowania dla pojedynczych punktów do punktów będących w bazie danych. Wiele z takich dopasowań jest błędnych, dlatego grupy co najmniej trzech punktów są następnie dopasowywane w taki sposób, aby zgadzały się co do klasy obiektu i jego pozycji. Dopasowuje się grupy punktów, ponieważ daje to znacznie wyższe prawdopodobieństwo poprawności dopasowania. Następnie każda z dopasowanych grup punktów jest sprawdzana dokładniej poprzez dopasowanie i zastosowanie przekształceń geometrycznych modelu. Celem jest osiągnięcie takiego ułożenia jak na obrazie. Znalezienie tych przekształceń decyduje o poprawności interpretacji. Najlepsze dopasowanie dla każdego punktu kluczowego znajdowane jest poprzez wyszukanie jego najbliższego sąsiada wśród punktów drugiego obrazu. Najbliższym sąsiadem jest punkt o najmniejszej odległości euklidesowej pomiędzy wektorami deskryptorów opisanych w poprzednim rozdziale. Wiele ze znalezionych punktów szczególnych będzie leżało poza obszarem dopasowania. W związku z tym nie znajdą one właściwego dopasowania. Dlatego potrzebne jest zastosowanie kryterium pozwalającego na odrzucenie źle dopasowanych punktów. Odrzucenie dopasowań, dla których odległość od najbliższego sąsiada jest większa od pewnej ustalonej wartości nie spełnia tego zadania (Lowe, Distinctive 19

20 Image Features from Scale-Invariant Keypoints, 2004). Z tego powodu zaproponowano porównywanie odległości najbliższego sąsiada do drugiego najbliższego. Podejście takie będzie skuteczniejsze, ponieważ wiadomo, że prawidłowe dopasowanie będzie oparte na najbliższym sąsiedzie leżącym znacznie bliżej niż przy nieprawidłowym dopasowaniu, dla którego występuje wiele prawdopodobnych złych dopasowań o podobnych odległościach. Dopasowanie odległości drugiego najbliższego sąsiada może być uważane za estymowanie gęstości niewłaściwych dopasowań w danym fragmencie przestrzeni skali. Z przeprowadzonych eksperymentów (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004) wynika, że odrzucając dopasowania o stosunku odległości pierwszego do drugiego najbliższego sąsiada większym niż 0,8, odrzucamy aż 90% niewłaściwych dopasowań oraz zaledwie 5% właściwych. Posiadając 128-wymiarowy wektor deskryptora potrzebujemy wydajnego algorytmu pozwalającego wyszukać najbliższych sąsiadów. Nie istnieje żaden znany algorytm będący bardziej wydajny dla tak dużej liczby wymiarów niż dokładne przeszukanie. W związku z tym wyszukiwaniem zajmuje się algorytm Best-Bin-First (BBF) (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004). Korzysta on ze zmodyfikowanego porządku przeszukiwania zastosowanego w algorytmie k-d tree. Wymaga konstrukcji stosu jako kolejki pozwalającej na określenie porządku. Deskryptory w bazie są przeszukiwane względem ich odległości od przetwarzanego punktu. Przybliżona odpowiedź może zostać podana po sprawdzeniu określonej liczby punktów poprzez zagłębianie się w kolejne poziomy stosu i estymowanie odległość znajdujących się tam punktów do aktualnie przetwarzanego. Proces trwa do momentu stwierdzenia, że z dużym prawdopodobieństwem nie istnieje bliższy punkt. Modyfikacja polega na przerwaniu przeszukiwania po sprawdzeniu pierwszych dwustu punktów. Przy około punktów w bazie działanie takie przyspiesza wyszukiwanie dokładnego dopasowania o około dwa rzędy wielkości przy stracie mniej niż 5% prawidłowych dopasowań Wyznaczanie parametrów przekształcenia afinicznego Poprawność dopasowania każdej grupy punktów kluczowych jest ostatecznie weryfikowana geometrycznie przy pomocy odpowiedniej metody znajdującej parametry przekształcenia afinicznego opisującego położenie obrazów względem siebie. Autor algorytmu SIFT proponuje metodę najmniejszych kwadratów (Lowe, Distinctive Image Features from Scale-Invariant Keypoints, 2004). Obecnie lepszymi rezultatami cechuje się metoda zwana RANSAC (RANdom SAmple Consensus), zastosowana przez tego samego autora w aplikacji ilustrującej działanie algorytmu SIFT. Transformacja afiniczna odpowiada obrotom trójwymiarowym płaszczyzny przy rzutowaniu prostopadłym na płaszczyznę ekranu. Może być złą aproksymacją obrotów trójwymiarowych obiektów niebędących płaszczyznami. Z tego powodu lepsze byłoby rozwiązanie macierzy fundamentalnej przekształcenia. Jednak dla osiągnięcia dobrej stabilności wymaga ono siedmiu, a nawet większej liczby par dopasowanych punktów. Tymczasem rozwiązanie przekształcenia afinicznego wymaga tylko trzech par. Chcielibyśmy rozwiązywać dopasowania mając tylko 3 pary dopasowanych punktów, w związku z czym 20

21 przekształcenie afiniczne jest lepszym punktem startowym. Słabą aproksymację możemy zniwelować pozwalając na duże błędy residualne. Przekształcenie afiniczne punktu modelu [ ] do punktu obrazu [ ] może zostać zapisane jako: [ ] [ ] [ ] [ ] (17) gdzie przesunięciem modelu jest [ ], natomiast afiniczny obrót, skalowanie i rozciągnięcie opisane są parametrami. Chcemy rozwiązać powyższe równanie względem parametrów transformacji, a zatem przekształcamy je tak, aby zgrupować niewiadome w jednym wektorze: [ ] [ ] (18) [ ] Równanie to opisuje pojedynczą parę dopasowanych punktów. Każda następna para może zostać dodana, tworząc kolejne dwa rzędy w pierwszej i ostatniej macierzy. Co najmniej 3 pary potrzebne są do rozwiązania równania. Zapisując powyższe równanie w formie symbolicznej, otrzymamy które może być rozwiązane metodą najmniejszych kwadratów. Rozwiązując (19) [ ] (20) minimalizujemy sumę kwadratów odległości punktów modelu rzutowanych na punkty obrazu. W przypadku, gdy nasze dopasowania zawierają błędne pary, dane nie są idealnie dobrane. W związku z tym uzyskane rozwiązanie również nie będzie doskonałe. W wielu przypadkach nie ma to dużego znaczenia, ponieważ może okazać się, że otrzymaliśmy najlepsze możliwe rozwiązanie w sensie statystycznym. Jednak jeśli dane zawierają punkty leżące w znacznej odległości od idealnego modelu, wyliczony model może być błędny. W takim przypadku możemy zidentyfikować punkty o największych residuach w stosunku do znalezionego modelu (Sonka, Hlavac, & Boyle, 2008). Mogą one zostać odrzucone, a model dopasowania przeliczony. Taka metoda może wydawać się atrakcyjna i często pozwala osiągnąć pożądany efekt, jednak zakłada pewne z góry ustalone schematy pochodzenia błędnych danych. Nie jest to właściwe, ponieważ istnieją dwa rodzaje błędnych danych. Błędy pomiarowe - obserwacje dokonane na obrazie lub parametry z nich wyliczone są błędne. Zwykle są niewielkie. Ich rozrzut opisany jest rozkładem normalnym, a średnia wartość oscyluje wokół zera. 21

22 Błędy klasyfikacji - występują przy niewłaściwej klasyfikacji pewnych danych. Są stosunkowo duże i nie ma powodów, aby sądzić, że ich średnia wartość będzie zbliżona do zera. Błędy drugiego typu mogą wprowadzić tak duże zakłócenia, że opisana wyżej metoda częściej pogorszy niż polepszy rozwiązanie. Wynika to z założenia leżącego u podstaw metody najmniejszych kwadratów, że używanie jak największej ilości dostępnych danych będzie miało pozytywny efekt wygładzający. Jak opisano powyżej, w niektórych przypadkach jest to błędne założenie. Wtedy przeciwne podejście używania jak najmniejszej ilości danych może być lepsze. Takie podejście zastosowano w algorytmie RANSAC, czyli random sample consensus, który można opisać następująco (Sonka, Hlavac, & Boyle, 2008): przy rozważaniu dopasowania liniowego dwa punkty wystarczająco definiują linię biegnącą przez nie. Można zatem wybrać losowe dwa punkty z dostępnego zestawu danych i założyć, że linia je łącząca jest prawidłowym modelem. Model ten możemy przetestować przez sprawdzenie ile z pozostałych danych leży blisko znalezionego rozwiązania są to punkty consensusu. Jeśli ich liczba jest duża, przeliczenie wylosowanego modelu bazując na zestawie punktów consensusowych poprawi rozwiązanie bez potrzeby zajmowania się punktami leżącymi daleko od rozwiązania, mogącymi powodować błędy. Formalnie algorytm RANSAC można przedstawić następująco (Sonka, Hlavac, & Boyle, 2008): 1. Dane jest n punktów { }, których rozkład chcemy opisać modelem określonym przez co najmniej m punktów (, dla linii ). 2. Ustaw licznik iteracji. 3. Wybierz losowo m punktów z X i wylicz model na ich podstawie. 4. Dla ustalonej tolerancji ε określ ile elementów X leży w odległości mniejszej niż ε od wyliczonego modelu. Jeśli liczba ta przekracza ustaloną wartość t, przelicz model bazując na grupie consensusowej. 5. Ustaw licznik iteracji. Jeśli dla ustalonego, idź do kroku 3, w przeciwnym przypadku przyjmij model o największej grupie consensusowej lub zgłoś brak rozwiązania. Algorytm wymaga ustalenia następujących parametrów: ε - akceptowalne odchylenie od wyliczonego modelu. Jego wartość nie może zostać ustalona analitycznie. Empirycznie można na przykład dopasować model do m punktów, zmierzyć odchylenia i ustalić wartość ε jako liczbę punktów o odchyleniach poniżej średniej. t - zadowalająca wielkość grupy consensusowej, sugeruje się (Fischler & Bolles, 1981) ustalenie wartości. K - liczba iteracji algorytmu w poszukiwaniu zadowalającego dopasowania. Statystycznie uzasadniona wartość (Fischler & Bolles, 1981) to, gdzie w jest prawdopodobieństwem z jakim losowo wybrany punkt będzie leżał w odległości mniejszej niż ε od ustalonego modelu. 22

23 Algorytm RANSAC okazuje się godnym zaufania rozwiązaniem znajdującym zastosowanie w wielu dziedzinach związanych z widzeniem komputerowym. 2.2 FAST: Features from Accelerated Segment Test Algorytm ten został wybrany do analizy z powodu jego dużej szybkości działania oraz stabilności znalezionych punktów kluczowych. Operuje na obrazach w skali szarości Podstawy algorytmu Kryterium testu segmentowego bazuje na okręgu stworzonym przez 16 pikseli wokół badanego punktu p (Rosten & Drummond, Machine learning for high-speed corner detection). Detektor punktów kluczowych klasyfikuje p jako punkt kluczowy, jeśli w okręgu istnieje n sąsiadujących ze sobą pikseli, z których wszystkie mają jasność większą niż badany punkt powiększony o ustaloną wartość t lub mniejszą niż, jak zaprezentowano na Rysunek 5. Widzimy test segmentowy wykonany dla. Jest to wartość, dla której odrzucanie punktów niebędących punktami kluczowymi jest ułatwione, ponieważ wystarczy sprawdzić 4 piksele: pierwszy, piąty, dziewiąty i trzynasty odpowiadające kierunkom kompasu. Jeśli ta część testu wypadnie pomyślnie, należy sprawdzić wszystkie pozostałe punkty. Rysunek 5: Dwunastopunktowy test segmentowy wykrywający narożniki w obrazie. Oznaczone piksele wykorzystywane są przy wykrywaniu punktów. Piksel p jest środkiem prawdopodobnego narożnika. Łuk oznaczony linią przerywaną przechodzi przez 12 sąsiadujących ze sobą pikseli jaśniejszych od p co najmniej o wartość t. Źródło: (Rosten & Drummond, Machine learning for high-speed corner detection) Metoda ta może zostać zastosowana dla innych wartości n, jednak daje nieco gorsze rezultaty. Mimo zalet testu segmentowego przeprowadzonego dla, na potrzeby urządzeń mobilnych warto zastanowić się nad wyborem wartości. Uzasadnieniem jest wyraźnie lepsza powtarzalność wykrywania punktów kluczowych, co widać na Rysunek 6. 23

24 Powtarzalność % Ilość punktów kluczowych Rysunek 6: Wykres powtarzalności wykrywania punktów kluczowych w zależności od liczby punktów kluczowych, dla różnych wartości n. Dla n<9 wpływ krawędzi jest zbyt duży. Źródło: (Rosten & Drummond, Machine learning for high-speed corner detection) Implementacja detektora punktów kluczowych przy pomocy uczenia maszynowego Autorzy algorytmu (Rosten & Drummond, Machine learning for high-speed corner detection) zaprezentowali sposób efektywnej implementacji niniejszego algorytmu przy pomocy uczenia maszynowego. Jest to proces dwustopniowy. Budując detektor oparty o daną wartość n, musimy najpierw wykryć wszystkie punkty kluczowe w zbiorze przykładowych obrazów korzystając z testu segmentowego dla danego n oraz t, opartego na powolnym algorytmie testującym wszystkie 16 pozycji położonych na okręgu wokół badanego punktu. Dla każdej pozycji względem badanego punktu p, { }, piksel w niej leżący oznaczony jako może przyjmować jeden z trzech stanów: { Wybierając kolejne x i obliczając ich dla każdego (zbiór wszystkich pikseli we wszystkich obrazach) dzielimy P na trzy podzbiory:, gdzie każde p jest przypisane do. W drugim etapie wprowadzamy zmienną typu boolean przyjmującą wartość prawda jeśli p jest punktem szczególnym, oraz fałsz w przeciwnym wypadku. Korzystamy z algorytmu, który poprzez zmierzenie entropii zaczyna od wyboru x dostarczającego najwięcej informacji o tym, czy badany piksel jest punktem szczególnym. Entropia K zbioru P opisana jest wzorem: (21) gdzie { } (liczba punktów szczególnych) oraz { } (liczba punktów nie będących szczególnymi) 24

25 Przyrost informacji związany z wybranym x jest dany wzorem: Po wybraniu x o największym przyroście informacji proces jest powtarzany rekursywnie dla każdego z trzech podzbiorów. Przykładowo wybierane jest aby podzielić na, analogicznie dla oraz, gdzie każdy x wybierany jest tak, aby przynosić najwięcej informacji dla danego podzbioru. Proces jest zakończony, jeśli entropia podzbioru jest zerowa, czyli gdy wszystkie punkty p w podzbiorze mają tą samą wartość, a zatem wszystkie są lub nie są punktami szczególnymi. Wystąpienie takiej sytuacji jest pewne, ponieważ K jest funkcją danych uczących (Rosten & Drummond, Machine learning for high-speed corner detection). Stworzony w ten sposób zbiór danych pozwala zbudować drzewo decyzyjne mogące skutecznie klasyfikować punkty szczególne w obrazach ze zbioru uczącego. Oznacza to, że z opdowiednią aproksymacją drzewo zawiera zasady wybranego detektora punktów szczególnych FAST. Drzewo decyzyjne jest następnie konwertowane do kodu języka programistycznego, tworząc długi ciąg zagnieżdżonych dyrektyw if-else, który może zostać skompilowany i używany jako detektor punktów szczególnych Minimalizacja oddziałowywania punktów niemaksymalnych Ponieważ test segmentowy nie oblicza wartości funkcji odpowiedzi dla punktów szczególnych, wytłumienie punktów niebędących maksymalnymi nie jest możliwe bezpośrednio po ich wykryciu. Z tego powodu musi zostać wyznaczona funkcja V przypisująca wartość odpowiedzi każdemu punktowi. Na jej podstawie można usunąć punkty sąsiadujące z punktami o wyższej wartości V, dokonując tym samym wytłumienia punktów niemaksymalnych. Istnieje kilka intuicyjnych definicji opisujących funkcję V (Rosten & Drummond, Machine learning for high-speed corner detection): 1. Maksymalna wartość n, dla której p jest wciąż punktem szczególnym. 2. Maksymalna wartość t, dla której p jest wciąż punktem szczególnym. 3. Suma różnic bezwzględnych pomiędzy wartościami pikseli sąsiadujących leżących na okręgu wokół punktu p oraz badanego punktu p. Ponieważ definicje 1. i 2. zwracają wartości skwantowane, wiele punktów szczególnych posiadałoby te same wartości. W związku z tym w celu przyspieszenia obliczeń używana jest zmodyfikowana definicja trzecia: (22) ( ) (23) gdzie { } { } 25

26 2.2.4 Deskryptor punktów kluczowych i ich dopasowanie Po wykryciu punktów kluczowych w obu obrazach mających tworzyć panoramę, należy dopasować w pary odpowiadające sobie punkty znalezione w obu obrazach. Aby punkty te były jednoznacznie identyfikowalne, trzeba przyporządkować każdemu z nich deskryptor opisujący dany punkt. Ze względnu na brak możliwości stworzenia deskryptora z danych zwracanych przez algorytm FAST - wartości opisanej powyżej funkcji V nie są dostatecznie unikalne - zdecydowano się na zastosowanie i implementację deskryptora używanego przez algorytm SIFT, opisany wcześniej w rozdziale Lokalny deskryptor obrazu. Warto podkreślić, że dopasowanie punktów kluczowych w pary odbywa się również tak samo jak dla algorytmu SIFT, czego opis można znaleźć w rozdziale Dopasowanie punktów kluczowych. Do wyznaczenia parametrów przekształcenia afinicznego opisującego położenie obrazów tworzących panoramę względem siebie wybrano algorytm RANSAC, opisany w rozdziale Wyznaczanie parametrów przekształcenia afinicznego. 2.3 Detektor narożników Harrisa Detektor narożników Harrisa został opracowany w 1988 roku i do dziś jest często wykorzystywanym algorytmem. Jego zaletą jest niezmienniczość względem przesunięć 2D oraz obrotów, niewielkich zmian nasycenia oraz punktu widzenia, a także niska złożoność obliczeniowa (Sonka, Hlavac, & Boyle, 2008). Jest on wrażliwy na większe zmiany skali oraz duże zmiany kontrastu. Operuje na obrazach w skali szarości Podstawy algorytmu Detektor narożników Harrisa opiera się o założenie, że jasności pikseli wokół narożnika będą się silnie zmieniać w wielu kierunkach. Stanowi ulepszoną wersję detektora Moravca, będącego najprostszym istniejącym detektorem narożników. Wykrywa punkty o maksymalnym kontraście, czyli narożniki lub ostre krawędzie. Odbywa się to poprzez badanie średnich zmian jasności w trakcie przesuwania lokalnego okna prostokątnego w różnych kierunkach i (Harris & Stephens, 1988). Występują trzy przypadki: 1. Jeśli badane regiony są stałej jasności, przesunięcie okna spowoduje niewielką zmianę jego wartości. 2. Jeśli okno leży na krawędzi, przesunięcie go wzdłuż krawędzi spowoduje niewielką zmianę jego wartości, natomiast przesunięcie prostopadłe do krawędzi wywoła dużą zmianę. 3. Jeśli okno leży na narożniku lub pojedynczym punkcie, wówczas każde przesunięcie spowoduje dużą zmianę wartości. Punkty takie możemy wykryć poprzez znalezienie punktów, dla których najmniejsza różnica wartości związana z przesunięciem okna jest duża. Zmiana E wartości okna związana z przesunięciem (x,y) dana jest wzorem: (24) 26

27 gdzie w opisuje zastosowane okno: jedność w obrębie prostokątnego regionu, zero poza nim, obraz wejściowy opisany symbolem I. Przesunięcia (x,y) pochodzą ze zbioru { }. Detektor Moravca poszukuje lokalnego maksimum dla min{e} powyżej pewnej wartości odcięcia. Detektor Moravca nie jest wolny od błędów. Ich korekta pozwoliła skonstruować detektor Harrisa. Problemy te wraz z rozwiązaniami opisano poniżej (Harris & Stephens, 1988). 1. Odpowiedź detektora nie jest izotropowa, ponieważ rozważane są tylko dyskretne wartości przesunięć co 45. Wszystkie możliwe pośrednie przesunięcia można określić, dokonując analitycznego rozwinięcia wokół punktu startowego: [ ] [ ] (25) gdzie gradienty aproksymowane są poprzez: (26) (27) A zatem, dla małych przesunięć, E może zostać zapisane jako: gdzie (28) 2. Odpowiedź jest zaszumiona z powodu prostokątnego okna binarnego należy użyć gładkiego okna kolistego, na przykład gaussowskiego: 3. Detektor zbyt często odpowiada na krawędzie, ponieważ tylko minimum funkcji E brane jest pod uwagę należy sformułować nową funkcję rozpoznawania narożników korzystającą z wartości odchylenia E w różnych kierunkach. Funkcja zmiany wartości, E, związana z niewielkim przesunięciem (x,y) okna może zostać zwięźle zapisana w formie: gdzie macierz M jest symetryczną macierzą 2x2 postaci: (29) (30) [ ] 27

28 Można zauważyć, że E jest podobne do lokalnej funkcji autokorelacji, z macierzą M opisującą jej kształt w badanych punkcie. Niech zatem α, β będą wartościami własnymi macierzy M. α i β będą proporcjonalne do krzywizn funkcji autokorelacji, tworząc niezmienniczy względem obrotu opis macierzy M. Tak jak przy detektorze Moravca, musimy rozważyć trzy przypadki: A. Jeśli obie krzywizny są niewielkie, tak, β że funkcja autokorelacji jest płaska, badany region obrazu jest mniej więcej krawędzie jednakowej jasności. Odpowiada to przypadkowi, kiedy przesunięcie okna w dowolnym kierunku wprowadza niewielką zmianę wartości funkcji E. B. Jeśli jedna z krzywizn jest duża, a narożniki druga niewielka, nadając funkcji autokorelacji kształt grzbietu, tylko przesunięcie okna w poprzek grzbietu krawędzie płasko wprowadza zmiany w E. Oznacza to, że stałej barwie. mamy do czynienia z krawędzią. C. Jeśli obydwie krzywizny są duże, funkcja autokorelacji ma kształt ostrego szczytu. Przesunięcie okna w dowolnym kierunku spowoduje wzrost wartości E. Badany punkt jest narożnikiem. Rysunek 7: Przestrzeń krzywizn autokorelacji. Liniami przerywanymi oznaczono klasyfikację na regiony narożników, krawędzi bądź płaskie-o Rozważmy wykres przestrzeni (α, β). W przypadku idealnym krawędź miałaby wysoką wartość α oraz zerową β, jednak w rzeczywistości β przyjmie wartość większą od zera, ale niewielką w porównaniu do α. Wynika to z szumu, pikselizacji oraz kwantyzacji skali jasności. Narożnik będzie opisany wysokimi wartościami α oraz β, natomiast region płaski, jednobarwny da niewielkie wartości α i β. Ponieważ wzrost kontrastu w obrazie o wartość p spowoduje wzrost α oraz β proporcjonalnie o, to jeśli (α,β) należy do części wykresu opisującej krawędzie, powinno również do niej należeć, dla dodatnich wartości p. Podobna zasada dotyczy narożników. Z tych powodów przestrzeń (α,β) podzielona jest jak na Rysunek Funkcja odpowiedzi narożnika Do efektywnej klasyfikacji narożników, oprócz opisanego powyżej podziału przestrzeni krzywizn, potrzebna jest miara jakości odpowiedzi narożnika. Pomaga to w identyfikacji maksymalnych narożników. Funkcja taka, oznaczona jako R, musi być funkcją jedynie α oraz β. Dzięki temu zachowa niezmienniczość względem obrotów. Warto w tym momencie użyć śladu macierzy M oraz jej wyznacznika. Pozwoli to uniknąć bezpośredniego obliczania wartości własnych tej macierzy. A zatem (Harris & Stephens, 1988): 7 (31) 28 α

29 (32) Bazując na powyższym, funkcję odpowiedzi narożnika R zdefiniowano jako: Funkcja ta przyjmuje wartości pozytywne dla narożników, negatywne dla krawędzi oraz oscyluje wokół zera dla regionów o podobnej barwie. Warto zauważyć, że zwiększanie kontrastu obrazu zwiększa wartość odpowiedzi narożnika. Regiony o podobnej barwie rozpoznawane są poprzez opadanie wartości śladu poniżej ustalonej wartości odcięcia. Wartość k jest parametrem sterującym algorytmu. W literaturze (Sonka, Hlavac, & Boyle, 2008) proponuje się, aby jego wartość była z przedziału (0,04; 0,15). Piksel oznaczany jest jako narożnik, jeśli posiada lokalne maksimum dla funkcji odpowiedzi Metoda implementacji algorytmu Planując implementację algorytmu, można rozpisać go następująco (Sonka, Hlavac, & Boyle, 2008): 1. Wprowadź do obrazu rozmycie Gaussowskie. 2. Oblicz gradient nasycenia dla każdego piksela w dwóch prostopadłych kierunkach, (33),. Można tego dokonać splatając obraz z jednowymiarową maską aproksymującą pochodną. 3. Dla każdego piksela oraz jego sąsiedztwa: oblicz wartości macierzy M, oblicz wartość funkcji odpowiedzi R(M). 4. Wybierz punkty narożników jako punkty o wartości R powyżej pewnej wartości odcięcia, a następnie usuń punkty niebędące maksymalnymi Deskryptor narożników i ich dopasowanie W związku z brakiem możliwości stworzenia deskryptora z danych zwracanych przez algorytm - ponieważ wartości funkcji odpowiedzi nie są dostatecznie unikalne ani stabilne - zdecydowano się na zastosowanie i implementację deskryptora używanego przez algorytm SIFT oraz FAST, opisany wcześniej w rozdziale Lokalny deskryptor obrazu. Dopasowanie punktów kluczowych w pary odbywa się również tak samo jak dla algorytmu SIFT, czego opis można znaleźć w rozdziale Dopasowanie punktów kluczowych. Do wyznaczenia parametrów przekształcenia afinicznego opisującego położenie obrazów tworzących panoramę względem siebie wybrano algorytm RANSAC, opisany w rozdziale Wyznaczanie parametrów przekształcenia afinicznego. 2.4 Algorytm GFTT - Good Features To Track W 1994 Jianbo Shi oraz Carlo Tomasi wprowadzili modyfikacje do swojej pracy zatytułowanej Good Features to Track, które dały lepsze wyniki w porównaniu do 29

30 klasycznego detektora krawędzi Harrisa. W algorytmie klasycznym Harrisa funkcja oceniająca ma postać: Natomiast Shi oraz Tomasi zaproponowali jej modyfikację do postaci: Jeżeli wartość funkcji oceny przekracza pewien ustalony próg, wówczas tak samo jak w algorytmie Harrisa punkt jest uznanwany za narożnik. Jeżeli narysujemy funkcję w wymiarze, tak samo jak w klasycznym algorytmie Harrisa, otrzymamy poniższy rysunek: Rysunek 8: Zielony kolor symbolizuje wykrycie narożnika. Widać, że tylko gdy oraz są poniżej pewnej wartości minimalnej,, mamy wierzchołek. Algorytm GFTT znajduje N najsilniejszych wierzchołków w obrazie. Obraz powinien być dostarczony w skali szarości. Następnie należy zadać minimum wyrażone w procentach, które określa próg jakości wierzchołka. Jeżeli nie jest ono osiągnięte, wszystkie badane wierzchołki są odrzucane i nie są uznane za narożniki. Następnie ustalamy minimalny dystans w sensie Euklidesa pomiędzy wykrytymi narożnikami. W ten sposób sortujemy wszystkie wykryte wierzchołki i wybieramy N najlepszych. 2.5 BRISK - Binary Robust Invariant Scalable Keypoints Algorytm Brisk pochodzi z 2011 roku, więc jest dość nowym algorytmem. Bazuje na algorytmie przestrzennym-oktawowym FAST na potrzeby detekcji oraz na testowaniu binarnych wzorców w celu opisania znalezionych punktów. Punk kluczowy jest szukany w oktawie ci poprzez analizę ośmiu sąsiadujących wyników w oktawie ci oraz w korespondujących ze sobą sąsiednich oktawach jedną wyżej i jedną niżej. We wszystkich trzech oktawach lokalnym maximum jest pixel, znajdujący się 30

31 możliwie blisko przy wykresie paraboli, która jest dopasowana wzdłuż osi skali w celu ustalenia prawdziwej skalowalności punktu charakterystycznego. Interpolację widać poniżej. Rysunek 9: Obraz przedstawia działanie algorytmu BRISK w szczególności interpolację położenia oktawy oraz porównanie jego działania z algorytem FAST na którym bazuje. (źródło : Deskryptory dla algorytmu BRISK mają 512 bitów. Obliczają one ważoną Gaussowaską średnią na zbiorze pochodzącym ze wzorca punktowego znajdującego się blisko punktu charakterystycznego. Wzorzec jest skonstruowany jako N pozycji równo rozmieszczonych na okręgach dookoła punku charakterystycznego. Aby uzyskać odporny na rotację i skalę unormowany deskryptor, BRISK stosuje próbkowanie wzroca obróconego o kąt alpha wokół punktu kluczowego k. Otrzymany bitowy deskryptor jest efektem wykonania krótkodystansowych (pomiędzy sąsiednimi okręgami lub w ich obrębie) porównań par punktów. 31

32 Rysunek 10: Obraz przedstawia wygląd bitowego deskryptora powstałego na skutek porównań krótkodystansowych par punktów. (źródło : DENSE Detektor ten generuje kilka poziomów punktów charakterystycznych. Ich cechy na każdym poziomie są umieszczone jako węzły regularnej siatki nakładanej na rozpatrywany obrazek (poza jego konturami, które nie liczą się jako węzły). Wraz z każdym kolejnym poziomem parametry cechy takie jak skala, rozmiar węzła, rozmiar granicy obrazka są mnożone przez ustalony parametr w celu wyróżnienia najlepszych. 2.7 MSER MSER - maximally stable extremal region extractor to algorytm polegający na detekcji różniących się między sobą elementów obrazów. Początkowo szukał podobieństw w dwóch obrazach prezentujących tę samą scenę z dwóch różnych punktów widzenia. Do detekcji używa się głównie obiektów o określonych parametrach. Algorytm polega na wyszukiwaniu maksymalnie stabilnych regionów w obrazie. Można to wytłumaczyć odwołując się do progowania. Wszystkie piksele poniżej zadanego progu są uważane za czarne, podczas gdy wszystkie powyżej są określane jako białe. W ten sposób, sterując wartością progową, można spowodować rozrastanie się czarnych plam reprezentujących czarne piksele. Im większy próg, tym czarny obszar bardziej się rozrasta. Proces trwa dopóki cały obraz nie stanie się czarny. W trakcie powiększania się czarnego obszaru konstruowane jest drzewo reprezentujące, przy jakiej wartości progowej piksel został oznaczony na czarno. W ten sposób określa się wspomniane regiony ekstremalne (nazwa pochodzi od przeciwnstawnych kolorów białego i czarnego). Metoda ta jest bardzo wrażliwa na zmienne naświetlenie obrazu oraz przemieszczający się cień. W pracy Krystiana Mikolajczyka udowodniono, że jest to algorytm podatny na rozmycia obrazu, co jest jego największa wadą. 32

33 2.8 ORB - oriented BRIEF Detektor ORB jest rozszerzeniem algorytmu BRIEF. Wprowadzono w nim niezmienność wobec rotacji. Używa detektora FAST, a jako deskryptor wykorzystuje BRIEF rotujący swój wzorzec. Na podstawie silnych zmian orientacji wybiera się dobry wzorzec. Detektor oblicza jakość narożników metodą Harrisa w celu uporządkowania punktów charakterystycznych wykrytych metodą FAST. Orientacja dla tak wykrytych punktów jest liczona na podstawie intensywności centroidy. Centroidę definiujemy jako: Można obliczyć wektor od środka narożnika do centroidy, zwany orientacją : Warto zauważyć, że orientacji tej nie ma pierwotnie FAST. Desktryptor Wzorzec jest poddawany serii obrotów. Po wykonaniu serii obrotów algorytm BRIEF cechuje niepewność i rozbieżności, ponieważ punkty kluczowe z uwzglednioną rotacją mają gorsze własności przy testach binarnych. Aby zneutralizować niekorzystną rozbieżność z klasycznym BRIEF stosuje się metodę uczącą. Uczy się na podstawie rotujących wzorców. Dzięki temu osiąga się większą rozróżnialność oraz mniejszą zależność od obrotów. Algorytm ORB powstał dzięki twórcom biblioteki OpenCV. Uważany jest następcę opatentowanych SIFT i SURF. Twórcy twierdzą, że jest najlepszym i najbardziej odpornym bezpłatnym algorytmem. Detekcja przebiega dzięki FAST, potem wybor N najlepszych punktów dokonuje się poprzez Harrisa. Następnie dodaje się do nich orientacę, której nie daje algorytm FAST. Do detekcji używa się algorytmu BRIEF, ale nie jest on wystarczająco skuteczny jeśli chodzi o obroty. Dlatego też detekcja jest nazywana wysterowanym BRIEF. Sterowanie następuje poprzez orientację punktów charakterystycznych. Dla każdego z testów binarych o współrzędnych definiujemy macież o wymiarach. Załóżmy, że dana jest macierz, która zawiera koordynaty pikseli. Przy wykorzystaniu orientacji obliczonej jako, wyznaczana jest macierz rotacji. Zostaje ona zaaplikowana wobec macierzy. W efekcie powstaje wysterowana macierz. 33

34 ORB dyskretyzuje kąt obrotu do (12 stopni) i konstruuje tablicę przykładowych wzorców w oparciu o BRIEF. Jeśli orientacja punktu charakterystycznego jest stała wzdłuż widoków, właściwa macierz zostanie wykorzystana do wyliczenia deskryptora. 2.9 SURF Detektor Detektor SURF jest znany jako bardziej wydajny zamiennik algorytmu SIFT. Jego detektor jest oparty o Hessjan, a deskryptor o położenie i rozmieszczenie punktów. Detektor jest oparty o macierz będącą Hessjanem zdefiniowaną jako: gdzie L jest konwolucją z Gaussowskiej drugiej pochodnej obliczonej dla obrazu. W implementacji jądro przekształcenia Gaussowskiego jest zastępowane przez prostszy filtr. Następnie jest interpolowane w skali obrazu i jego przestrzeni, aby posiadało właściwość niezależności od skali. Deskryptor Najpierw punktowi kluczowemu przypisuje się orientację. Następnie dookoła punktu budowany jest kwadratowy obszar. Potem obszar ten jest rotowany zgodnie z wyznaczoną orientacją dla punktu. Region jest podzielony na mniejsze regiony o wymiarach 4x4. Dzięki temu zachowujemy istotne przestrzenne informacje. Dla każdego z podregionów liczymy cechy dla przykładowych punktów rozłożonych regularnie w wierzchołkach siatki 5x5. Obliczamy pionową i poziomą Falkę Haara. Dzięki temu mamy wyliczone dx oraz dy. Następnie sumujemy je po każdym z podregionów i budujemy pierwszy zbiór cech (wektor). Wartości bezwzględne dx oraz dy są również obliczone i razem z sumą wektora tworzą czterowymiarowy deskryptor. Dla każdego z podregionów o rozmiarze 4x4 mamy dzięki temu wektor cech o długości 64. Te wymiary to suma dx, suma modułów dx, suma dy oraz suma modułów dy. 34

35 Rysunek 11: Sposób budowy wetkora dla każdego z podobszarów w podziale na wymiary Algorytm ten powstał w celu przyspieszenia algorytmu SIFT. Jest mniej odporny i mniej dokładny, jednak znacznie szybszy. W celu znalezienia skali przestrzennej nie korzysta z aproksymacji Lapazjanu, filtrów Gaussowskich ani różnicy Gaussowskiej. Lyy oraz Lxy obliczane są w następujący sposób: Rysunek 12: Sposób olbiczania wymiarów W celu przypisania punktom orientacji SURF używa falki Haara w dwóch kierunkach - poziomym i pionowym. Docelowa główna orientacja jest obliczana na podstawie sumy wszystkich odpowiedzi falowych w oknie o kącie rozwarcia 60 stopni. Ciekawe jest, że odpowiedź falowa może być bardzo szybko wyznaczona dla obrazu niezależnie od skali. Dla wielu aplikacji niezależność od obrotów nie jest wymagana, a wówczas długotrwały proces można pominąć i dodatkowo przyspieszyć algorytm SURF. 35

36 Rysunek 13: Sposób przypisywania orientacji poszczególnym punktom Sąsiedztwo o rozmiarze 20 x 20 wokół punktu jest dzielone na okna o rozmiarze 4x4. Obliczony wektor cech składa się z. Jego rozmiar to 64. W celu większej dokładności działania algorytmu SURF można rozbudować wektor do rozmiaru 128. Robi się to poprzez liczenie osobno sum i dla i. Analogicznie sumy i są liczone osobno w zależności od znaku. Dzieki temu podwaja się liczba cech punktu. Jest to zalecana, a zarazem niekosztowna pod względem obliczeniowym opcja. Następnym ważnym usprawnieniem wobec SIFT jest użycie znaku Laplasjanu (tutaj jest to ślad Hessjanu) dla punktu kluczowego. Należy zauważyć, że nie wymaga to dodatkowych operacji, ponieważ jest liczone w trakcie detekcji. Ten znak odróżnia jasne obszary od ciemnego tła. W trakcie łączenia punktów odpowiadających porównujemy tylko te punkty charakterystyczne, które mają ten sam typ kontrastu. Pozwala to przyspieszyć proces łączenia bez ponoszenia kosztów ubocznych. Widać to poniżej. Rysunek 14: Wpływ znaku Laplasjanu na możliwość złączania cech obrazu SURF dodaje wiele cech usprawniających algorytm. Badania pokazały, że jest około 3 razy szybszy niż SIFT, a jakość uzyskanych wyników była o około 10% niższa. SURF jest 36

37 algorytmem skutecznym przy przetwarzaniu obrazow rozmytych i podlegających rotacji, natomiast nie powinien być stosowany do analizy zmiany punktu widzenia lub oświetlenia. Patrząc na ten obraz można zobaczyć, że SURF jest też detektorem obszarowym. Rysunek 15: Promienie z zaznaczonym kierunkiem dowodzą, że SURF jest detektorem obszarowym 2.10 STAR Detektor STAR wywodzi się z detektora CenSurE (Center Surrounded Extrema). Podczas gdy detektor CenSurE używał wielokątów takich jak kwadraty, sześciokąty i ośmiokąty aproksymujące okręgi, STAR aproksymuje okręg poprzez 2 nakładające się na siebie kwadraty przesunięte o 45 stopni. Krawędzie tych kwadratów posiadają wagi przeciwnych znaków. Algorytm działa tylko w skali szarości. Na obraz nakłada się najpierw wspomniane kwadraty. Następnie wykonuje się aproksymację LoG poprzez Lapasjan lub Gaussa. Dzięki temu definiujemy region wewnątrz i na zewnątrz. Algorytm działa w oparciu o sąsiedztwo w trzech warstwach opartych o 3 piksele dookoła każdej. Po wykryciu punktów wstępnych wszystkie, które nie spełniają określonego progu są odrzucane. Następnie punkty są poddane analizie poprzez detektor Harrisa. Te, których wartość progowa zostanie przekroczona zostają odrzucone BRIEF BRIEF to deskryptor wagi lekkiej. Jest łatwo implementowany w oparciu o binarne Stringi. Testy binarne są wykonywane na podstawie algorytmu FERN, który jest najprostszą wersją Bayesianowskiego klasyfikatora. Deskryptor BRIEF jest nastawiony na szybkość, przez co idealnie nadaje się dla urządzeń o słabej mocy obliczeniowej. W celu zwiększenia szybkości rezygnuje się z części odporności zmian skali i rotacji. Jest to jednak wyłącznie 37

38 deskryptor. Potrzebna jest też detekcja punktów. Z uwagi na niższą jakość punktów zaleca się szybką detekcję FAST. Rysunek 16: Wygląd przykładowych deskryptorów dla algorytmu BRIEF SIFT używa 128-wymiarowego wektora deskryptorów. Ponieważ wykorzystuje liczby zmiennoprzecinkowe, można uznać, że jest to 512 bajtów. Podobnie SURF wykorzystuje minimum 256 bajtów dla wersji zawierającej 64 wymiary. Tworzenie takich deskryptorów dla tysięcy punktów charakterystycznych jest trudne do wykonania, szczególnie dla urządzeń mobilnych. Nawet jeśli pamięć obejmie wszystkie dane, proces łączenia punktów będzie bardzo długi. Warto zauważyć, nie wszystkie wymiary są niezbędne, aby przeprowadzić matchowanie. Można je skompresować korzystając z takich metod jak PCA czy LDA. Można też użyć Hashowania znanego jako LSH (Locality Sensitive Hashing) w celu przeprowadzenia liczb zmiennoprzecinkowych w binarne tablice. Binarne tablice są następnie wykorzystane w celu łączenia punktów na podstawie dystansu Hamminga. Jest to bardzo szybki proces, ponieważ policzenie dystansu polega na wykonaniu operacji XOR oraz zliczaniu bitów, a wykorzystywane procesory są bardzo wydajne. Nie rozwiązuje to jednak problemu, że najpierw duży deskryptor musi powstać w pamięci. W tym przypadku BRIEF jest innowacyjny. Pomysł polega na znalezienu Stringów binarnych (ciągów zer i jedynek) bez znajdowania deskryptorów. W tym celu obraz poddaje się blurowi (wygładzeniu, rozmyciu) i wybiera się zbiór punktów (x,y). Potem porównuje się je między sobą pewną funkcją, przyjmijmy I(x). Przykładowo nie pierwsza para to i. Jeżeli, wynikiem jest 1, jeśli nie to 0. Wykonujemy taki test dla każdego punktu, aby uzyskać -wymiarowy String. 38

39 Wartość może wynosić 128, 256 lub 512. OpenCV wspiera te 3 wartości - reprezentuje je w bajtach, zatem odpowiednio 16, 32 i 64. Zaleca się użycie 256. Po wyznaczeniu binarnych Stringów można łatwo obliczyć wspomniany dystans Hamminga. BRIEF osiąga dobre wyniki poza przypadkiem gwałtownego obrotu kamery. Poprzez gwałtowny obrót rozumie się odchylenie o +/- 15 stopni SIMPLEBLOB Jest to algorytm, który wydobywa cechy obszarowe z obrazu. Na początku ustala się zbiór progów od najmniejszego do największego wraz z krokiem. Obraz będzie przetwarzany z uwzględnieniem tych wartości progowych przesuniętych każdorazowo o wartość krokową. Następnie znajduje się kontury obrazu i wyznacza się ich środki. Potem grupuje się środki pod względem ich współrzędnych. Te, które znajdują się blisko siebie, będą stanowiły jeden obszar. Po uformowaniu grup należy obliczyć ich przybliżony promień oraz rozmiar punktów kluczowych. Typowo różnicuje się obraz i wyznacza obszary na podstawie zmian w skali szarości obrazu. Domyślnie wydobywa się poprzez filtrację ciemniejsze obszary w obrazie FREAK FREAK jest samodzielnym deskryptorem. Stanowi ulepszenie algorytmu BRISK. FREAK wyznacza 43 ważone średnie Gaussowskie w otoczeniu punktu charakterystycznego. Warto wspomnieć, że wzorzec powstały poprzez średnie Gaussowskie jest inspirowany kształtem ludzkiego oka. Piksele są mniej zróżnicowane i bardziej skupione wokół punktu charakterystycznego. Z tego powodu dystans między nimi jest mniejszy. FREAK korzysta z kaskady w celu porównywania tych par i wyróżnia 64 najbardziej znaczące bity w celu przyspieszenia algorytmu matchowania. Rysunek 17: Porównianie działania algorytmu FREAK z działaniem oka ludzkiego poprzez podobieństwo 39

40 Oto kształt pikseli wokół punktu charakterystycznego: Rysunek 18: Kształt pikseli wokół punktu charakterystycznego 3 Adaptery dodatkowe Adaptery dodatkowe uzupełniają algorytmy detekcji punktów charakterystycznych. Adapter klasyczny nie wprowadza żadnych zmian wobec zaprezentowanych algorytmów. Adapter GRID dzieli obraz porównywany na siatkę i wykrywa punkty kluczowe w każdej komórce siatki. Adapter PYRAMID wprowadza piramidę Gaussowską prezentującą skalę obrazu. Warto stosować to połączenie z algorytmami detekcji, ktore nie są odporne na zmiany skali. Adapter DYNAMIC iteracyjnie wykrywa porcje punktów charakterystycznych dopóki zadana ich liczba nie zostanie wykryta. Ekstrakcja algorytmów Poza wspomnianymi algorytami wykorzystywanymi do opisania punktów i wydobycia deskryptorów, każdy z nich istnieje w wersji odwróconej. Opponent type to sposób ekstrakcji deskryptorów polegający na zamianie obrazu RGB na odwrotną przestrzeń kolorów i jego analizę w tej odwrotnej przestrzeni. Deskryptory są obliczane dla każdego z trzech kanałów osobono, a potem następuje ich konkatenacja w jednokolorwy deskryptor. Matchowanie algorytmów Najbardziej typowym podejściem jest podejście typu brutalnego. Nie jest ono skomplikowane. Wybieramy deskryptor opisujący jedną cechę z pierwszego zbioru i porównujemy go ze wszystkimi cechami znajdującymi się z w drugim zbiorze. Porównanie odbywa się na zasadzie badania dystansu dzielącego pary cech. Zwracany jest najlepiej dopasowany, a więc ten, którego dystans był najmniejszy. 40

41 BRUTTEFORCE Matcher występuje w różnych wersjach. Różnią się one sposobem wyliczania dystansu. W wersji typowej, czyli NORM_L2 jest on dobry dla algorytmów SIFT oraz SURF. W wersji HAMMING jest szczególnie zalecany dla algorytmów operujących na tablicach (Stringach) binarnych z uwagi na nieskompikowany sposób wyliczania dystansu (XOR na bitach i ich zliczanie). W wersji SL2 nie ma specjalnych zastosowań. Jest to eksperymentalna wersja, która może być zalecana dla algorytmu ORB. Dodatkowo w trakcie łączenia cech w pary można wykonać łączenie obustronne. Zwaca ono dokładniejsze wyniki. Jest stosowane i zalecane przy wyznaczaniu homografii. Polega na tym, że cecha jest uznana za dopasowaną, jeżeli jest dopasowana w zbiorze A w B oraz w zbiorze B w A (relacja dwustronna). Warto wspomnieć o programistycznej strukturze służącej do badania znalezionych dopasowań i odpowiedników. Algorytm zwraca listę punktów dopasowanych, czyli tak zwanych DMatch. Każdy z nich zawiera: DMatch.distance im mniejszy dystans pomiędzy deskryptorami, tym lepiej. DMatch.trainIdx - indeks deskryptora w obrazie analizowanym DMatch.queryIdx - indeks deskryptora w obrazie wzorcowym (z nim się porównuje) DMatch.imgIdx - indeks obrazu porównywanego Flanbased Istnieje jeszcze algorytm FLANNBASED. Jednak jest on oparty na licencji i jest płatny, aczkolwiek znane są reguły jego działania. Nieskorzystanie z tego algorytmu nie wpłynie na wyniki niniejszej pracy. Jest bowiem on zoptymalizowany do przetwarzania ogromnych obrazów i paronam. Polega na przeszukiwaniu najbliższych sąsiedztw i jest pod tym względem zoptymalizowany. Struktura danych wykorzystana w tym algorytmie jest typowa dla problemu sąsiedztwa KD-tree (drzewo wielowymiarowe, czy też k-wymiarowe). Nie jest tutaj badany każdy deskryptor z każdym jak w algorytmie brutalnym, lecz z góry określona liczba sąsiedztw o coraz mniejszym promieniu. LMeDS - Least-Median robust method Algorytm ten jest wykorzystywany w celu znalezienia odpowiedniej homografii pomiędzy dwiema płaszczyznami. LMeDS bierze podzbiór punktów i szuka dla niego rozwiązania. Następnie wybiera z listy pozostałych punktów tylko te, które są spójne z rozwiązaniem już odkrytym. Operacja ta jest wykonywana wielokrotnie dopóki nie zostanie odrzuconych jak najmniej punktów w rozrachunku końcowym (można zadać limit lub procent takich punktów). Szukanie homografii 41

42 Homografia polega na znalezieniu odpowiedniej transformacji pomiędzy dwoma płaszczyznami. Do jej wyszukania można użyć algorytmu brutalnego, czyli każdej pary złączanych ze sobą punktów, LMeDS lub RANSAC z zadanym progiem dyskwalifikacji. Ciekawy jest fakt, że LMeDS działa poprawnie i jest zalecany, o ile obraz nie zawiera zbyt wielu błędnych połączeń. Granica błędu to około 50%. Przy szukaniu homografii należy znaleźć transformację perspektywiczną pomiędzy dwiema płaszczyznami. Ważnym jest, aby błąd tego obliczenia był zminimalizowany: Metoda każdy z każdym wykorzystuje metodę najmniejszych kwadratów, więc jest bardzo podatna na grube błędy. Pod tym względem bardziej odpornymi metodami są LMeDS oraz RANSAC. RANSAC jest metodą uniwersalną. Można go dostroić parametrycznie niezależnie od liczby błędów grubych. Jest to jednak obszar znacznie wykraczący poza tematykę pracę. Przy wyznaczaniu homografii znajduje się macierze wewnętrzną i zewnętrzną. Macierz homografii jest określona poprzez skalę. Należy ją poddać normalizacji tak, aby:. 4 Więcej o losowości, czyli RANSAC Algorytm RANSAC (RANdom SAmple Consensus) pozwala na iteracyjne modelowanie płaszczyzn w zbiorze danych zawierających znaczną (nawet przekraczającą połowę obserwacji) liczbę błędów grubych, czyli punktów nienależących do modelowanej powierzchni. Metoda rozwinięta została początkowo dla celów widzenia komputerowego. Jest to metoda iteracyjnego dopasowywania modelu do zbioru danych, który posiada wiele skrajnych wartości. Podstawowym założeniem RANSAC jest obecność w zbiorze zarówno danych, które pasują do modelu (inliers) jak i tych, których wartości odbiegają od niego (outliers). Źródłem danych, które nie pasują do modelu są zwykle błędne pomiary lub szumy i zakłócenia. Danymi wejściowymi algorytmu są zbiór danych oraz model parametryczny, który będzie dopasowywany do tego zbioru. Dodatkowymi informacjami mogą być: minimalna liczba punktów wymagana do dopasowania modelu, minimalna liczba iteracji, próg określający zakres, w którym znajdują się dane pasujące do modelu, rozmiar zbioru, który umożliwia zakończenie procesu iteracji. Zaletą metody jest jej odporność. Punkty stanowiące przypadkowe odbicia od powierzchni oraz punkty położone w bliskim sąsiedztwie estymowanej płaszczyzny, lecz 42

43 należące do innego obiektu, nie ulegają błędnej klasyfikacji. Działanie algorytmu obejmuje dwa podstawowe, iteracyjnie powtarzane kroki: hipotezę oraz test. Z etapem hipotezy związane jest pojęcie najmniejszego zbioru. To najmniejsza liczba k danych niezbędnych do jednoznacznego zdefiniowania założonego modelu geometrycznego. W przypadku ekstrakcji płaszczyzn minimalny zbiór składa się z trzech punktów. Realizacja algorytmu rozpoczyna się od wylosowania wstępnie ustalonej liczby minimalnych zbiorów, która jest sukcesywnie modyfikowana. Następnie dla każdego ze zbiorów obliczane są parametry modelu (w rozpatrywanym przypadku modelem jest płaszczyzna przechodząca przez trzy punkty). Zidentyfikowany model stanowi hipotezę, która podlega sprawdzeniu w następnym kroku teście. Etap testu wymaga ustalenia wartości parametru md, określającego maksymalną odległość testowanego punktu od hipotetycznego modelu. Jeżeli punkt spełnia kryterium odległości, dodany zostaje do tzw. zbioru CS (Consensus Set). W tej pracy zbiór składa się z danych, które uznane zostały za należące do rozpatrywanej płaszczyzny. Po wykonaniu testu dla wszystkich danych, wybierany jest kolejny zbiór minimalny. W oparciu o niego powtórzona zostaje sekwencja dwóch kroków hipotezy i testu. W przypadku znalezienia zbioru CS zawierającego większą liczbę punktów niż poprzedni, dotychczasowy zbiór zastąpiony zostaje liczniejszym. Modyfikacji ulega liczba próbek zbiorów minimalnych. Algorytm RANSAC sprowadza się do wykonania następującej procedury: 1. Model jest tworzony na podstawie ustalonej liczby obiektów wybranych za pomocą losowania. 2. Pozostałe obiekty zbioru porównywane są z utworzonym modelem. Jeśli obiekt pasuje do estymowanego modelu, jest również uznawany za należący do modelu. 3. Estymowany model jest uznawany za poprawny, jeśli ustalona minimalna liczba obiektów została sklasyfikowana jako poprawnie określająca model. 4. Jeśli model uznano za poprawny, zostaje zapisany w pamięci wraz ze wszystkimi obiektami zaklasyfikowanymi wcześniej jako poprawnie określające. 5. W ostatnim kroku wyliczony zostaje średni błąd wybranych obiektów dla aktualnego modelu. Procedura ta jest powtarzana określoną przez projektanta liczbę razy. W każdej z iteracji porównujemy otrzymany model z najlepszym ze wszystkich modeli wcześniej uzyskanych. Jeśli średni błąd dla nowego modelu jest mniejszy niż dla najlepszego z dotychczas utworzonych, aktualny model staje się modelem najlepszym. Za pomocą algorytmu RANSAC można wykryć proste linie wchodzące w skład przetwarzanego obrazu. Aby tego dokonać, stosuje się wersję algorytmu dostosowaną do tego zadania. Model jest tworzony na podstawie dwóch losowo wybranych pikseli leżących na krawędziach. Kierunki ich gradientu muszą być zgodne (projektant algorytmu definiuje maksymalną różnicę ich orientacji). Jeśli kierunki nie są zgodne, losowanie zostaje powtórzone. Wybrane piksele stanowią potencjalne końce prostej linii. Proces porównywania pozostałych pikseli z modelem składa się z dwóch etapów. W pierwszym porównywany jest kierunek wybranego piksela. Jeśli jest on zgodny z modelem, sprawdzone zostaje, czy leży na linii wyznaczonej przez model. Algorytm kończy działanie po przekroczeniu zadanej liczby iteracji lub w przypadku, kiedy wszystkie piksele obrazu leżą na jednej linii. Takie ułożenie pikseli jest wysoce prawdopodobne, jeśli operujemy na fragmencie obrazu. W przypadku dużej ilości danych obraz powinien zostać podzielony w celu optymalizacji działania algorytmu. 43

44 5 Przegląd narzędzi W celu wykonania części praktyczej powyższej pracy dokonano przeglądu dostępnych narzędzi programistycznych. Okazało się, że prezentowany poniżej zbiór jest wystaczający i zapewnia wsparcie przy tworzeniu oprogramowania dotyczącego przetwarzania obrazów na potrzeby systemu OS Android. Wykorzystane w pracy narzędzia to: OpenCV - biblioteka open source, która umożliwia testowanie algorytmów na urządzeniach mobilnych z OS Android, Android SDK - zbiór narzędzi pozwalających na implementacje rozwiązań na platformę mobilną OS Android, OpenCV Manager - zbiór narzędzi optymalizacyjnych pozwalających istotnie przyspieszyć aplikację mobilną oraz oszczędzić miejsce na dysku smartfona, OpenGL biblioteka służąca do wyrysowania wielokolorowego sześcianu i zobrazowania, że wykryto zadany obraz w aplikacji prezentującej rzeczywistość rozszerzoną. 6 Opis Aplikacji W ramach praktycznej części tej pracy powstały dwie aplikacje użytkowe. Pierwsza opisana poniżej jest samodzielną implementacją prostego modelu wykrywania znacznika oraz generowania rozszerzonej rzeczywistości. Druga aplikacja powstała po to, aby testować pod różnymi aspektami opisywane algorytmy detekcji cech obrazów i porównywać ich działanie. 6.1 Aplikacja pierwsza - własna implementacja wykrywania znacznika i generowania AR Aplikacja pierwsza powstała, by zaprezentować praktyczne wykorzystania biblioteki OpenCV w celu wygenerowania AR oraz aby pokazać możliwości jej łatwej integracji z systemem OS Android i jego natywnymi funkcjami. Dzięki API systemu Android można (o ile urządzenie na to pozwala) dokonywać swobodnych przełączeń się między przednią i tylną kamerą. Jest to przykład łatwego dodawania dostępnych opcji do aplikacji. Zmiany kamery dokonuje się za pomocą menu. Drugim przyciskiem menu jest opcja pozwalająca na nałożenie filtra Sobela na kamerę. Dzięki opisanym dwóm właściwościom możliwe jest nałożenie filtra na twarz użytkownika (poprzez przełączenie się na kamerę wewnętrzną). Uzyskujemy w ten sposób ciekawy efekt. Warto nadmienić, że aby aplikacja na system OS Android mogła korzystać z kamery i zapisywać zdjęcia w pamięci urządzenia, należy wprowadzić poniższe dostępy w pliku w formacie xml o nazwie AndroidManifest: <uses-permission android:name="android.permission.camera" /> <uses-permission android:name= "android.permission.write_external_storage" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" /> <uses-feature android:name="android.hardware.camera.flash" 44

45 android:required="false" /> Należy zauważyć, że wiele metod systemowych na OS Android, takich jak startactivity(), działa asynchronicznie. W trakcie pracy użytkownik ma opcję równoczesnego korzystania z interfejsu. Dzięki temu może zainicjować zadanie niezwiązane z już wykonywanymi. Efekt polega na tym, że gdy użytkownik szybko wciśnie wielokrotnie przycisk, może to spowodować wielokrotne wykonanie tego samego zadania, co jest niekorzystne. Rozwiązaniem jest blokowanie wciśniętego przycisku do momentu, gdy obsługujący go wątek główny nie powróci do stanu bezczynności. Schemat ten pozwala zrozumieć cykl życia aplikacji na OS Android. Dobrze widać to na poniższym rysunku. W systemie OS Android występuje tzw. aktywność (ang. activity). Jest to element systemu Android zbliżony do ciężkiego wątku. W momencie, gdy nowa aktywność startuje, jest umieszczana na górze stosu żyjących aktywności. Starsze aktywności znajdują się zawsze poniżej obecnie żyjącej i nie mogą wrócić na stos dopóki nie odda im ona kontroli. Aktywność cechują cztery najważniejsze stany: Jeżeli aktywność jest na pierwszym planie ekranu (znajduje się na górze stosu), mówimy, że jest aktywna lub że żyje. Jeżeli aktywność utraciła fokus, ale cały czas jest widoczna, mówimy, że została spauzowana. Spauzowana aktywność to aktywność żyjąca. System może zniszczyć taką aktywność tylko wtedy, gdy krytycznie brakuje mu zasobów. Jeżeli aktywność jest całkowicie niewidoczna i zastąpiła ją inna, to mówimy, że aktywność jest zatrzymana. Cały czas przechowuje swój stan i dane, ale nie jest już widoczna, a system może ją zniszczyć pod warunkiem, że potrzebuje zajmowanych przez nią zasobów. Jeżeli aktywność jest spauzowana lub zatrzymana, system może ją zakończyć albo zniszczyć związany z nią proces. Jeżeli zostanie ona wyświetlona użytkownikowi, musi być zrestartowana i przywrócić swój poprzedni stan. Poniższy diagram obrazuje cykl życia aktywności. Kolorowe owale to główne stany, w których może znajdować się aktywność. Jak już wspomniano, aktywność to bardzo ciężki odpowiednik wątku. Z tego powodu należy oszczędnie jej używać. Nie jest korzystnie programować na zasadzie jedna klasa = jedna aktywność, bowiem koszt przełączenia między aktywnościami jest bardzo wysoki, a jego częste zmiany wpływają niekorzystnie na stabilność aplikacji. 45

46 Rysunek 19: Diagram stanów aktywności Jak widać na powyższym rysunku najważniejsze działania można sprowadzić do trzech pętli: Czas życia trwa pomiędzy wywołaniem metody oncreate() do zawołania metody ondestroy(). W metodzie oncreate() należy zainicjować wszystkie zmienne potrzebne do działania, natomiast w metodzie ondestroy() należy zwolnić wszystkie zajęte zasoby, na przykład zatrzymać wszystkie wątki czy połączenia internetowe. Widoczna część życia aktywności ma miejsce pomiędzy wywołaniem metody onstart() aż do metody onstop(). W tym okresie użytkownik widzi pierwszy plan aktywności oraz przechowuje zasoby niezbędne do wyświetlenia GUI. Gdy ma miejsce pierwszoplanowa aktywność, czas życia trwa od metody onresume() aż do metody onpause(). W tym czasie aktywność jest na górze stosu aktywności i użytkownik może odbywać z nią interakcję. Aktywność często może zmieniać stany pomiędzy wznowionym a zapauzowanym, np. gdy wygasi się ekran telefonu. Wspomniane dwie aktywności powinny być lekkie i nie wykonywać kosztownych obliczeń, gdyż są często wołane. Następną praktyczną możliwością wynikającą z omawianej aplikacji jest zrobienie zdjęcia oraz jego edycja przy użyciu zainstalowanych aplikacji edycyjnych takich jak np. (Instagram), a potem możliwość wysłania tego zdjęcia poprzez czy Bluetooth. 46

47 Operacje te wykonuje się za pomocą Intentów Androidowych. Ich użycie jest nieskomplikowane Rysunek 20: Możliwość przesyłania zdjęć w łatwy sposób za pomocą API Andorid SDK Androidowe intenty służą do wystartowania nowej aktywności. Precyzyjnie rzecz ujmując, powodują, że do życia powołana zostaje nowa aktywność (często systemowa, np. dzwonienie, , galeria) i jest umieszczona na górze stosu, przez co staje się widoczna dla uzytkownika. Jeśli OS Android ma do czynienia z typem aktywności, który można wykonać na wiele sposobów (np. aby przejrzeć stronę internetową, można użyć jednej z kilku przeglądarek), zawsze wyświetla okno dialogowe z możliwymi opcjami do wyboru lub informuje o braku wbudowanych rozwiązań. Z typowo graficznych cech tej aplikacji należy omówić Filtry i Efekty, które można nakładać na obraz. W celu szybszego i poprawnego liczenia przekształceń wykorzystaliśmy tutaj bibliotekę Apache Commons Math, która umożliwia liczenie zaawansowanych funkcji matematycznych. Jedną z dostępnych operacji jest miksowanie kanałów kolorów. Jak już wspomniano, OpenCV przechowuje obrazy jako typ danych macierzowych o nazwie Mat, który jest dwuwymiarową tablicą. Wiersze i kolumny odpowiadają x oraz y we współrzędnych obrazu. Dane przechowywane w tych wierszach i kolumnach to wartości związane z pikselami. Wartość piksela może być reprezentowana jako pojedyncza liczba (wówczas jest to obraz w skali szarości) lub jak kilka liczb (tak dzieje się w przypadku obrazka kolorowego). Każda z tych liczb przynależy do pewnego kanału. Obraz w skali szarości może posiadać tylko jeden kanał (jasność), podczas gdy obrazy kolorowe mogą mieć do czterech kanałów, na przykład czerwony, zielony, niebieski oraz kanał przezroczystości (znany jako format RGBA). Innymi znanymi formatami są RGB (bez przezroczystości), HSV oraz L*a*B. Skupimny się na RGB i RGBA, ponieważ są one wspierane przez OpenCV. Biblioteka daje możliwość konwertowania pomiedzy formatami kolorów. 47

48 Jeżeli odseparujemy kanały z obrazu w formacie RGB, możemy użyc trzech różnych macierzy w skali szarosci, gdzie każda z nich zawiera osobny kanał. Następnie poprzez operacje na jednokanałowych macierzach możemy złączyć je w jedną macierz reprezentującą inny niż oryginalnie obraz w formacie RGB. Wynikowy obraz będzie wyglądał, jakby używał innej palety kolorów niż oryginał. Taka technika znana jest jako mieszanie kanałow. Dla obrazu RGB definiujemy kanały mieszające jako: dst.b = funcb(src.b, src.g, src.r) dst.g = funcg(src.b, src.g, src.r) dst.r = funcr(src.b, src.g, src.r) Każdy kanał w obrazie docelowm będzie powiązany z funkcją określającą wszystkie kanały obrazu bazowego. Warto przedstawić klasyczny zestaw: dst.b = 0.5 * src.r * src.b Powoduje to, że regiony obrazu, które w oryginale były bliskie niebieskiemu kolorowi, staną się czerwone lub purpurowe. Rysunek 21: Efekt działania mieszania kanałów wg wzoru dst.b = 0.5 * src.r * src.b Programując w OpenCV należy pamiętać, że bezpiecznie jest do operacji bazujących na macierzach przekazywać zawsze jako obraz docelowy i wynikowy tę samą macierz. Traci się wtedy macierz docelową, gdyż staje się ona wynikową. Jednak jest to sposób szybszy, niepowodujący wycieków pamięci oraz niebezpieczeństwa związanego ze spowolnieniem aplikacji w czasie eksploatowania. 48

49 6.1.1 Zmiany krawędzi kolorów w obrazie i ich miksowanie Patrząc na obraz widzimy w jak subtelny sposob zmieniają się barwy pomiedzy jego regionami. Przykładowo w słoneczny dzień cienie na dworze są niebieskie, ponieważ zabarwia je światło odbite od niebieskiego nieba. Tymczasem rzeczy oświetlone promieniami Słońca (przeswietlone) mają lekko żółtą barwę. Widząc na fotografii zabarwione na niebiesko cienie i żólte obiekty, mamy wrażenie ciepła. Taki efekt może być naturalny lub można go uzyskać za pomoca filtra. Byłby to filtr krzywizn. Filtry krzywizn są parametryzowane poprzez zbiory punktow kontrolnych. Przykładowo taki zbiór punktów może istnieć dla kazdego kanalu. Kazdy punkt kontrolny jest parą numerów reprezentujących wartości wejściowe i wyjściowe dla danego kanalu. Dla przykladu para (128, 180) oznacza ze wartośc 128 danego koloru zostala rozjaśniona do wartosci 180. Wartości pośrednie są interpolowane wzdluz krzywej (stad też nazwa filtry krzywizn). Dzięki tym własnościom filtry krzywizn idealnie slużą do stworzania wrażenia subtelnych i naturalnie wyglądających efektów na zdjeciach. W pseudokodzie taki filtr dla RGB wygląda następująco: dst.b = funcb(src.b) gdzie funcb interpoluje punkty kanalu B dst.g = funcg(src.g) gdzie funcg interpoluje punkty kanalu G dst.r = funcr(src.r) gdzie funcr interpoluje punkty kanalu R Aby powstaly w wyniku nakładania filtrów obraz wygladał naturalnie należy przestrzegać określonych zasad. Każdy zbiór punktów kontrolnych musi zawierać punkty (0, 0) i (255, 255). Dzięki temu czarne pozostaje czarne, a białe nadal jest białe. Obraz unika niekorzystnego efektu prześwietlenia i przejaskrawienia barwy. Wraz ze wzrostem wartości wejściowych, wartości wyjściowe rownież rosną, co znaczy, że jest to funkcja monotonicznie rosnąca. Dzięki temu cienie pozostaną cieniami, prześwietlony fragment będzie nadal prześwietlony, a obaz nie będzie zbyt kontrastowy. Niestety samo OpenCV nie daje mozliwosci interpolacji funkcji krzywizn, dlatego wykorzystano bibliotekę Apache Commons Math, która oferuje taką opcję. Warto pamiętać, że funkcje interpolujące są kosztowne obliczeniowo. Nie chcemy ich uruchamiać dla wszystkich kanałów, pikseli i klatek. Ponadto nie jest to konieczne. Istnieje tylko 256 wartości wejściowych dla kanału, można zatem obliczyć wszystkie wartosci wyjściowe i zapamiętac je w tablicy. Jest to sposób optymalizacji tego procesu. Następnie przedstawimy algorytm Porta Kodak, ktorym zasłyneła firma fotograficzna Kodak w czasach wywoływania zdjec z aparatów małoobrazkowych. Wartości dobrane do tablic są zaczerpnięte właśnie z tego filtra. public class PortraCurveFilter extends CurveFilter { public PortraCurveFilter() { super( new double[] { 0, 23, 157, 255 }, // vvalin new double[] { 0, 20, 173, 255 }, // vvalout new double[] { 0, 69, 213, 255 }, // rvalin new double[] { 0, 69, 218, 255 }, // rvalout 49

50 new double[] { 0, 52, 189, 255 }, // gvalin new double[] { 0, 47, 196, 255 }, // gvalout new double[] { 0, 41, 231, 255 }, // bvalin new double[] { 0, 46, 228, 255 }); // bvalout } } Filtr ten powoduje ogólne rozjasnienie obrazu. Sprawia, że cienie stają się bardziej błękitne i miękkie oraz że prześwietlenia są bardziej żółte, a przez to cieplejsze. Dzięki temu obraz wydaje się bardziej słoneczny i czystszy. Rysunek 22: Efekt działania filtra Porta Kodak Oto charakterystyczne wartości będące punktami kontrolnymi: new double[] { 0, 255 }, // vvalin new double[] { 0, 255 }, // vvalout new double[] { 0, 59, 202, 255 }, // rvalin new double[] { 0, 54, 210, 255 }, // rvalout new double[] { 0, 27, 196, 255 }, // gvalin new double[] { 0, 21, 207, 255 }, // gvalout new double[] { 0, 35, 205, 255 }, // bvalin new double[] { 0, 25, 227, 255 }); // bvalout Powodują one, że obraz wyjściowy posiada większy kontrast pomiedzy cieniami oraz przeswietlniami i przez to dąży do koloru niebieskiego. Niebo, woda i cienie są bardziej wyeksponowane od światła słonecznego. Jest to filtr Fuji Provia, którego firma Fuji używała do wywoływania widoków w celu lepszego uwidocznienia kolorów. Tymczasem produkt Kodaka pozwalał lepiej prezentować zdjęcia ukazujące ludzi. 50

51 Rysunek 23: Efekt działania filtru Fuji Provia Filtry krzywizn pozwalają manipulować kolorem i kontrastem. Mają jednak jedną zasadniczą wadę, a w zasadzie ograniczenie. Mianowicie, jeden piksel obrazu zmienionego jest zależny tylko od jednego piksela obrazu wejściowego. Dalej omówimy ciekawsze filtry produkujące obraz w oparciu o sąsiedztwo pikseli pochodzących z obrazu wejściowego Filtry wykorzystujące sąsiedztwo zwane filtami konwolucji (filtry splotu) Filtry splotu charakteryzuje fakt, iż wartość wynikowana piksela jest średnią ważoną pikseli sąsiednich. Wagi można umieścić w macierzy zwanej macierzą splotu lub jądrem. Przykładowa macierz wygląda następująco: {{ 0, -1, 0}, {-1, 4, -1}, { 0, -1, 0}} Centralny element powyższej macierzy jest wagą źródłowego piksela, mającego ten sam indeks co piksel wynikowy. Pozostałe elementy symbolizują wagi pozostałych pikseli źródłowych. Rozpatrujemy sąsiedztwo o wymiarze 3x3. Macierz ta jest filtrem, który znajduje krawędzie. Nazywamy go Laplazjanem. Dla płaskiego sąsiedztwa (o tych samych kolorach) produkuje on piksel o barwie czarnej. Dla sąsiedztwa o wysokim kontraście (a więc np. krawędzi) produkuje piksel o barwie białej. Laplazjan charakteryzuje również fakt, że suma elementów jest równa elementowi centralnemu. Rozpatrzmy teraz macierz, której element centralny jest o 1 większy niż suma pozostałych. 51

52 {{ 0, -1, 0}, {-1, 5, -1}, { 0, -1, 0}} Macierz ta jest równoważna zastosowaniu macierzy Laplazjanu, a następnie zsumowaniu jej wyniku z obrazem oryginalnym. Dzięki temu poza znajdowaniem krawędzi uzyskujemy efekt wyostrzania krawędzi. W ten sposób krawiędzie stają się jaśniejsze, podczas gdy pozostałe elementy obrazu pozostają niezmienione. Tego filtru użyjemy w naszej aplikacji. Rysunek 24: Efekt działania filtra splotu Ze względów opytmalizacyjnych zaleca się unikanie dużych sąsiedztw, a w konsekwencji macierzy o większych wymiarach. Graniczną wielkością macierzy jest wymiar 5x5, czyli 25 pikseli obrazu wejściowego produkuje jeden piksel wyjściowy. Przetwarzając obraz na żywo, system Android nie obsługuje sprawnie przekształceń macierzowych większych niż 3x3. W naszej aplikacji krawędzie są pogrubione i przez to ciemniejsze, a reszta obrazu jaśniejsza. Jest tak dlatego, że posłużyliśmy się metodą negacji bitowej po zastosowaniu filtra splotu. W ten sposób obraz jest lepiej widoczny, a krawędzie uwypuklone. Kolejnym kluczowym aspektem aplikacji jest możliwość detekcji obrazu zadanego (markera) i wyświetlenie jako AR sześcianu rotującego się wraz z ruchami kamery. Nasza aplikacja może otrzymać jako parametry obrazy źródłowe, które będą wyszukiwane w scenie. Należy jednak pamiętać, aby obrazy były bogate w punkty kluczowe. Praca Vincenta van Gogha Gwiaździsta Noc stanowi odpowiedni przykład. Jako przedstawiciel postimpresjonizmu malarz używał dużego kontrastu i ostrych posunięć pędzla, co zaowocowało dużą liczbą punktów charakterystycznych. Dzięki temu możemy nauczyć telefon znajdować taki obraz w scenie. 52

53 6.1.3 Szukanie i śledzenie obrazu w scenie Aby znaleźć obraz człowieka, należy odpowiedzieć na pytanie jak dana osoba wygląda. Dla komputera proces ten jest równie istotny jak dla człowieka. Najpierw należy porównać obraz poszukiwany z obrazem dostarczonym. W tym celu używa się obrazu referencyjnego, czyli tego, którego szukamy. Obraz ten będzie porównywany z kolejnymi klatkami z kamery. Odnalezienie go w przestrzenii jest równoważne ze znalezieniem jego pozycji w 3D. W finalnym obrazie 2D możemy obrysować znaleziony obraz liniami równoległymi. Mając na uwadze zniekształcenia, otrzymamy równoległobok obrysowywujący szukany obraz w 3D. Istnieje kilka klasycznych metod szukania obrazu w scenie. Typowy algorytm uogólniony, składający się z czterech faz, został przedstawiony ponizej: 1. Znajdź punkty charakterystyczne zarówno w obrazie szukanym, jak i porównywanym. 2. Znajdź deskryptory dla wszystkich znalezionych zbiorów punktów kluczowych. Deskryptor to wektor danych opisujących punkt kluczowy. Nie każdy punkt kluczowy daje się opisać, więc zawsze uzyskamy mniej deskryptorów niż punktów kluczowych. 3. Znajdź odpowiadające sobie punkty na obrazach. W tym celu korzystaj ze zbiorów deskryptorów. Najcześciej oznacza to znalezienie punktów o pewnych cechach dotyczących ich odległości w wielowymiarowych przestrzeniach. 4. Znajdź homografię pomiędzy obrazem referencyjnym a analizowanym. Homografia to opis transformacji 3D niezbędnej do połączenia dwóch prezentowanych obrazów 2D w celu nałożenia ich na siebie. Oblicza się ją na podstawie połączonych (zmatchowanych) deskryptorów. Poprzez zastosowanie homografii do prostokąta można uzyskać obrys szukanego obrazu. W celu przeprowadzenia i wykonania tych operacji użyliśmy następujących algorytmów: detektora STAR - bardzo dokładny, dostarcza wyselekcjonowane punkty kluczowe, desktryptora FREAK, matchera BRUTEFORCE HAMMING. Powyższa kombinacja jest dostatecznie szybka, a jednocześnie odporna na zmiany obrazu. Widać to w momencie obracania kamerą telefonu w pobliżu znalezionego obrazu. Nie jest on szybko gubiony, pozostaje cały czas wykryty mimo zmian w scenie. Cechami determinującymi dobór algorytmów jest ich niezależność od skali oraz rotacji. Dzięki temu obraz może być szukany przy zastosowaniu różnych kątów oraz perspektyw. Ponadto STAR, FREAK I BRUTTFORCE HAMMING nie należą do grupy algorytmów opatentowanych, zatem są bezpłatne i można używać ich nawet w komerycyjnch aplikacjach. W celu znalezienia homografii niezbędne są najlepsze możliwe złączenia punktów kluczowych. Inny słowy, minimalizujemy dystans Hamminga. W celu wyznaczenia homografii wystarczają 4 złączone (zmatchowane) punkty o bardzo wysokiej jakości. W tym celu będziemy szukać wierzchołków obrazu. Posłużymy się opisanymi poniżej przypadkami. 1. Jeżeli wszystkie z punktów złączeniowych mają dużą wartość dystansu Hamminga, zakładamy, że w danej scenie nie występuje szukany obraz. W tym przypadku 53

54 czyścimy listę punktów, które próbujemy dopasować jako wierzchołki, gdyż najprawdopodobniej jest ona błędna. 2. Jeżeli złączenia (matche) są częściowo poprawne, zakładamy, że szukany obraz stanowi fragment sceny. Wówczas zachowujemy je na liście potencjalnych wierzchołków w celu stabilizacji estymat. 3. Jeżeli matche są poprawne w liczbie co najmniej czterech, znajdujemy homografię w oparciu o 4 najlepsze punkty i na jej podstawie wyznaczamy wierzchołki w obrazie. Przanalizujemy teraz pewną hipotetyczną sytuację. Wybieramy powszechnie znane zdjęcie. Wiemy gdzie je wykonano, a chcemy ustalić jak zostało zrobione. W tym celu musimy udać się w miejsce jego powstania, a następnie określić gdzie umiejscowiono aparat oraz pod jakim kątem wykonano zdjęcie. Jeżeli nam się to uda, wiemy jakiej długości ogniskowej użyto. Bez tej informacji idealnie odwzorowanie zdjęcia nie jest możliwe. Podobny problem napotykamy w trakcie szukania obrazu w scenie. Aby go odnaleźć, trzeba ustalić, jakie są horyzontalne i wertykalne pola widzenia kamery oraz jakie są wyrażone w pikselach rozdzielczości w obu kierunkach. Analizując parametry związane z kamerą urządzeń mobilnych, nie wolno zapomnieć o konieczności zapamiętania flagi. Innymi słowy, należy ustalić czy macierze projekcji kamery są brudne (nieaktualne) czy nie. Jeśli tak, należy je zaktualizować, a są to kosztowne operacje. Ponadto trzeba odwołać się do klasycznego modelu kamery. Konieczna jest znajomość tzw. płaszczyzny obcinanej bliskiej i płaszczyzny obcinananej dalekiej. Trzeba wiedzieć, że obraz nie będzie widoczny ani bliżej, ani dalej niż dwie wspomniane płaszczyzny (zostanie do nich ucięty jak na rysunku poniżej). Rysunek 25: Szukanie pozy kamery zamiast homografii, czyli trackowanie 3D. 54

55 Chcemy ustalić położenie kamery w świecie 3D i znaleźć na tej pozie obraz trackowany. W celu szukania pozy w 3D zamiast klasycznej homografii trzeba operować na wszystkich dotychczasowych danych dotyczących punktów charakterystycznych i kamery. Należy podkreślić, że konieczne jest też zastosowanie dodatkowych schematów. Jeśli chcemy pobrać macierz projekcji kamery, a nie znaleźliśmy szukanego celu, trzeba uznać że nie mamy danych do jej zwrócenia z funkcji. Ponadto szukamy punktów, ich deskryptorów i złączeń (matchy). Nie dążymy już do znalezienia homografii, lecz do właściwej pozy w 3D. Widać tu różnice w implementacji. Po pierwsze, rozszerzamy wymiar punktów kluczowych do 3D, dodając wartość 0 dla zmiennej z. Następnie, tak jak poprzednio, szukamy pozycji celu oraz obrotu kamery na podstawie złączonych punktów kluczowych. Należy pamiętać, że w OpenCV oraz w OpenGL kierunki osi y oraz z są odwrócone i trzeba pomnożyć uzyskane wyniki przez -1. Efektem opisanych powyżej operacji jest odnalezienie macierzy obrotu i translacji. Dzięki niej możemy wyrysować w OpenGL sześcian na znalezionym obrazie. Dokonujemy tego na podstawie pozy kamery. Wyznaczamy ją w podobny sposób jak niegdyś homografię, tylko w 3D, a nie w 2D. Jeżeli obraz został znaleziony, wyrysujemy na nim kolorwy sześcian. Należy zauważyć, że mały, więc nie obniża znacząco przetwarzanej liczby klatek na sekundę. Jeżeli obraz nie został znaleziony, w lewym górnym rogu kamery wyrysujemy obraz szukany w scenie. W ten sposób można zorientować się czy uzyskaliśmy zadowalające rezultaty. Rysunek 26: Szukanie wzorcowego obrazu w scenie w czasie rzeczywistym Pozostaje pytanie w jaki sposób można wrysować sześcian w scenę, a w efekcie jak można zbudować własną AR. OS Android wspiera OpenGL i umożliwia rysowanie po widgecie zwanym GLSurfaceView. Interesują nas dwie cechy OpenGL: stosowanie macierzy do przekształceń 3D na wierzchołkach sześcianu oraz rysowanie trójkątów na podstawie przekształconych 55

56 wierzchołków. Nasz sześcian ma osiem wierzchołków oraz składa się z dwunastu trójkątów (6 ścian * 2 trójkąty na kwadrat ściany). Niekorzystne jest, że w OpenGL operacje na kolorach są przeprowadzane na buforach. Z tego powodu trzeba stosować dużo niskopoziomowych przekształceń oraz alokować z góry znaną liczbę określającą zasoby pamięci. Aby skutecznie rysować w OpenGL należy pamiętać, żeby wyczyścić zawsze poprzednio narysowany obraz poprzez zastąpienie go w pełni niewidocznym kolorem. Następnie należy sprawdzić czy dostępne są macierze pozy kamery oraz macierz projekcji. Jeżeli tak to przekazujemy je do OpenGL w celu przesunięcia i wyskalowania widocznego sześcianu. Jak widać poniżej sześcian renderuje się na wyszukanym obrazie, przez co tworzy rozszerzoną rzeczywistość znaną jako AR. Rysunek 27: Odnaleziony wzorczec charakteryzuje wygenerowany sześcian jako rozszerzona rzeczywistość 6.2 Aplikacja druga - badanie efektywności aglorytmów detekcji Aplikacja ta powstała, aby przeprowadzić testy badania efektywności różnych algorytmów detekcji, ekstrakcji oraz łączenia punktów charakterystycznych w celu wykrywania podobnych obrazów. Interfejs użytkownika został zaprojektowany tak, aby testowanie czytelne, intuicyjne i możliwie najwygodniejsze. Dysponujemy dwoma menu. Pierwsze to pasek z przyciskami widocznymi na górze. Drugie jest ukryte pod przyciskiem opcji urządzenia i można je wysunąć. Centralną część okien zajmuje widok "na żywo" z kamery z wrysowanym w prawym górnym rogu licznikiem klatek na sekundę oraz rozdzielczością przetwarzania obrazu. W prawym rogu będzie się wyświetlał obrazek wzorca - będzie to migawka zapamiętana jako wzorzec służący do porównań między obrazami. 56

57 Należy podkreślić, że obie aplikacje działają tylko w orientacji poziomej urządzenia (tzw. landscape), ponieważ obsługa kamery w bibliotece OpenCV nie jest kompatybilna ze zmianami orientacji w OS Android. W związku z tym aplikacje wspierające obroty urządzeń są niestabilne. Nie wpływa to znacząco na ich odbiór, ponieważ widok z kamery najczęściej ogląda się w orientacji poziomej. Problematyczne jest, że OS Android w specyficzny sposób przeładowuje kontekst aplikacji. W uproszczeniu można przyjąć, że startuje ją na nowo, choć nie jest to do końca prawda. Wynika to z cyklu życia aplikacji na Androida. Problem ten wykracza jednak poza tematykę niniejszej pracy. Przycisk Clear w menu górnym służy do wyczyszczenia listy migawek porównywanych do obrazu zadanego. Przycisk Add(n) powoduje dodanie na listę obrazów porównywanych migawki obrazu kamery w momencie wciśnięcia. N zmienia się dynamicznie i reprezentuje liczbę już zrobionych i zapamiętanych migawek służących do porównania z obrazem zadanym. Przycisk Reference Pic powoduje zapamiętanie migawki obrazu w momencie wciśnięcia przycisku, aby następnie możliwe było porównywane z nią obrazów z listy. Rysunek 28: Przykładowe działanie aplikacji do porównywania algorytmów 57

58 Rysunek 29: Wiadomość do użytkownika, gdy próbuje porównać obrazy bez ich poprzedniego dodania. W celu optymalizacji algorytmu należy poprzez porównanie każdego z obrazów z listy z obrazem referencyjnym obliczyć punkty charakterystyczne dla obrazu referencyjnego tylko raz (jak dla każdego obrazu). Z tego powodu przeprowadzanie obliczeń za pierwszym razem dla nowych obrazów trwa znacznie dłużej niż za każdym kolejnym. Korzystna jest opcja zapamiętywania obrazów z listy i obrazu referencyjnego. Pozwala to zmieniać ustawienia oraz skierować kamerę w dowolne miejsce, a równocześnie mieć pewność, że zapamiętane obrazy zostaną poddane analizie. Co ważniejsze, możemy dodawać do listy nowe obrazy nie tracąc wcześniejszych i wykorzystać fakt optymalizujący, że obliczenia zostaną przeprowadzone tylko nowych obrazów. Ma to istotny wpływ na sposób testowania algorytmów. Przycisk Find Matches powoduje uruchomienie elementu systemu Android znanego jako AsyncTask (jest to odpowiednik wątku). Powoduje to, że aplikacja przetwarza współbieżnie, jest wielowątkowa i wykorzystuje liczne rdzenie procesorów z urządzeniami OS Android. W trakcie obliczeń widać pasek postępu, który wskazuje ile obrazów z listy zadanej zostało już porównanych. Daje to użytkownikowi pewność, że aplikacja działa, nie jest zawieszona. Istotne jest, że AsyncTask pozwala na wykonywanie niezbyt długich, trwających maksymalnie 30 sekund, operacji. Testy wykazały, że jest to czas wystarczający, aby przy pierwszym przetwarzaniu porównać około pięćdziesięciu zdjęć. Należy zaznaczyć, że liczba ta wystarcza, aby uznać testy za wiarygodne. AsyncTask pozwala na asynchroniczne wykonywanie prac i komunikację zwrotną z interfejsem użytkownika. Powoduje blokowanie operacji w wątku roboczym, a następnie zwraca wyniki do wątku użytkownika bez konieczności samodzielnego zarządzania mutexami i innymi mechanizmami synchronizacji wątków. Dzięki temu wątek główny wchodzący w interakcję z użytkownikiem jest bezpieczny. Kod jest czytelny i krótki. Wyraźnie rozdziela części wątku roboczego i głównego, dzięki czemu nie mieszają się one ze sobą. 58

59 Rysunek 30: AsyncTask w toku, komunikat postępu porównywania obrazów z listy ze wzorcem W menu górnym występują jeszcze 2 przyciski typu toggle button, które zachowują stan włączony lub wyłączony. Pierwszym z nich jest przycisk Homography. Jeżeli jest włącznony, dodatkowo oblicza homografię między zadanymi obrazami przy wykorzystaniu wspomnianej już funkcji OpenCV findhomography. Pozwala ona na najbardziej dokładne stwierdzenie czy obrazy są identyczne. Drugim z nich jest przycisk Show Matches. Jeżeli po przeliczeniu obrazów jest włączony, pozwala na wyświetlenie wszystkich punktów uznanych za znalezione odpowiedniki. Łączy liniami w różnych kolorach te, które spełniły zadane przez użytkownika kryterium dystansu i homografię (o ile ją zaznaczono). Po przeliczeniu obrazów wyświetlane jest okno dialogowe pokazujące najlepszy z dopasowanych obrazów z listy oraz obraz, z którym dokonywano porównania. W zależności od ustawień może pokazywać jedynie złącznone lub dodatkowo niezłączone punkty charakterystyczne. Ponadto pokazuje na liście numer indeksu najlepiej dopasowanego obrazu, nazwy algrytmów użytych przy dokonywaniu porównania oraz czas jaki upłynął od rozpoczęcia operacji porównywania (jest to czas liczony dla wszystkich obrazów z listy i obrazu zadanego). 59

60 Rysunek 31: Wynik najlepszego dopasowania dwóch klatek bez narysowanych złączeń Rysunek 32: Wynik najlepszego dopasowania dwóch klatek z narysowanymi złączeniami Po wciśnięciu przycisku dismiss następuje niejawne zapisanie do pamięci telefonu zdjęcia o nazwie zawierającej wspomniane parametry i nazwy algorytmów. Jest to niemalże unikatowa nazwa, więc dobrze służy jako klucz identyfikujący wykonane testy. Jednak w rozumieniu baz danych nie jest kluczem głównym. 60

61 Po wciśnięciu przycisku menu w urządzeniu widzimy 3 możliwe opcje: Rysunek 28: Opcje do wyboru w menu 1. Możemy nałożyć na obraz z kamery jeden z filtrów. mono - obraz będzie czarno - biały, ale jest to jedynie efekt wizualny, bowiem porównywane obrazy zawsze są czarno-białe, co jest kolejnym krokiem optymalizacyjnym przyspieszającym działanie algorytmów, aqua - obraz cechuje charakterystyczne rozmycie zwane blurem, sepia - obraz staje się sepią, więc wygląda jakby powstał na początku XX wieku, none - obraz jest naturalny, czyli taki jaki powstałby bez filtrów z kamery. 61

62 Rysunek 29: Efekt wyboru opcji negatywu na działanie aplikacji 2. Możemy również wybrać jedną z dostępnych rozdzielczości przetwarzanego obrazu. Należy jednak pamiętać, że zwiększenie rozdzielczości już przetwarzanego obrazu może nie być możliwe. Dzieje się tak dlatego, że obraz musi zmieścić się na wyświetlaczu, co jest możliwe tylko dla niższych rozdzielczości. Rysunek 35: Lista rozwijana z dostępnymi do wyboru rozdzielczościami dla przetwarzanych obrazów z kamery 62

63 3. Można zmniejszać rozdzielczość w celu przyspieszenia obliczeń. Jest to następny typ optymalizacji. Przy jego użyciu ponosimy jednak koszty związane ze stratą jakości obrazu. Przycisk prowadzący do ustawień algorytmów znajduje się na skraju prawej strony. Dzięki niemu mamy dostęp do list wyborów z radio buttonami algorytmów. Wybieramy na każdym z trzech kroków jeden z dostępnych algorytmów. Dla detekcji mamy do wyboru algorytm wyszukiwania punktów charakterystycznych oraz jego odmianę typu classic, pyramid, grid i dynamic. Rysunek 30: Dostępne do wyboru algorytmy detekcji cech obrazu wraz z ich modyfikacjami Dla ekstrakcji punktów mamy do wyboru algorytm z listy oraz próg dystansu określający czy punkty złączone można uznać za dobre". Im niższa wartość, tym lepsze punkty zostaną wybrane do weryfikacji identyczności obrazu. Ponadto można wybrać próg określający minimalną liczbę punktów spełniających zadany dystans (nie większych od niego), która pozwala uznać, że obrazy są identyczne. Im mniej punktów potrzeba, tym bardziej liberalny jest wybrany detektor. 63

64 Rysunek 37: Dostępne do wyboru deskryptory cech wraz z pewnymi parametrami algorytmu szukania najlepszego dopasowania Na koniec możemy wybrać jeden z algorytmów łaczenia w pary punktów na obrazach, jedną z metod używanych przy wyznaczaniu homografii oraz próg odrzucania zbiorów dla algorytmu Ransac. Rysunek 38: Dostępne do wyboru algorytmy łączenia dopasowań pomiędzy klatkami oraz sposób przeprowadzania procesu łączenia klatek 64

65 Warto wspomnieć, że aplikacja, która korzysta z kamery urządzenia działającego na systemie Android ma jedną zasadniczą wadę. Chodzi o bardzo duże zużycie baterii. Dzieje się tak, ponieważ ekran zużywa sporo energii, a algorytmy wykonują skomplikowane obliczenia. Wykres odzwierciedla znaczny spadek poziomu baterii telefonu, co spowodowane jest intensywnym testowaniem aplikacji. Rysunek 39: Wpływ działania aplikacji na poziom zużycia baterii 65

Detekcja punktów zainteresowania

Detekcja punktów zainteresowania Informatyka, S2 sem. Letni, 2013/2014, wykład#8 Detekcja punktów zainteresowania dr inż. Paweł Forczmański Katedra Systemów Multimedialnych, Wydział Informatyki ZUT 1 / 61 Proces przetwarzania obrazów

Bardziej szczegółowo

Rozpoznawanie obiektów z użyciem znaczników

Rozpoznawanie obiektów z użyciem znaczników Rozpoznawanie obiektów z użyciem znaczników Sztuczne znaczniki w lokalizacji obiektów (robotów) Aktywne znaczniki LED do lokalizacji w przestrzeni 2D (do 32): Znaczniki z biblioteki AruCo (do 1024) Id

Bardziej szczegółowo

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych autor: Robert Drab opiekun naukowy: dr inż. Paweł Rotter 1. Wstęp Zagadnienie generowania trójwymiarowego

Bardziej szczegółowo

Przetwarzanie obrazu

Przetwarzanie obrazu Przetwarzanie obrazu Przekształcenia kontekstowe Liniowe Nieliniowe - filtry Przekształcenia kontekstowe dokonują transformacji poziomów jasności pikseli analizując za każdym razem nie tylko jasność danego

Bardziej szczegółowo

Parametryzacja obrazu na potrzeby algorytmów decyzyjnych

Parametryzacja obrazu na potrzeby algorytmów decyzyjnych Parametryzacja obrazu na potrzeby algorytmów decyzyjnych Piotr Dalka Wprowadzenie Z reguły nie stosuje się podawania na wejście algorytmów decyzyjnych bezpośrednio wartości pikseli obrazu Obraz jest przekształcany

Bardziej szczegółowo

Algorytmy decyzyjne będące alternatywą dla sieci neuronowych

Algorytmy decyzyjne będące alternatywą dla sieci neuronowych Algorytmy decyzyjne będące alternatywą dla sieci neuronowych Piotr Dalka Przykładowe algorytmy decyzyjne Sztuczne sieci neuronowe Algorytm k najbliższych sąsiadów Kaskada klasyfikatorów AdaBoost Naiwny

Bardziej szczegółowo

Rozpoznawanie obrazów na przykładzie rozpoznawania twarzy

Rozpoznawanie obrazów na przykładzie rozpoznawania twarzy Rozpoznawanie obrazów na przykładzie rozpoznawania twarzy Wykorzystane materiały: Zadanie W dalszej części prezentacji będzie omawiane zagadnienie rozpoznawania twarzy Problem ten można jednak uogólnić

Bardziej szczegółowo

Optymalizacja ciągła

Optymalizacja ciągła Optymalizacja ciągła 5. Metoda stochastycznego spadku wzdłuż gradientu Wojciech Kotłowski Instytut Informatyki PP http://www.cs.put.poznan.pl/wkotlowski/ 04.04.2019 1 / 20 Wprowadzenie Minimalizacja różniczkowalnej

Bardziej szczegółowo

Analiza obrazów - sprawozdanie nr 2

Analiza obrazów - sprawozdanie nr 2 Analiza obrazów - sprawozdanie nr 2 Filtracja obrazów Filtracja obrazu polega na obliczeniu wartości każdego z punktów obrazu na podstawie punktów z jego otoczenia. Każdy sąsiedni piksel ma wagę, która

Bardziej szczegółowo

Komunikacja Człowiek-Komputer

Komunikacja Człowiek-Komputer Komunikacja Człowiek-Komputer Przetwarzanie i rozpoznawanie obrazów przegląd Wojciech Jaśkowski Instytut Informatyki Politechnika Poznańska Wersja: 21 listopada 2014 Transformata Hough Detekcja odcinków

Bardziej szczegółowo

Przetwarzanie obrazów wykład 4

Przetwarzanie obrazów wykład 4 Przetwarzanie obrazów wykład 4 Adam Wojciechowski Wykład opracowany na podstawie Komputerowa analiza i przetwarzanie obrazów R. Tadeusiewicz, P. Korohoda Filtry nieliniowe Filtry nieliniowe (kombinowane)

Bardziej szczegółowo

i ruchów użytkownika komputera za i pozycjonujący oczy cyberagenta internetowego na oczach i akcjach użytkownika Promotor: dr Adrian Horzyk

i ruchów użytkownika komputera za i pozycjonujący oczy cyberagenta internetowego na oczach i akcjach użytkownika Promotor: dr Adrian Horzyk System śledzenia oczu, twarzy i ruchów użytkownika komputera za pośrednictwem kamery internetowej i pozycjonujący oczy cyberagenta internetowego na oczach i akcjach użytkownika Mirosław ł Słysz Promotor:

Bardziej szczegółowo

Implementacja filtru Canny ego

Implementacja filtru Canny ego ANALIZA I PRZETWARZANIE OBRAZÓW Implementacja filtru Canny ego Autor: Katarzyna Piotrowicz Kraków,2015-06-11 Spis treści 1. Wstęp... 1 2. Implementacja... 2 3. Przykłady... 3 Porównanie wykrytych krawędzi

Bardziej szczegółowo

Deskryptory punktów charakterystycznych

Deskryptory punktów charakterystycznych Przetwarzanie i Rozpoznawanie Obrazów May 18, 2016 1/41 Wstęp 2/41 Idea Często spotykany (typowy) schemat przetwarzanie obrazu/sekwencji wideo: 1 Detekcja punktów charakterystycznych 2 Opis wyznaczonych

Bardziej szczegółowo

Rozpoznawanie obrazów

Rozpoznawanie obrazów Rozpoznawanie obrazów Laboratorium Python Zadanie nr 1 Regresja liniowa autorzy: A. Gonczarek, J.M. Tomczak, S. Zaręba, M. Zięba, J. Kaczmar Cel zadania Celem zadania jest implementacja liniowego zadania

Bardziej szczegółowo

Arkusz maturalny nr 2 poziom podstawowy ZADANIA ZAMKNIĘTE. Rozwiązania. Wartość bezwzględna jest odległością na osi liczbowej.

Arkusz maturalny nr 2 poziom podstawowy ZADANIA ZAMKNIĘTE. Rozwiązania. Wartość bezwzględna jest odległością na osi liczbowej. Arkusz maturalny nr 2 poziom podstawowy ZADANIA ZAMKNIĘTE Rozwiązania Zadanie 1 Wartość bezwzględna jest odległością na osi liczbowej. Stop Istnieje wzajemnie jednoznaczne przyporządkowanie między punktami

Bardziej szczegółowo

Metody systemowe i decyzyjne w informatyce

Metody systemowe i decyzyjne w informatyce Metody systemowe i decyzyjne w informatyce Laboratorium MATLAB Zadanie nr 1 Regresja liniowa autorzy: A. Gonczarek, J.M. Tomczak Cel zadania Celem zadania jest zapoznanie się z liniowym zadaniem najmniejszych

Bardziej szczegółowo

BIBLIOTEKA PROGRAMU R - BIOPS. Narzędzia Informatyczne w Badaniach Naukowych Katarzyna Bernat

BIBLIOTEKA PROGRAMU R - BIOPS. Narzędzia Informatyczne w Badaniach Naukowych Katarzyna Bernat BIBLIOTEKA PROGRAMU R - BIOPS Narzędzia Informatyczne w Badaniach Naukowych Katarzyna Bernat Biblioteka biops zawiera funkcje do analizy i przetwarzania obrazów. Operacje geometryczne (obrót, przesunięcie,

Bardziej szczegółowo

Funkcje wymierne. Funkcja homograficzna. Równania i nierówności wymierne.

Funkcje wymierne. Funkcja homograficzna. Równania i nierówności wymierne. Funkcje wymierne. Funkcja homograficzna. Równania i nierówności wymierne. Funkcja homograficzna. Definicja. Funkcja homograficzna jest to funkcja określona wzorem f() = a + b c + d, () gdzie współczynniki

Bardziej szczegółowo

Aproksymacja funkcji a regresja symboliczna

Aproksymacja funkcji a regresja symboliczna Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(x), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(x), zwaną funkcją aproksymującą

Bardziej szczegółowo

Sztuczna inteligencja i inżynieria wiedzy. laboratorium

Sztuczna inteligencja i inżynieria wiedzy. laboratorium Sztuczna inteligencja i inżynieria wiedzy laboratorium Ćwiczenie 4. Analiza obrazu określanie podobieństwa obrazów opracowanie: M. Paradowski, H. Kwaśnicka Cel ćwiczenia Zapoznanie się z podstawowymi metodami

Bardziej szczegółowo

Systemy uczące się Lab 4

Systemy uczące się Lab 4 Systemy uczące się Lab 4 dr Przemysław Juszczuk Katedra Inżynierii Wiedzy, Uniwersytet Ekonomiczny 26 X 2018 Projekt zaliczeniowy Podstawą zaliczenia ćwiczeń jest indywidualne wykonanie projektu uwzględniającego

Bardziej szczegółowo

Przetwarzanie obrazów rastrowych macierzą konwolucji

Przetwarzanie obrazów rastrowych macierzą konwolucji Przetwarzanie obrazów rastrowych macierzą konwolucji 1 Wstęp Obrazy rastrowe są na ogół reprezentowane w dwuwymiarowych tablicach złożonych z pikseli, reprezentowanych przez liczby określające ich jasność

Bardziej szczegółowo

Analiza składowych głównych. Wprowadzenie

Analiza składowych głównych. Wprowadzenie Wprowadzenie jest techniką redukcji wymiaru. Składowe główne zostały po raz pierwszy zaproponowane przez Pearsona(1901), a następnie rozwinięte przez Hotellinga (1933). jest zaliczana do systemów uczących

Bardziej szczegółowo

Metoda określania pozycji wodnicy statków na podstawie pomiarów odległości statku od głowic laserowych

Metoda określania pozycji wodnicy statków na podstawie pomiarów odległości statku od głowic laserowych inż. Marek Duczkowski Metoda określania pozycji wodnicy statków na podstawie pomiarów odległości statku od głowic laserowych słowa kluczowe: algorytm gradientowy, optymalizacja, określanie wodnicy W artykule

Bardziej szczegółowo

Metody numeryczne I Równania nieliniowe

Metody numeryczne I Równania nieliniowe Metody numeryczne I Równania nieliniowe Janusz Szwabiński szwabin@ift.uni.wroc.pl Metody numeryczne I (C) 2004 Janusz Szwabiński p.1/66 Równania nieliniowe 1. Równania nieliniowe z pojedynczym pierwiastkiem

Bardziej szczegółowo

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015 Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015 1 Metody numeryczne Dział matematyki Metody rozwiązywania problemów matematycznych za pomocą operacji na liczbach. Otrzymywane

Bardziej szczegółowo

Filtracja obrazu operacje kontekstowe

Filtracja obrazu operacje kontekstowe Filtracja obrazu operacje kontekstowe Główne zadania filtracji Usunięcie niepożądanego szumu z obrazu Poprawa ostrości Usunięcie określonych wad obrazu Poprawa obrazu o złej jakości technicznej Rekonstrukcja

Bardziej szczegółowo

Reprezentacja i analiza obszarów

Reprezentacja i analiza obszarów Cechy kształtu Topologiczne Geometryczne spójność liczba otworów liczba Eulera szkielet obwód pole powierzchni środek ciężkości ułożenie przestrzenne momenty wyższych rzędów promienie max-min centryczność

Bardziej szczegółowo

KADD Minimalizacja funkcji

KADD Minimalizacja funkcji Minimalizacja funkcji Poszukiwanie minimum funkcji Foma kwadratowa Metody przybliżania minimum minimalizacja Minimalizacja w n wymiarach Metody poszukiwania minimum Otaczanie minimum Podział obszaru zawierającego

Bardziej szczegółowo

KONSPEKT FUNKCJE cz. 1.

KONSPEKT FUNKCJE cz. 1. KONSPEKT FUNKCJE cz. 1. DEFINICJA FUNKCJI Funkcją nazywamy przyporządkowanie, w którym każdemu elementowi zbioru X odpowiada dokładnie jeden element zbioru Y Zbiór X nazywamy dziedziną, a jego elementy

Bardziej szczegółowo

Reprezentacja i analiza obszarów

Reprezentacja i analiza obszarów Cechy kształtu Topologiczne Geometryczne spójność liczba otworów liczba Eulera szkielet obwód pole powierzchni środek cięŝkości ułoŝenie przestrzenne momenty wyŝszych rzędów promienie max-min centryczność

Bardziej szczegółowo

Cyfrowe przetwarzanie obrazów i sygnałów Wykład 7 AiR III

Cyfrowe przetwarzanie obrazów i sygnałów Wykład 7 AiR III 1 Niniejszy dokument zawiera materiały do wykładu z przedmiotu Cyfrowe Przetwarzanie Obrazów i Sygnałów. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych, prywatnych potrzeb i może

Bardziej szczegółowo

3. FUNKCJA LINIOWA. gdzie ; ół,.

3. FUNKCJA LINIOWA. gdzie ; ół,. 1 WYKŁAD 3 3. FUNKCJA LINIOWA FUNKCJĄ LINIOWĄ nazywamy funkcję typu : dla, gdzie ; ół,. Załóżmy na początek, że wyraz wolny. Wtedy mamy do czynienia z funkcją typu :.. Wykresem tej funkcji jest prosta

Bardziej szczegółowo

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych. Aproksymacja funkcji a regresja symboliczna Problem aproksymacji funkcji polega na tym, że funkcję F(), znaną lub określoną tablicą wartości, należy zastąpić inną funkcją, f(), zwaną funkcją aproksymującą

Bardziej szczegółowo

3. Macierze i Układy Równań Liniowych

3. Macierze i Układy Równań Liniowych 3. Macierze i Układy Równań Liniowych Rozważamy równanie macierzowe z końcówki ostatniego wykładu ( ) 3 1 X = 4 1 ( ) 2 5 Podstawiając X = ( ) x y i wymnażając, otrzymujemy układ 2 równań liniowych 3x

Bardziej szczegółowo

Funkcje dwóch zmiennych

Funkcje dwóch zmiennych Funkcje dwóch zmiennych Andrzej Musielak Str Funkcje dwóch zmiennych Wstęp Funkcja rzeczywista dwóch zmiennych to funkcja, której argumentem jest para liczb rzeczywistych, a wartością liczba rzeczywista.

Bardziej szczegółowo

Ćwiczenia nr 7. TEMATYKA: Krzywe Bézier a

Ćwiczenia nr 7. TEMATYKA: Krzywe Bézier a TEMATYKA: Krzywe Bézier a Ćwiczenia nr 7 DEFINICJE: Interpolacja: przybliżanie funkcji za pomocą innej funkcji, zwykle wielomianu, tak aby były sobie równe w zadanych punktach. Poniżej przykład interpolacji

Bardziej szczegółowo

Programowanie celowe #1

Programowanie celowe #1 Programowanie celowe #1 Problem programowania celowego (PC) jest przykładem problemu programowania matematycznego nieliniowego, który można skutecznie zlinearyzować, tzn. zapisać (i rozwiązać) jako problem

Bardziej szczegółowo

S O M SELF-ORGANIZING MAPS. Przemysław Szczepańczyk Łukasz Myszor

S O M SELF-ORGANIZING MAPS. Przemysław Szczepańczyk Łukasz Myszor S O M SELF-ORGANIZING MAPS Przemysław Szczepańczyk Łukasz Myszor Podstawy teoretyczne Map Samoorganizujących się stworzył prof. Teuvo Kohonen (1982 r.). SOM wywodzi się ze sztucznych sieci neuronowych.

Bardziej szczegółowo

Klasyfikatory: k-nn oraz naiwny Bayesa. Agnieszka Nowak Brzezińska Wykład IV

Klasyfikatory: k-nn oraz naiwny Bayesa. Agnieszka Nowak Brzezińska Wykład IV Klasyfikatory: k-nn oraz naiwny Bayesa Agnieszka Nowak Brzezińska Wykład IV Naiwny klasyfikator Bayesa Naiwny klasyfikator bayesowski jest prostym probabilistycznym klasyfikatorem. Zakłada się wzajemną

Bardziej szczegółowo

Cyfrowe przetwarzanie obrazów i sygnałów Wykład 10 AiR III

Cyfrowe przetwarzanie obrazów i sygnałów Wykład 10 AiR III 1 Niniejszy dokument zawiera materiały do wykładu z przedmiotu Cyfrowe Przetwarzanie Obrazów i Sygnałów. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych, prywatnych potrzeb i może

Bardziej szczegółowo

Agnieszka Nowak Brzezińska Wykład III

Agnieszka Nowak Brzezińska Wykład III Agnieszka Nowak Brzezińska Wykład III Naiwny klasyfikator bayesowski jest prostym probabilistycznym klasyfikatorem. Zakłada się wzajemną niezależność zmiennych niezależnych (tu naiwność) Bardziej opisowe

Bardziej szczegółowo

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Kompresja danych Streszczenie Studia Dzienne Wykład 10, 1 Kwantyzacja wektorowa Kompresja danych Streszczenie Studia Dzienne Wykład 10, 28.04.2006 Kwantyzacja wektorowa: dane dzielone na bloki (wektory), każdy blok kwantyzowany jako jeden element danych. Ogólny

Bardziej szczegółowo

0 + 0 = 0, = 1, = 1, = 0.

0 + 0 = 0, = 1, = 1, = 0. 5 Kody liniowe Jak już wiemy, w celu przesłania zakodowanego tekstu dzielimy go na bloki i do każdego z bloków dodajemy tak zwane bity sprawdzające. Bity te są w ścisłej zależności z bitami informacyjnymi,

Bardziej szczegółowo

Spośród licznych filtrów nieliniowych najlepszymi właściwościami odznacza się filtr medianowy prosty i skuteczny.

Spośród licznych filtrów nieliniowych najlepszymi właściwościami odznacza się filtr medianowy prosty i skuteczny. Filtracja nieliniowa może być bardzo skuteczną metodą polepszania jakości obrazów Filtry nieliniowe Filtr medianowy Spośród licznych filtrów nieliniowych najlepszymi właściwościami odznacza się filtr medianowy

Bardziej szczegółowo

WYMAGANIE EDUKACYJNE Z MATEMATYKI W KLASIE II GIMNAZJUM. dopuszczającą dostateczną dobrą bardzo dobrą celującą

WYMAGANIE EDUKACYJNE Z MATEMATYKI W KLASIE II GIMNAZJUM. dopuszczającą dostateczną dobrą bardzo dobrą celującą 1. Statystyka odczytać informacje z tabeli odczytać informacje z diagramu 2. Mnożenie i dzielenie potęg o tych samych podstawach 3. Mnożenie i dzielenie potęg o tych samych wykładnikach 4. Potęga o wykładniku

Bardziej szczegółowo

Cyfrowe przetwarzanie obrazów i sygnałów Wykład 8 AiR III

Cyfrowe przetwarzanie obrazów i sygnałów Wykład 8 AiR III 1 Niniejszy dokument zawiera materiały do wykładu z przedmiotu Cyfrowe Przetwarzanie Obrazów i Sygnałów. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych, prywatnych potrzeb i może

Bardziej szczegółowo

Rachunek wektorowy - wprowadzenie. dr inż. Romuald Kędzierski

Rachunek wektorowy - wprowadzenie. dr inż. Romuald Kędzierski Rachunek wektorowy - wprowadzenie dr inż. Romuald Kędzierski Graficzne przedstawianie wielkości wektorowych Długość wektora jest miarą jego wartości Linia prosta wyznaczająca kierunek działania wektora

Bardziej szczegółowo

2. Zarys metody SIFT (Scale Invariant Feature Transform)

2. Zarys metody SIFT (Scale Invariant Feature Transform) PIOTR PAWLIK *, SŁAWOMIR MIKRUT ** WYSZUKIWANIE PUNKTÓW CHARAKTERYSTYCZNYCH NA POTRZEBY ŁĄCZENIA ZDJĘĆ LOTNICZYCH *** 1.Wstęp Artykuł dotyczy problemu dopasowania fotogrametrycznych zdjęć lotniczych. Istotą

Bardziej szczegółowo

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH Transport, studia I stopnia rok akademicki 2011/2012 Instytut L-5, Wydział Inżynierii Lądowej, Politechnika Krakowska Ewa Pabisek Adam Wosatko Uwagi wstępne Układ liniowych równań algebraicznych można

Bardziej szczegółowo

Przetwarzanie obrazów wykład 7. Adam Wojciechowski

Przetwarzanie obrazów wykład 7. Adam Wojciechowski Przetwarzanie obrazów wykład 7 Adam Wojciechowski Przekształcenia morfologiczne Przekształcenia podobne do filtrów, z tym że element obrazu nie jest modyfikowany zawsze lecz tylko jeśli spełniony jest

Bardziej szczegółowo

II. FUNKCJE WIELU ZMIENNYCH

II. FUNKCJE WIELU ZMIENNYCH II. FUNKCJE WIELU ZMIENNYCH 1. Zbiory w przestrzeni R n Ustalmy dowolne n N. Definicja 1.1. Zbiór wszystkich uporzadkowanych układów (x 1,..., x n ) n liczb rzeczywistych, nazywamy przestrzenią n-wymiarową

Bardziej szczegółowo

Proste metody przetwarzania obrazu

Proste metody przetwarzania obrazu Operacje na pikselach obrazu (operacje punktowe, bezkontekstowe) Operacje arytmetyczne Dodanie (odjęcie) do obrazu stałej 1 Mnożenie (dzielenie) obrazu przez stałą Operacje dodawania i mnożenia są operacjami

Bardziej szczegółowo

Agnieszka Nowak Brzezińska Wykład III

Agnieszka Nowak Brzezińska Wykład III Agnieszka Nowak Brzezińska Wykład III Naiwny klasyfikator bayesowski jest prostym probabilistycznym klasyfikatorem. Zakłada się wzajemną niezależność zmiennych niezależnych (tu naiwność) Bardziej opisowe

Bardziej szczegółowo

WSTĘP DO PRZETWARZANIA OBRAZÓW. Jak znaleźć ciekawe rzeczy na zdjęciu? mgr Krzysztof Szarzyński

WSTĘP DO PRZETWARZANIA OBRAZÓW. Jak znaleźć ciekawe rzeczy na zdjęciu? mgr Krzysztof Szarzyński WSTĘP DO PRZETWARZANIA OBRAZÓW Jak znaleźć ciekawe rzeczy na zdjęciu? mgr Krzysztof Szarzyński Czym jest obraz? Na nasze potrzeby będziemy zajmować się jedynie obrazami w skali szarości. Większość z omawianych

Bardziej szczegółowo

0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do

0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do 0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do obserwatora f) w kierunku od obserwatora 1. Obrót dookoła osi

Bardziej szczegółowo

Modelowanie jako sposób opisu rzeczywistości. Katedra Mikroelektroniki i Technik Informatycznych Politechnika Łódzka

Modelowanie jako sposób opisu rzeczywistości. Katedra Mikroelektroniki i Technik Informatycznych Politechnika Łódzka Modelowanie jako sposób opisu rzeczywistości Katedra Mikroelektroniki i Technik Informatycznych Politechnika Łódzka 2015 Wprowadzenie: Modelowanie i symulacja PROBLEM: Podstawowy problem z opisem otaczającej

Bardziej szczegółowo

Wykrywanie twarzy na zdjęciach przy pomocy kaskad

Wykrywanie twarzy na zdjęciach przy pomocy kaskad Wykrywanie twarzy na zdjęciach przy pomocy kaskad Analiza i przetwarzanie obrazów Sebastian Lipnicki Informatyka Stosowana,WFIIS Spis treści 1. Wstęp... 3 2. Struktura i funkcjonalnośd... 4 3. Wyniki...

Bardziej szczegółowo

Techniki Optymalizacji: Stochastyczny spadek wzdłuż gradientu I

Techniki Optymalizacji: Stochastyczny spadek wzdłuż gradientu I Techniki Optymalizacji: Stochastyczny spadek wzdłuż gradientu I Wojciech Kotłowski Instytut Informatyki Politechniki Poznańskiej email: imię.nazwisko@cs.put.poznan.pl pok. 2 (CW) tel. (61)665-2936 konsultacje:

Bardziej szczegółowo

Agnieszka Nowak Brzezińska

Agnieszka Nowak Brzezińska Agnieszka Nowak Brzezińska jeden z algorytmów regresji nieparametrycznej używanych w statystyce do prognozowania wartości pewnej zmiennej losowej. Może również byd używany do klasyfikacji. - Założenia

Bardziej szczegółowo

KADD Metoda najmniejszych kwadratów funkcje nieliniowe

KADD Metoda najmniejszych kwadratów funkcje nieliniowe Metoda najmn. kwadr. - funkcje nieliniowe Metoda najmniejszych kwadratów Funkcje nieliniowe Procedura z redukcją kroku iteracji Przykłady zastosowań Dopasowanie funkcji wykładniczej Dopasowanie funkcji

Bardziej szczegółowo

Filtracja obrazu operacje kontekstowe

Filtracja obrazu operacje kontekstowe Filtracja obrazu operacje kontekstowe Podział metod filtracji obrazu Metody przestrzenne i częstotliwościowe Metody liniowe i nieliniowe Główne zadania filtracji Usunięcie niepożądanego szumu z obrazu

Bardziej szczegółowo

Filtrowanie tekstur. Kinga Laurowska

Filtrowanie tekstur. Kinga Laurowska Filtrowanie tekstur Kinga Laurowska Wprowadzenie Filtrowanie tekstur (inaczej wygładzanie) technika polegająca na 'rozmywaniu' sąsiadujących ze sobą tekseli (pikseli tekstury). Istnieje wiele metod filtrowania,

Bardziej szczegółowo

Spis treści. Przedmowa... XI. Rozdział 1. Pomiar: jednostki miar... 1. Rozdział 2. Pomiar: liczby i obliczenia liczbowe... 16

Spis treści. Przedmowa... XI. Rozdział 1. Pomiar: jednostki miar... 1. Rozdział 2. Pomiar: liczby i obliczenia liczbowe... 16 Spis treści Przedmowa.......................... XI Rozdział 1. Pomiar: jednostki miar................. 1 1.1. Wielkości fizyczne i pozafizyczne.................. 1 1.2. Spójne układy miar. Układ SI i jego

Bardziej szczegółowo

KADD Minimalizacja funkcji

KADD Minimalizacja funkcji Minimalizacja funkcji n-wymiarowych Forma kwadratowa w n wymiarach Procedury minimalizacji Minimalizacja wzdłuż prostej w n-wymiarowej przestrzeni Metody minimalizacji wzdłuż osi współrzędnych wzdłuż kierunków

Bardziej szczegółowo

Weryfikacja hipotez statystycznych

Weryfikacja hipotez statystycznych Weryfikacja hipotez statystycznych Hipoteza Test statystyczny Poziom istotności Testy jednostronne i dwustronne Testowanie równości wariancji test F-Fishera Testowanie równości wartości średnich test t-studenta

Bardziej szczegółowo

Szukanie rozwiązań funkcji uwikłanych (równań nieliniowych)

Szukanie rozwiązań funkcji uwikłanych (równań nieliniowych) Szukanie rozwiązań funkcji uwikłanych (równań nieliniowych) Funkcja uwikłana (równanie nieliniowe) jest to funkcja, która nie jest przedstawiona jawnym przepisem, wzorem wyrażającym zależność wartości

Bardziej szczegółowo

SYSTEMY UCZĄCE SIĘ WYKŁAD 10. PRZEKSZTAŁCANIE ATRYBUTÓW. Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska.

SYSTEMY UCZĄCE SIĘ WYKŁAD 10. PRZEKSZTAŁCANIE ATRYBUTÓW. Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska. SYSTEMY UCZĄCE SIĘ WYKŁAD 10. PRZEKSZTAŁCANIE ATRYBUTÓW Częstochowa 2014 Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska INFORMACJE WSTĘPNE Hipotezy do uczenia się lub tworzenia

Bardziej szczegółowo

5. Rozwiązywanie układów równań liniowych

5. Rozwiązywanie układów równań liniowych 5. Rozwiązywanie układów równań liniowych Wprowadzenie (5.1) Układ n równań z n niewiadomymi: a 11 +a 12 x 2 +...+a 1n x n =a 10, a 21 +a 22 x 2 +...+a 2n x n =a 20,..., a n1 +a n2 x 2 +...+a nn x n =a

Bardziej szczegółowo

FUNKCJA LINIOWA - WYKRES

FUNKCJA LINIOWA - WYKRES FUNKCJA LINIOWA - WYKRES Wzór funkcji liniowej (Postać kierunkowa) Funkcja liniowa jest podstawowym typem funkcji. Jest to funkcja o wzorze: y = ax + b a i b to współczynniki funkcji, które mają wartości

Bardziej szczegółowo

Funkcje wymierne. Jerzy Rutkowski. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k.

Funkcje wymierne. Jerzy Rutkowski. Działania dodawania i mnożenia funkcji wymiernych określa się wzorami: g h + k l g h k. Funkcje wymierne Jerzy Rutkowski Teoria Przypomnijmy, że przez R[x] oznaczamy zbiór wszystkich wielomianów zmiennej x i o współczynnikach rzeczywistych Definicja Funkcją wymierną jednej zmiennej nazywamy

Bardziej szczegółowo

Testowanie hipotez statystycznych. Wnioskowanie statystyczne

Testowanie hipotez statystycznych. Wnioskowanie statystyczne Testowanie hipotez statystycznych Wnioskowanie statystyczne Hipoteza statystyczna to dowolne przypuszczenie co do rozkładu populacji generalnej (jego postaci funkcyjnej lub wartości parametrów). Hipotezy

Bardziej szczegółowo

Metoda Karnaugh. B A BC A

Metoda Karnaugh. B A BC A Metoda Karnaugh. Powszechnie uważa się, iż układ o mniejszej liczbie elementów jest tańszy i bardziej niezawodny, a spośród dwóch układów o takiej samej liczbie elementów logicznych lepszy jest ten, który

Bardziej szczegółowo

Samochodowy system detekcji i rozpoznawania znaków drogowych. Sensory w budowie maszyn i pojazdów Maciej Śmigielski

Samochodowy system detekcji i rozpoznawania znaków drogowych. Sensory w budowie maszyn i pojazdów Maciej Śmigielski Samochodowy system detekcji i rozpoznawania znaków drogowych Sensory w budowie maszyn i pojazdów Maciej Śmigielski Rozpoznawanie obrazów Rozpoznawaniem obrazów możemy nazwać proces przetwarzania i analizowania

Bardziej szczegółowo

Klasyfikator liniowy Wstęp Klasyfikator liniowy jest najprostszym możliwym klasyfikatorem. Zakłada on liniową separację liniowy podział dwóch klas między sobą. Przedstawia to poniższy rysunek: 5 4 3 2

Bardziej szczegółowo

ROZKŁAD MATERIAŁU DO II KLASY LICEUM (ZAKRES ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ.

ROZKŁAD MATERIAŁU DO II KLASY LICEUM (ZAKRES ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ. ROZKŁAD MATERIAŁU DO II KLASY LICEUM (ZAKRES ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ. LICZBA TEMAT GODZIN LEKCYJNYCH Potęgi, pierwiastki i logarytmy (8 h) Potęgi 3 Pierwiastki 3 Potęgi o wykładnikach

Bardziej szczegółowo

Poniżej przedstawiony został podział wymagań na poszczególne oceny szkolne:

Poniżej przedstawiony został podział wymagań na poszczególne oceny szkolne: Prosto do matury klasa d Rok szkolny 014/015 WYMAGANIA EDUKACYJNE Wyróżnione zostały następujące wymagania programowe: konieczne (K), podstawowe (P), rozszerzające (R), dopełniające (D) i wykraczające

Bardziej szczegółowo

Z52: Algebra liniowa Zagadnienie: Zastosowania algebry liniowej Zadanie: Operatory różniczkowania, zagadnienie brzegowe.

Z52: Algebra liniowa Zagadnienie: Zastosowania algebry liniowej Zadanie: Operatory różniczkowania, zagadnienie brzegowe. Z5: Algebra liniowa Zagadnienie: Zastosowania algebry liniowej Zadanie: Operatory różniczkowania zagadnienie brzegowe Dyskretne operatory różniczkowania Numeryczne obliczanie pochodnych oraz rozwiązywanie

Bardziej szczegółowo

Aerotriangulacja. 1. Aerotriangulacja z niezależnych wiązek. 2. Aerotriangulacja z niezależnych modeli

Aerotriangulacja. 1. Aerotriangulacja z niezależnych wiązek. 2. Aerotriangulacja z niezależnych modeli Aerotriangulacja 1. Aerotriangulacja z niezależnych wiązek 2. Aerotriangulacja z niezależnych modeli Definicja: Cel: Kameralne zagęszczenie osnowy fotogrametrycznej + wyznaczenie elementów orientacji zewnętrznej

Bardziej szczegółowo

Funkcje liniowe i wieloliniowe w praktyce szkolnej. Opracowanie : mgr inż. Renata Rzepińska

Funkcje liniowe i wieloliniowe w praktyce szkolnej. Opracowanie : mgr inż. Renata Rzepińska Funkcje liniowe i wieloliniowe w praktyce szkolnej Opracowanie : mgr inż. Renata Rzepińska . Wprowadzenie pojęcia funkcji liniowej w nauczaniu matematyki w gimnazjum. W programie nauczania matematyki w

Bardziej szczegółowo

Metody numeryczne Wykład 4

Metody numeryczne Wykład 4 Metody numeryczne Wykład 4 Dr inż. Michał Łanczont Instytut Elektrotechniki i Elektrotechnologii E419, tel. 4293, m.lanczont@pollub.pl, http://m.lanczont.pollub.pl Zakres wykładu Metody skończone rozwiązywania

Bardziej szczegółowo

Złożoność obliczeniowa zadania, zestaw 2

Złożoność obliczeniowa zadania, zestaw 2 Złożoność obliczeniowa zadania, zestaw 2 Określanie złożoności obliczeniowej algorytmów, obliczanie pesymistycznej i oczekiwanej złożoności obliczeniowej 1. Dana jest tablica jednowymiarowa A o rozmiarze

Bardziej szczegółowo

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Metody optymalizacji Metody bezgradientowe optymalizacji bez ograniczeń Materiały pomocnicze do ćwiczeń

Bardziej szczegółowo

EGZAMIN MATURALNY Z MATEMATYKI

EGZAMIN MATURALNY Z MATEMATYKI ARKUSZ ZAWIERA INFORMACJE PRAWNIE CHRONIONE DO MOMENTU ROZPOCZĘCIA EGZAMINU! Miejsce na naklejkę MMA-R_P-08 EGZAMIN MATURALNY Z MATEMATYKI POZIOM ROZSZERZONY MAJ ROK 008 Czas pracy 80 minut Instrukcja

Bardziej szczegółowo

Optymalizacja systemów

Optymalizacja systemów Optymalizacja systemów Laboratorium - problem detekcji twarzy autorzy: A. Gonczarek, J.M. Tomczak, S. Zaręba, P. Klukowski Cel zadania Celem zadania jest zapoznanie się z gradientowymi algorytmami optymalizacji

Bardziej szczegółowo

IX. Rachunek różniczkowy funkcji wielu zmiennych. 1. Funkcja dwóch i trzech zmiennych - pojęcia podstawowe. - funkcja dwóch zmiennych,

IX. Rachunek różniczkowy funkcji wielu zmiennych. 1. Funkcja dwóch i trzech zmiennych - pojęcia podstawowe. - funkcja dwóch zmiennych, IX. Rachunek różniczkowy funkcji wielu zmiennych. 1. Funkcja dwóch i trzech zmiennych - pojęcia podstawowe. Definicja 1.1. Niech D będzie podzbiorem przestrzeni R n, n 2. Odwzorowanie f : D R nazywamy

Bardziej szczegółowo

Wykład 16. P 2 (x 2, y 2 ) P 1 (x 1, y 1 ) OX. Odległość tych punktów wyraża się wzorem: P 1 P 2 = (x 1 x 2 ) 2 + (y 1 y 2 ) 2

Wykład 16. P 2 (x 2, y 2 ) P 1 (x 1, y 1 ) OX. Odległość tych punktów wyraża się wzorem: P 1 P 2 = (x 1 x 2 ) 2 + (y 1 y 2 ) 2 Wykład 16 Geometria analityczna Przegląd wiadomości z geometrii analitycznej na płaszczyźnie rtokartezjański układ współrzędnych powstaje przez ustalenie punktu początkowego zwanego początkiem układu współrzędnych

Bardziej szczegółowo

Algorytmy sztucznej inteligencji

Algorytmy sztucznej inteligencji www.math.uni.lodz.pl/ radmat Przeszukiwanie z ograniczeniami Zagadnienie przeszukiwania z ograniczeniami stanowi grupę problemów przeszukiwania w przestrzeni stanów, które składa się ze: 1 skończonego

Bardziej szczegółowo

Opis efektów kształcenia dla programu kształcenia (kierunkowe efekty kształcenia) WIEDZA. rozumie cywilizacyjne znaczenie matematyki i jej zastosowań

Opis efektów kształcenia dla programu kształcenia (kierunkowe efekty kształcenia) WIEDZA. rozumie cywilizacyjne znaczenie matematyki i jej zastosowań TABELA ODNIESIEŃ EFEKTÓW KSZTAŁCENIA OKREŚLONYCH DLA PROGRAMU KSZTAŁCENIA DO EFEKTÓW KSZTAŁCENIA OKREŚLONYCH DLA OBSZARU KSZTAŁCENIA I PROFILU STUDIÓW PROGRAM KSZTAŁCENIA: POZIOM KSZTAŁCENIA: PROFIL KSZTAŁCENIA:

Bardziej szczegółowo

MATEMATYKA WYKAZ UMIEJĘTNOŚCI WYMAGANYCH NA POSZCZEGÓLNE OCENY DLA KLASY DRUGIEJ

MATEMATYKA WYKAZ UMIEJĘTNOŚCI WYMAGANYCH NA POSZCZEGÓLNE OCENY DLA KLASY DRUGIEJ MATEMATYKA WYKAZ UMIEJĘTNOŚCI WYMAGANYCH NA POSZCZEGÓLNE OCENY 1. SUMY ALGEBRAICZNE DLA KLASY DRUGIEJ 1. Rozpoznawanie jednomianów i sum algebraicznych Obliczanie wartości liczbowych wyrażeń algebraicznych

Bardziej szczegółowo

Metody systemowe i decyzyjne w informatyce

Metody systemowe i decyzyjne w informatyce Metody systemowe i decyzyjne w informatyce Laboratorium JAVA Zadanie nr 2 Rozpoznawanie liter autorzy: A. Gonczarek, J.M. Tomczak Cel zadania Celem zadania jest zapoznanie się z problemem klasyfikacji

Bardziej szczegółowo

Inteligentna analiza danych

Inteligentna analiza danych Numer indeksu 150946 Michał Moroz Imię i nazwisko Numer indeksu 150875 Grzegorz Graczyk Imię i nazwisko kierunek: Informatyka rok akademicki: 2010/2011 Inteligentna analiza danych Ćwiczenie I Wskaźniki

Bardziej szczegółowo

Metody kodowania wybranych cech biometrycznych na przykładzie wzoru naczyń krwionośnych dłoni i przedramienia. Mgr inż.

Metody kodowania wybranych cech biometrycznych na przykładzie wzoru naczyń krwionośnych dłoni i przedramienia. Mgr inż. Metody kodowania wybranych cech biometrycznych na przykładzie wzoru naczyń krwionośnych dłoni i przedramienia Mgr inż. Dorota Smorawa Plan prezentacji 1. Wprowadzenie do zagadnienia 2. Opis urządzeń badawczych

Bardziej szczegółowo

1 Funkcje dwóch zmiennych podstawowe pojęcia

1 Funkcje dwóch zmiennych podstawowe pojęcia 1 Funkcje dwóch zmiennych podstawowe pojęcia Definicja 1 Funkcją dwóch zmiennych określoną na zbiorze A R 2 o wartościach w zbiorze R nazywamy przyporządkowanie każdemu punktowi ze zbioru A dokładnie jednej

Bardziej szczegółowo

Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania.

Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania. Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania. Chcąc osiągnąć realizm renderowanego obrazu, należy rozwiązać problem świetlenia. Barwy, faktury i inne właściwości przedmiotów postrzegamy

Bardziej szczegółowo

Diagnostyka obrazowa

Diagnostyka obrazowa Diagnostyka obrazowa Ćwiczenie drugie Podstawowe przekształcenia obrazu 1 Cel ćwiczenia Ćwiczenie ma na celu zapoznanie uczestników kursu Diagnostyka obrazowa z podstawowymi przekształceniami obrazu wykonywanymi

Bardziej szczegółowo

WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE II W PUBLICZNYM GIMNAZJUM NR 2 W ZESPOLE SZKÓŁ W RUDKACH

WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE II W PUBLICZNYM GIMNAZJUM NR 2 W ZESPOLE SZKÓŁ W RUDKACH WYMAGANIA EDUKACYJNE Z MATEMATYKI W KLASIE II W PUBLICZNYM GIMNAZJUM NR 2 W ZESPOLE SZKÓŁ W RUDKACH Marzena Zbrożyna DOPUSZCZAJĄCY: Uczeń potrafi: odczytać informacje z tabeli odczytać informacje z diagramu

Bardziej szczegółowo

Zmienne zależne i niezależne

Zmienne zależne i niezależne Analiza kanoniczna Motywacja (1) 2 Często w badaniach spotykamy problemy badawcze, w których szukamy zakresu i kierunku zależności pomiędzy zbiorami zmiennych: { X i Jak oceniać takie 1, X 2,..., X p }

Bardziej szczegółowo

INTERPOLACJA I APROKSYMACJA FUNKCJI

INTERPOLACJA I APROKSYMACJA FUNKCJI Transport, studia niestacjonarne I stopnia, semestr I Instytut L-5, Wydział Inżynierii Lądowej, Politechnika Krakowska Ewa Pabisek Adam Wosatko Wprowadzenie Na czym polega interpolacja? Interpolacja polega

Bardziej szczegółowo