180 likes | 367 Views
Camera fighter. Prowadzący: prof nzw dr hab. Przemysław Rokita. Michał Grędziak. Projekt. Cel projektu Stworzenie interaktywnej gry wykorzystującej technikę Motion Capture. Podział projektu. Camera fighter.
E N D
Camera fighter Prowadzący: prof nzw dr hab. Przemysław Rokita Michał Grędziak
Projekt • Cel projektu • Stworzenie interaktywnej gry wykorzystującej technikę Motion Capture
Podział projektu Camera fighter Odwzorowanie fizycznego ruchu gracza w sposób umożliwiający odtworzenie tego ruchu w 3D Stworzenie wirtualnej rzeczywistości
Czym jest MotionCapture? • Motion Capture jest techniką dzięki której można naśladować ruch żywych postaci w wirtualnej rzeczywistości Rodzaje Motion Capture • Mechaniczne • Elektromagnetyczne • optyczne
Akwizycja • Jest zamiana energii świetlnej na sygnał elektryczny dogodny do rejestracji • Dla obrazu akwizycja polega na dyskretyzacji przestrzeni , zapisie informacji o poziomie jasności w formie elektrycznej a następnie jej skwantyzowanie • Najpopularniejszym urządzeniem dokonującym akwizycji jest układ CCD
Przetwarzanie wstępne(1) • Redukcja szumów Obraz powstały z przesłonięcia obiektywu Obraz wejściowy Obraz wynikowy • Redukcja zniekształceń geometrycznych
Przetwarzanie wstępne(2) • Problem: Zmieniająca się jasność otoczenia oraz kąt padania światła ma wpływ na wartość składowych RGB • Rozwiązanie: uniezależnienie się od jasności przez przejście z RGB do systemu np. HSV(Hue Saturation Value) • HSV nawiązuje do sposobu w jaki widzi ludzkie oko • Wszystkie barwy wywodzą się od koloru białego
Ekstrakcja tła (1) • Rozwiązanie: • Znalezienie wartości średniej m(x,y) każdego piksela w obrazie • Wyznaczenie różnicy „m(x,y) – p(x,y)” pomiędzy pikselem z aktualnej ramki p(x,y) a zapisanym uśrednionym pikselem • Progowanie: podjęcie decyzji czy piksel należy do tła czy nie - Odchylenie standardowe c - stała N – liczba klatek „uczących”
Ekstrakcja tła (1) Problem: zmieniające się tło ( zmiana natężenia światła otoczenia) Rozwiązanie: Aktualizacja wartości pikseli tła ( adaptacja )
Detekcja markerów(1) Założenie: Markery mają znaną barwę np. niebieską Detekcja przez progowanie w dziedzinie składowej H (Hue) P(x,y) = marker else P(x,y) = nie_marker
Detekcja markerów(2) • Po znalezieniu piksela należącego do markera należy znaleźć wszystkie pozostałe by wyznaczyć jego środek • Algorytm „floodfill” • Punktem centralnym markera jest „środek ciężkości” przestrzeni ograniczonej zakresem barw konkretnego markera czyli jego krawędziami • Wykorzystanie momentów do wyznaczenia środka ciężkości markera Współrzędne markera = 1 jeżeli piksel należy do markera, w przeciwnym wypadku wynosi 0
Śledzenie markerów • Mając znaleziony na obrazie zbiór markerów należy śledzić każdy z osobna. • Zgubienie markerów kosztuje utratę mapy przynależności markerów do części ciała • Najlepszym rozwiązaniem jest wykorzystanie filtru Kalmana • Każdy marker jest traktowany jako obiekt posiadający jeden z wielu stanów • Na zbiór stanów składa się prędkość, przyśpieszenie oraz pozycja środka ciężkości • Mając stany markera z aktualnej ramki i ramki poprzedniej można estymować przyszły stan markera
Implementacja • Cele : • Użycie 3 kamer przez 1 maszynę ( wydajność ) • Przenośność aplikacji • Biblioteki do przechwytywania obrazów: • Microsoft DirectShow • Java Media Framwework • OpenCV
DirectShow • Stworzona przez Microsoft biblioteka przeznaczona dla developerów pracujących nad aplikacjami multimedialnymi. • Jest następczynią Video for Windows (WfV). • Wcześniej DS był częścią DirectX SDK. Teraz jest częścią Windows SDK. • Plany zastąpienia DS przez Media Foundation. • Budowanie aplikacji DirecShow opiera sie na budowaniu ciągów ( filtrów )które łączy się ze sobą by wykonać zadania związane z odtwarzaniem, kompresją, zapisem,..itd. • Problem: • Działa tylko pod Windows • jest uważana za najbardziej skomplikowaną biblioteką Microsoft'u
OpenCV (1) • opracowana przez Intel'a • zaprojektowana w sposób by zmaksymalizować efektywność algorytmów przez wykorzystanie architektury procesorów Intel. • wspomaganie systemów wizyjnych w takich dziedzinach jak robotyka, automatyka, systemy zabezpieczeń • Wykorzystuje inne biblioteki dostępu do urządzeń zewnętrznych ( USB, FireWire) ukrywając implementacje np. DirectShow • Problem: brak wsparcia ze strony twórcy – Intela,
OpenCV (2) • Biblioteka jest podzielona na 3 części • CV - Zawiera narzędzia przydatne przy przetwarzaniu obrazów: filtry, funkcje wyznaczające histogramy, wykrywanie krawędzi, porównywanie wzorców, śledzenie obiektów • CXCore - Zawiera definicje struktur oraz funkcje matematyczne przydatne w przetwarzaniu obrazów (statystyczne, algebraiczne, arytmetyczne, specyficzne struktury danych jak drzewa, grafy, zbiory) • HighGUI - Zawiera funkcje wysokiego poziomu przydatne przy odczytywaniu, zapisywaniu do pliku, wizualizacji danych, wyświetlania obrazów pochodzących z kamery
Dziękuję za uwagę Mail: mgredziak@gmail.com