Projekt
Rozpoznawanie Obiektów w czasie rzeczywistym



Pierwsze próby implementacji

Ile było wystąpień obiektu podczas pojedynczej gry?
Jaką szybkość jesteśmy w stanie uzyskać dla jakiej rozdzielczości?
Klasyfikator Haar’a?
Algorytm surf

SURF
(Speeded-Up Robust Features)
SURF jest algorytmem za pomocą, którego możemy wydobywać z obrazu obiekty. Częściowo wzorowanym jest na algoritmie SIFT lecz jest kilka razy od niego szybszy.

Teoria
Do przyspieszenia obliczeń algorytm wykorzystuje pośrednią reprezentacje obrazu, czyli tzw. zintegrowany obraz. Jest on obliczany na podstawie obrazu wejściowego poprzez zsumowanie wartości pikseli. Dzięki zastosowaniu tej metody rozmiar obrazu nie ma wpływu na czas działania algorytmu. Pozwala to na przetwarzanie obrazów o dużej rozdzielczości.

Teoria
Algorytm ten jest również niewrażliwy na skalowanie i obrót rozpoznawanego obiektu. Jest to szczególnie ważne gdy interesujące nas obiekty lub nasza kamera znajdują się w innych orientacjach niż standardowo. Często zdarza się to w urządzeniach mobilnych lub robotach. Zastosowanie tej metody daje mu przewagę nad algorytmem HAAR.

Teoria
Realizacja algorytmu SURF w OpenCV w pierwszej kolejności zamienia obraz na obraz w skali szarości. Później odpowiednie funkcję wyodrębniają tzw punkty charakterystyczne (keypoints), a następnie dla każdego z nich obliczane są 64 elementowe wektory zwane deskryptorami (descriptors). Dla każdego z nich wyznaczany jest okrąg o środku w danym punkcie i promieniu o wielkości zależnej od siły deskryptora.

Teoria
gdzie L jest pochodną drugiego rzędu z obrazu w skali szarości. W implementacjach przekształcenia te są zastępowane przez prostszymi filtrami. Następnie jest interpolowane w skali obrazu i jego przestrzeni, aby posiadało właściwość niezależności od skali.
ALGORYTM

Działanie algorytmu oparte jest o macierz zwaną Hessjanem, która zdefiniowana została następująco:
ALGORYTM
Najpierw punktowi kluczowemu przypisuje się orientację. Następnie dookoła punktu budowany jest kwadratowy obszar. Potem obszar ten jest ustawiany zgodnie z wyznaczoną orientacją dla punktu.

ALGORYTM
Obszar jest podzielony na mniejsze obszary o wymiarach 4x4. Dzięki temu zachowujemy istotne przestrzenne informacje. Dla każdego z podobszarów liczymy cechy dla przykładowych punktów rozłożonych regularnie w wierzchołkach siatki 5x5. Przy pomocy Falki Haara obliczamy wartości dx oraz dy. Następnie sumujemy je po każdym z podregionów i budujemy pierwszy zbiór cech (wektor). Obliczone wartości wraz wartościami bezwzględnymi tworzą czterowymiarowy deskryptor. Obliczenia wykonujemy dla każdego z podregionów o rozmiarze 4x4, mamy dzięki temu wektor cech o długości 64.

ALGORYTM
Algorytm ten powstał w celu przyspieszenia algorytmu SIFT. Jest mniej odporny i mniej dokładny, jednak znacznie szybszy. Szacuje się, że przy utracie 10% dokładności, pracuje 3 razy szybciej. W celu znalezienia skali przestrzennej nie korzysta z aproksymacji Lapasjanu, filtrów Gaussowskich ani różnicy Gaussowskiej.
Lyy oraz Lxy obliczane są w następujący sposób:

Zastosowania
Kontrolowanie kursora myszki za pomocą gestów
Rozpoznawanie ręki (SURF)
Segmentacja obrazu
Oczyszczanie
Wykrywanie gestów





Źródło
Zastosowania
Robot poruszający się za idącą osobą
Rozpoznawanie sylwetki konkretnej osoby algorytmem SURF







Źródło
Zastosowania
Rozpoznawanie symboli




Źródło
Zastosowania
Śledzenie Pojazdu na drodze




Algorytm SURF
By Piotr Grobelny
Algorytm SURF
- 1,841