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