Camera fighter Michał Grędziak Prowadzący: prof nzw dr hab. Przemysław Rokita Michał Grędziak
Projekt Cel projektu Stworzenie interaktywnej gry wykorzystującej technikę Motion Capture
Stworzenie wirtualnej rzeczywistości 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 Motion Capture? 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
Funkcjonalny podział projektu
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 „flood fill” 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 : Biblioteki do przechwytywania obrazów: 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