Transcript Kinect
KINECT Krystian Chrystowicz Tomasz Rokicki AGENDA Kinect Sensor pozwalający na interaktywną rozrywkę bez potrzeby wykorzystania dodatkowych kontrolerów. Zaprojektowany pierwotnie dla konsoli Xbox 360, dostępny jest jednak również osobna wersja dla komputerów PC. Budowa Emiter podczerwieni Kamera RGB Kamera głębokości Automatyczny kontroler nachylenia Zestaw mikrofonów Kamera RGB Określanie odległości Odległość określana jest za pomocą emitera promieni podczerwonych, których prędkość odbicia od obiektu pozwala na określenie odległości danego punktu. Odległość – Kinect Beta Stopy Metry 1.3’ 2.6’ .4 .8 9.8’ 13.1’ 26.2’ 3 4 8 Tryb domyślny Tryb bliski Nieznana Dobra Odległość – Kinect 1+ Stopy Metry 1.3’ 2.6’ .4 9.8’ 13.1’ 26.2’ .8 3 4 8 Nieznana Za blisko Tryb domyślny Tryb bliski Dobra Za daleko Skeleton Tracking - prawdopodobieństwo Maksymalnie dwie osoby przez Kinecta Zalecane 6 graczy Koordynacja w trój wymiarze • Stawy metr od kamery + + - - Śledzenie ruchu - połączenia Połączenia mogą mieć następujące stany: Śledzone, nie śledzone , zasłonięte Inferred - Occluded, clipped lub low confidence joints Kinect przetwarza wygładzenie używając tzw. Metody Wygładzenia Wykładniczego Zaczynamy! Wymagania sprzętowe Komputer z procesorem co najmniej dual-core 2.66-GHz 2 GB RAM (rekomendowane 4 GB) Karta graficzna kompatybilna z Windows 7 i wspierająca DirectX 9.0c Kontroler Kinect wraz z zasilaczem Wymagane oprogramowanie System operacyjny Windows 7 / 8 (x86 lub x64) Środowisko Microsoft Visual Studio® 2010 / 2012 w dowolnej wersji Zainstalowana platforma Microsoft .NET Framework 4.0 Dla przykładów opartych o C++ • Microsoft DirectX® SDK - Lipiec 2010 lub późniejszy Dla przykładów z rozpoznawaniem mowy (Speech API): • Microsoft Speech Platform Runtime, wersja 10.2 lub późniejsza • Microsoft Speech Platform - Software Development Kit, wersja 10.2 lub późniejsza’ Kinect for Windows SDK Co warto wiedzieć, że: Aplikacje piszemy w środowisku MS Visual Studio .NET Nagłówki oraz przykłady dostępne są w językach C++ .NET / Visual Basic .NET / C# .NET Korzystamy z przestrzeni nazw Microsoft.Kinect (wcześniej Microsoft.Research.Kinect) Podstawowe operację realizujemy za pomocą NUI (ang. Natural User Inerface) NUI – Natural User Interface NUI jest interfejsem pomiędzy użytkownikiem a aplikacją, który pozwala na ich wzajemną interakcję, bez potrzeby korzystania z dodatkowych urządzeń wskazujących. Ma pozwalać użytkownikom na korzystanie z aplikacji w sposób naturalny dla człowieka. dostęp do sensora Kinect, podłączonego do komputera, dostęp do danych, pochodzących z kamer RGB i głębokości w środowisku programowym, dostarczenie narzędzi, umożliwiające tzw. skeletal tracking, czyli płynne reagowanie na zachowania, wywołane ruchem szkieletu człowieka. Do pojedynczego sensora Kinect, w danym czasie, posiada jedynie jedna aplikacja. Podstawowe operacje • Zmiana stanu Kinecta – Do połączenia się z sensorem i pobieranie danych używamy metody start() obiektu KinectSensor, w celu rozłączenia anoglocznie metody stop() • Do dyspozycji mamy następujące obiekty: – ColorStream – obsługa otoczenia / kamery – DepthStream – strumień głębokości – SkeletonStream – kości – AudioStream – rozpoznawanie mowy, dźwięku otoczenia ColorStream Obraz jest przetwarzany tak jak w przypadku tradycyjnych kamer multimedialnych. Kinect zwraca nam obraz w dwóch możliwych rozdzielczościach – pierwsza 640x480 (przy 30 ramkach na sekundę) i 1280x1024 (ale przy użyciu 15 ramek na sekundę). Dane z kamery - przypomnienie ColorStream DEMKO DepthStream – odległość • Zwraca odległość i ilość graczy podczas gry – Wymiary: 320 x 240 = 76,800 pikseli • Odległość – Odległość w mm od Kinecta, np..: 2,000mm (6.56 stopy) • Ilość graczy – 1-6 graczy • Odległość jest zmienną typu short (ImageFrame.Image.Bits) D D D D D D D D D D D D D P P P 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Odległość Indeks gracza Definicja odległości • Zakres: od 850 mm do 4000 mm • Odległość - 0 oznacza odległość nieznaną • Kinect SDK umożliwia uzyskanie odległości dla dwóch graczy jednocześnie. Przyjmowanie są następujące wartości: 0 – brak gracza 1 – gracz 0 2 – gracz 1 Bufor głębokości • ImageFrame.Image.Bits • Tablica bajtów public byte[] Bits; – punkt startu – lewy górny róg obrazka, – zapis danych – od lewej do prawej, a potem krok w dół, – mówi nam o odległości każdego piksela w mm DepthStream DEMKO Skeleton Tracking NUI Skeleton API dostarcza informacji o położeniu dwóch postaci, znajdujących się naprzeciwko sensora Kinect. Dane, pobierane przez sensor, dostarczają informacji o położeniu 20 części ciała, pozwalają one na określenie ich współrzędnych względem sensora. tryb pasywny - położenie tryb aktywny - dane każdego punktu - położenie punktów NUI Skeleton API dostarcza algorytmy, pomagające w filtrowaniu i wygładzaniu ruchów obiektów programu, będących odwzorowaniem poszczególnych punktów (Joint). Objawia się to tym, iż po przekazaniu odpowiednio ustawionych atrybutów wygładzania, dane pochodzące z sensora są uśredniane, co powoduje zanik efektu wibrowania, spowodowany czułością czujnika. Aby wyeliminować ten problem, możemy użyć następującego kodu: Skeleton Tracking DEMKO Face Recognition – Rozpoznawanie Twarzy Kinect dla Windows oprócz sylwetki postaci umożliwia dokładne rozponanie twarzy. Możliwe jest zidentyfikowanie ponad 80 różnych unikalnych punktów. Face Recognition DEMKO Audio API Dla przypomnienia kinect posiada on 4 mikrofony, co pozwala na wykorzystanie urządzenia, po poprawnym zainstalowaniu go na komputerze, nie tylko jako zwykłego mikrofonu. Speech API umożliwia: • • • • redukcja szumów i efektu echo przechwytywanie dźwięku wysokiej jakości lokalizacja źródła dźwięku (z dokładnością 10 stopni) rozpoznawanie mowy. Zrzut okiem na klasę SPEECH RECOGNITION GRAMMAR Biblioteki, odpowiedzialne za dźwięk w Kinect SDK, są zgodne ze standardem SRGS, który jest powszechnie wykorzystywany w portalach głosowych do przeprowadzania dialogu z użytkownikiem SPE, a sprawa polska Do obsługi języka polskiego potrzebny jest dodatek TTS (Text-to-Speech) Oficjalnie wg. danych obiektów RecognizerInfo.AdditionalInfo Kinect nie jest wspierany, możemy jednak wymusić jego wykorzystanie. Rozpoznawanie dialekty polskiego podczas naszych testów działało dobrze Audio Basic DEMKO Kółko i Krzyżyk DEMKO Kinect Studio Kinect Studio wchodzi w skład Kinect SDK 1.5 jest narzędziem umożliwiającym odtwarzanie wcześniej zarejestrowanych strumieni danych. KINECT JAKO SKANER 3D • ReconstructMe jest jedna z wielu aplikacji pozwalających na skanowanie obiektów 3D w czasie rzeczywistym ReconstructMe DEMKO KINECT W DRONIE Grupa studentów z MIT wbudowała Kinecta w dronę razem z IMU (Inertial Mesuring Unit). Bazuje na chmurze punktów wytworzonej przez kontroler. Air Presenter for Kinect Air Presenter umożliwia sterowanie prezentacjami Power Point pakietu Microsoft Office za pomocą gestów. Air Presenter DEMKO Przydatne materiały - Ta prezentacja - MSDN http://msdn.microsoft.com/pl-pl/library/kinect-sdk--wprowadzenie.aspx - http://www.codeplex.com Dziękujemy