motion capturing unter verwendung der microsoft kinect · studiengang medieninformatik master...

40
Fachhochschule Köln University of Applied Sciences Cologne Campus Gummersbach Fachbereich Informatik Studiengang Medieninformatik Master Motion Capturing unter Verwendung der Microsoft Kinect - Untersuchung der Möglichkeiten und Einschränkungen Praxisprojekt WS 11/12 von Florian Gebauer Matr.-Nr.: 11048082 betreut von: Prof. Dr. Horst Stenzel Gummersbach, Oktober 2011

Upload: letuyen

Post on 17-Sep-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Fachhochschule KölnUniversity of Applied Sciences Cologne

Campus Gummersbach

Fachbereich InformatikStudiengang Medieninformatik Master

Motion Capturing unter Verwendung der Microsoft Kinect

-Untersuchung der Möglichkeiten und Einschränkungen

PraxisprojektWS 11/12

von Florian GebauerMatr.-Nr.: 11048082

betreut von:Prof. Dr. Horst Stenzel

Gummersbach, Oktober 2011

Inhaltsverzeichnis

1 Einleitung .................................................................................... 1 1.1. Problemstellung und Abgrenzung ................................................... 2 1.2 Zielsetzung ....................................................................................... 3 1.3 Aufbau der Arbeit ............................................................................ 3

2 Motion Capturing ......................................................................... 5 2.1 Definition und zeitliche Entwicklung .............................................. 5 2.2 Motion Capture Verfahren ............................................................... 6 2.2.1 Nicht-optische Verfahren .............................................................. 7 2.2.2 Optische Verfahren ....................................................................... 8 2.3 Motion Capture Workflow ............................................................... 9

3 Technische Rahmenbedingungen ........................................... 12 3.1 Hardware der Kinect ........................................................................ 12 3.1.1 RGB–Kamera ................................................................................ 13 3.1.2 Infrarot-Projektor .......................................................................... 13 3.1.3 Infrarot-Kamera ............................................................................. 13 3.1.4 Multi-Array-Mikrofon ................................................................... 14 3.1.5 Neigungsmotor .............................................................................. 14 3.2 Funktionsweise der Kinect ............................................................... 14 3.2.1 Structured Light Coding ................................................................ 15 3.2.2 Bilder der Kamera ......................................................................... 17 3.3 Verwendung mehrerer Kinect-Systeme ........................................... 19 3.4 Vergleich Kinect / OpenStage ......................................................... 19 3.5 Zwischenfazit ................................................................................... 21

4 Software ...................................................................................... 23 4.1 Gerätetreiber ..................................................................................... 23 4.2 Entwicklungsumgebungen ............................................................... 25 4.2.1 OpenNI .......................................................................................... 25 4.2.2 Microsoft Kinect SDK .................................................................. 28 4.2.3 Vergleich OpenNI / Microsoft SDK ............................................. 31 4.3 Motion Capturing mit der Kinect ..................................................... 34

5 Fazit und Ausblick ....................................................................... 35 Literaturverzeichnis ....................................................................... 37

Motion Capturing unter Verwendung der Microsoft Kinect 1

1 Einleitung

2009 stellte Microsoft auf der Spielemesse E31 erstmals seine neue

Bewegungssteuerung Kinect für die Konsole Xbox360 vor. Das unter dem

Projektnamen „Natal“, in Kooperation mit dem Hersteller Primesense2,

entwickelte Eingabegerät, sollte das Gegenstück zu den Konkurrenzprodukten

aus dem Hause Sony und Nintendo darstellen. Microsoft reagierte dabei in

erster Linie auf den großen Erfolg, den Nintendo mit seiner Spielekonsole Wii

erzielt hatte. Das Alleinstellungsmerkmal der Wii war dabei ein neuartiger

Controller, der über einen integrierten Bewegungssensor die Position und

Bewegung des Controllers in Bewegungen des virtuellen Avatars umsetzte. Im

Gegensatz zur Konkurrenz verfolgte Microsoft mit der Kinect den Ansatz auf

einen Controller, wie er bei Wii und Playstation zum Einsatz kam, zu verzichten.

Die Bewegungssteuerung erfolgt bei der Kinect über eine Kombination aus

Tiefensensorkamera und Farbkamera, welche die Bewegungen des Benutzers

auf die Bewegungen des virtuellen Avatars umsetzt.

Nach Veröffentlichung der Kinect im November 2010 dauerte es nicht lange, bis

sich unabhängige Entwickler damit befassten, Gerätetreiber für den PC zu

entwickeln. Die Kinect war von Microsoft ursprünglich exklusiv für die Xbox360

vorgesehen. Der Fokus lag dabei auf der Steuerung von Spielen. Die

Verwendung am PC machte es Entwicklern möglich, die Kinect auch außerhalb

der Spieledomäne zu nutzen. Die ersten prototypischen Anwendungen nutzten

die Kinect zum Beispiel als Eingabegerät für die Steuerung grafischer

Benutzeroberflächen oder zur Steuerung von Robotern. Die entstandene

Community von Entwicklern wuchs nach Veröffentlichung der ersten

Gerätetreiber schnell an, auch weil Primesense mit OpenNI3 ein unabhängiges

Framework für die Entwicklung vorstellte. Microsoft reagierte auf diese

Entwicklung und brachte im Juni 2011 ein eigenes Software Development Kit

(SDK) heraus4.

1 Electronic Entertainment Expo: http://www.e3expo.com/ 2 Primesense: http://www.primesense.com/ 3 OpenNI: http://www.openni.org/ 4 Microsoft Press Release: http://www.microsoft.com/presspass/press/2011/jun11/06-16MSKinectSDKPR.mspx

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 2

1.1. Problemstellung und Abgrenzung

Die Analyse und Erzeugung menschlicher Bewegungen spielt in vielen

Anwendungsgebieten eine große Rolle. Um dies zu erreichen werden Motion

Capture Verfahren (Bewegungserfassungsverfahren) verwendet. Diese

ermöglichen es, Bewegungen in eine digitale, für den Computer lesbare Form

zu übertragen. Anwendung findet diese Technik in der Medizin, Robotik und

beim Militär. Hervorzuheben ist die Unterhaltungsindustrie, wo Motion Capturing

für die Erzeugung realistischer Animationen virtueller Charaktere eingesetzt

wird. Aktuelle Kinofilme und Videospiele sind ohne diese Technik nicht mehr

denkbar. Der große Vorteil von Motion Capturing Technologien besteht zum

einen in dem geringem zeitlichem Aufwand der betrieben werden muss und

zum anderen in einer detailgetreuen digitalen Abbildung der erfassten

Bewegungsabläufe. Gegenüber anderer Techniken wie der Keyframeanimation

stellt dies einen entscheidenden Vorteil dar. Der Nachteil dieser Technik liegt in

den hohen Kosten, welche für Hardware und Räumlichkeiten anfallen.

Mit einem Preis von ca. 120 $ stellt die Kinect eine kostengünstige Möglichkeit

dar, optisches, markerloses Motion Capturing am PC durchführen zu können.

Die in der Einleitung angesprochenen Softwarelösungen, die die Verwendung

der Kinect ermöglichen, sollen hierfür untersucht werden. Diese Ausarbeitung

konzentriert sich dabei auf die beiden gebräuchlichsten Entwicklungs-

umgebungen: „OpenNI“ und „Kinect SDK“ von Microsoft. Auf die Untersuchung

weiterer Entwicklungsumgebungen wie „OpenKinect5“, wurde im Rahmen

dieser Arbeit verzichtet, weil diese keine nennenswerten Vorteile gegenüber

„OpenNI“ oder dem „Kinect SDK“ aufweisen. Des weiteren liegt der Fokus der

Untersuchungen auf den speziellen Anforderungen die für das Motion Capturing

anfallen.

5 OpenKinect: http://openkinect.org/wiki/Main_Page

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 3

1.2 Zielsetzung

Ziel der Projektarbeit ist es, den aktuellen Stand der Technik auf Grundlage von

Internetrecherche und wissenschaftlichen Ausarbeitungen wiederzugeben.

Darauf aufbauend soll im ersten Schritt die Hardware und generelle

Funktionsweise der Kinect untersucht werden. Im Mittelpunkt stehen hierbei die

Fragestellungen, inwieweit sich die Kinect von professionellen Motion Capturing

Systemen unterscheidet, welche Einschränkungen sie mit sich bringt und

welche Möglichkeiten sie bietet. Im zweiten Schritt soll anschließend die

Software untersucht werden, die die Verwendung der Kinect am PC möglich

macht. Auch hier liegt der Fokus auf Funktionsweise, Möglichkeiten und

Einschränkungen. Anhand der gewonnenen Erkenntnisse soll im letzten Schritt

der zentralen Frage nachgegangen werden, inwieweit sich die Kinect als Motion

Capturing System eignet bzw. wie sehr sie sich von professionellen Systemen

unterscheidet.

1.3 Aufbau der Arbeit

Zu Beginn der Arbeit wird eine Einleitung gegeben. In Kapitel 1.1 wird die

Problemstellung erläutert, sowie eine Abgrenzung der Arbeit vorgenommen. Die

Zielsetzung wird in Kapitel 1.2 festgelegt.

Kapitel 2 betrachtet den ganzheitlichen Prozess des Motion Capturings und

stellt eine Einführung in das Themengebiet dar. In Kapitel 2.1 wird eine genaue

Definition des Begriffs gegeben, sowie eine kurze Zusammenfassung der

wichtigsten zeitlichen Entwicklungen im Bereich von Motion Capturing

Systemen. Um die Kinect besser einordnen zu können, werden in Kapitel 2.2

verschiedene Verfahren des Motion Capturings beschrieben. Unterteilt ist

dieses Kapitel in Kapitel 2.2.1, welches nicht-optische Verfahren behandelt und

Kapitel 2.2.2, dass optische Verfahren aufzeigt. Danach werden abschließend

in Kapitel 2.3 die einzelnen Arbeitsschritte beschrieben, die üblicherweise beim

Motion Capturing durchlaufen werden müssen.

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 4

Kapitel 3 behandelt die Fragestellung inwieweit die Hardware der Kinect in der

Lage ist, Motion Capturing durchführen zu können. Dazu werden zu Beginn in

Kapitel 3.1 die Komponenten der Kinect vorgestellt, sowie die technischen

Eckdaten aufgezeigt. Kapitel 3.2 behandelt die Funktionsweise der Kinect,

insbesondere der Technik zur Erzeugung von Tiefenbildern. Aufbauend auf den

Ergebnissen widmet sich Kapitel 3.3 der Verwendung mehrerer Kinect-

Systeme. Danach wird in Kapitel 3.4 ein Vergleich zwischen der Kinect und

dem professionellem Motion Capture System OpenStage von Organic Motion

gezogen. Abschließend wird in Kapitel 3.5 ein Zwischenfazit gezogen, dass

Vor- und Nachteile der Kinect-Hardware und Funktionsweise vorstellt.

Kapitel 4 geht der Fragestellung nach, welche Einschränkungen und

Möglichkeiten die Software der Kinect bei der Verwendung am PC bietet.

Beginnend mit einer Vorstellung verfügbarer Gerätetreiber in Kapitel 4.1,

werden im nächsten Kapitel 4.2, die zu untersuchenden

Entwicklungsumgebungen OpenNI und Kinect SDK vorgestellt. Kapitel 4.2.1

widmet sich der von Primesense entwickelten Entwicklungsumgebung OpenNI.

Danach wird in Kapitel 4.2.2 das Kinect SDK von Microsoft untersucht. Es folgt

in Kapitel 4.2.3 eine Gegenüberstellung der vorgestellten Entwicklungs-

umgebungen. Abgeschlossen wird das vierte Kapitel in Kapitel 4.3. Hier werden

Werkzeuge kurz vorgestellt, die den Motion Capturing Prozess unter

Verwendung der Kinect unterstützen.

Abgeschlossen wird die Projektarbeit in Kapitel 5, wo ein Fazit und ein Ausblick

gegeben wird.

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 5

2 Motion Capturing

Dieses Kapitel befasst sich mit dem Vorgang der Bewegungserfassung und

stellt eine Einführung in das Themengebiet dar. Zu Beginn des Kapitels wird der

Begriff Motion Capturing definiert und die zeitliche Entwicklung der Technologie

beschrieben. Danach werden Möglichkeiten beschrieben, mit welcher Hardware

Bewegungsabläufe erfasst werden können. Abschließend werden die einzelnen

Verarbeitungsschritte der Bewegungserfassung beschrieben.

Abbildung 1 Erste Reihenfotografien – Vorläufer moderner Motion Capture Verfahren [36]

2.1 Definition und zeitliche Entwicklung

Unter Motion Capture (engl. Bewegungserfassung) versteht man den Prozess,

Bewegungen mit Hilfe von Sensoren aufzunehmen und diese in eine für den

Computer lesbare, verarbeitbare Form zu übersetzen. Kurz gesagt handelt es

sich dabei um eine Technologie, eine real existierende Bewegung in eine

digitale Bewegung zu übertragen [9]. Eine besondere Rolle nehmen die

sogenannten Key-Points beim Motion Capture ein. Key-Points sind die

Bereiche, welche Bewegungen der einzelnen Teilbereiche des Objekts am

besten repräsentieren. Beispielsweise wären beim Motion Capture einer

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 6

menschlichen Bewegung die einzelnen Gelenke (Schulter, Ellenbogen,

Handwurzel, etc.) als Key-Points zu wählen. Die räumliche Position der Key-

Points wird, abhängig von der eingesetzten Technik (Vgl. Kapitel 2.2), über ein

oder mehrere Sensoren, Marker oder Potentiometer an das verarbeitende

Gerät übermittelt.

Erste Anstrengungen Bewegungen zu erfassen und zu analysieren wurden

bereits 1872 vom englischen Fotograf Eadweard Muybridge unternommen.

Seine Technik der Reihenfotografie (Vgl. Abbildung 1) wurde später durch das

kennzeichnen wichtiger Bereiche der Objekte verfeinert [9][36]. Für die

Herstellung von Filmen war diese Technik jedoch ungeeignet. Erst die

Erfindung der Rotoskopie im Jahr 1914 durch Max Fleischer machte es

möglich, Bewegungsabläufe in Zeichentrickfilme zu übertragen. Dabei werden

die Einzelbilder einer Filmszene auf die Rückwand einer Glasscheibe projiziert,

so dass der Animator sie abzeichnen kann [9][32]. 1980 entwickelten schließlich

Biomechaniker an der Universität von Burnaby, Kanada ein Exoskelett, welches

die Erfassung und Analyse menschlicher Bewegungen ermöglichte. Über

Potentiometer wurde die Gelenkrotation erfasst und konnte anschließend

ausgewertet werden [9]. Damit wurde erstmalig die Analyse von Bewegungen in

einer computerlesbaren Form ermöglicht. Heute ist Motion Capture eine

Standardtechnologie zur Erzeugung qualitativ hochwertiger Animationen. Man

unterscheidet dabei verschiedene Verfahren der Bewegungserfassung.

2.2 Motion Capture Verfahren

Wie bereits im vorigen Kapitel angeklungen, unterscheidet man heute zwischen

verschiedenen Verfahren Bewegungen zu erfassen. Grob lassen sich diese

Systeme in optische und nicht-optische Verfahren unterteilen. Deren

Unterschiede liegen dabei in der Hardware und Software, welche den Tracking-

Vorgang ermöglichen. Ziel des Kapitels ist es, dem Leser einen Überblick über

bestehende Lösungen im Bereich Motion Capture zu geben und deren Vor- und

Nachteile kennenzulernen. Auf die wichtigsten Verfahren soll an dieser Stelle

kurz eingegangen werden.

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 7

2.2.1 Nicht-optische Verfahren

Bei nicht-optischen Verfahren unterscheidet man zwischen magnetischen und

mechanischen Systemen. Magnetische Motion Capture Systeme verwenden

spezielle Sensoren, die auf den Körper der zu erfassenden Person angebracht

sind (Vgl. Abbildung 2). Die Sensoren messen ein niederfrequentes

magnetisches Feld aus, das von einem Transmitter ausgesendet wird. Die von

den Sensoren erfassten Daten werden anschließend an eine Kontrolleinheit

übermittelt, die Position und Ausrichtung im Raum errechnet. Vorteile von

magnetischen Systemen sind geringe Kosten, Echtzeit Capturing und der

Wegfall des Verdeckungsproblems. Nachteile liegen in der eingeschränkten

Bewegungsmöglichkeit und der Anfälligkeit der Technik gegenüber

Interferenzen durch andere Magnetfelder [9].

Abbildung 2 Magnetisches MoCap (links) Elektro-Mechanisches MoCap (rechts) [9]

Mechanische Motion Capture Systeme zeichnen sich dadurch aus, dass

Bewegungen direkt am Körper des Akteurs gemessen werden. Dies geschieht

jedoch nicht durch die Verwendung von Markern oder Kameras, sondern durch

die Verwendung eines Exoskeletts (Vgl. Abbildung 2). Bewegungen werden mit

Hilfe von elektromechanischen Sensoren gemessen, die sich an den Gelenken

des Exoskeletts befinden. Bewegt sich der Akteur, ändert sich der Widerstand

und damit die Spannung der Sensoren. Die analogen Spannungsänderungen

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 8

werden anschließend in ein digitales Signal umgewandelt und weiterverarbeitet.

Vorteile bei mechanischen Systemen sind eine hohe Reichweite, Echtzeit

Capturing sowie kein Verdeckungsproblem. Die Nachteile bestehen in der

schwierigen Kalibrierung und eingeschränkten Bewegungsmöglichkeiten [9].

2.2.2 Optische Verfahren

Optische Systeme erfassen Bewegungen über spezielle Kameras. Dabei

unterscheidet man markerbasierte und markerlose Verfahren. Im Gegensatz zu

den bereits vorgestellten nicht-optischen Verfahren, nimmt die Software eine

entscheidende Rolle ein. Aufgrund der hohen Rechenleistung, die für optische

Verfahren benötigt wird, haben sich diese Systeme erst in den letzten Jahren

durchgesetzt.

Abbildung 3 Anzug mit Markern (links) Kameraaufbau in Motion Capture Studio (rechts) [22]

Beim markerbasierten, optischen Motion Capture trägt der Akteur einen

hautengen Ganzkörperanzug, der mit reflektierenden Markern besetzt ist (Vgl.

Abbildung 3). Weitere Voraussetzung ist eine abgesteckte Bühne, welche von

Kameras umgeben ist. Die Kameras nehmen das von den Markern reflektierte

Licht auf und geben es an einen zentralen Rechner weiter. Über die einzelnen

Markerpositionen kann anschließend ein Skelettmodell berechnet werden. Die

Vorteile von markerbasierten, optischen Systemen sind eine hohe Abtastrate

und Messgenauigkeit, eine hohe Bewegungsfreiheit des Akteurs sowie die

Möglichkeit der gleichzeitigen Erfassung mehrerer Akteure. Der Nachteil

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 9

optischer, markerbasierter Systeme besteht in der Möglichkeit der Verdeckung

einzelner Marker und den damit fehlerhaft oder unvollständig vorliegenden

Datensätzen zur Erzeugung des Skelettmodells [9].

Die Bewegungserfassung erfolgt bei der Kinect ohne den Einsatz von Markern.

Um Bewegungen zu erfassen muss keine spezielle Hardware getragen werden.

Die Kinect kann somit zu den optischen, markerlosen Verfahren gezählt

werden. Die genaue Funktionsweise der Kinect wird dabei ausführlich in Kapitel

3.2 behandelt.

2.3 Motion Capture Workflow

Nachdem die unterschiedlichen Verfahren vorgestellt sind, befasst sich dieses

Kapitel mit den einzelnen Schritten, die typischerweise beim Motion Capture

anfallen. Es wird auf anfallende Probleme hingewiesen und die Besonderheiten

der Kinect beschrieben. Ein Schaubild, dass die einzelnen Schritte des

Workflows aufzeigt, wird in Abbildung 4 gegeben. Zur besseren Übersicht

wurden zeitlich eng zusammenhängende Prozessstufen farblich gleich

gekennzeichnet.

Abbildung 4 Prozessstufen beim Motion Capturing

Zu Beginn des Motion Capturing Prozesses steht die Pre-Produktion. In dieser

Phase werden alle notwendigen Schritte geplant. Darunter fallen unter anderem

die Erstellung von Storyboards, in denen die zu erfassenden Bewegungen

Florian Gebauer | WS 11/12 | Projektarbeit

Pre-Produktion

Akteur-Setup Kalibrierung Tracking-Vorgang

Post-ProduktionRiggingSkinning

Motion Capturing unter Verwendung der Microsoft Kinect 10

geplant werden. Im nächsten Schritt, dem Akteur-Setup, wird der Akteur für die

Aufnahmen vorbereitet. Je nach Technik muss also Exoskelett oder

Ganzkörperanzug vom Akteur angezogen werden. Bei der Verwendung der

Kinect oder anderer optischer markerloser Verfahren entfällt dieser Schritt,

aufgrund der nicht benötigten Hilfsmittel. Es folgt die Kalibrierungsphase. Diese

gestaltet sich je nach Technik mehr oder weniger zeitintensiv. Bei

mechanischen Verfahren muss jeder einzelne Sensor des Exoskeletts kalibriert

werden. Optische Verfahren kommen hingegen mit einer einfachen

Kalibrierungspose aus (Vgl. Kapitel 3.2.1), die wenige Sekunden vom Akteur

gehalten werden muss. Der nächste Schritt umfasst den eigentlichen Tracking-

Vorgang, in dem die Bewegungen des Akteurs erfasst werden. Nach der Motion

Capture Aufnahme liegen die Datensätze, abhängig von der eingesetzten

Technik, als Positionsdaten der einzelnen Marker/Sensoren oder als fertige

Skelettmodell-Daten vor. Diese müssen im Folgenden bereinigt werden, da es

durch Verdeckung oder Interferenzen immer wieder zu Ausreißern oder

fehlenden Datensätzen kommen kann. Durch Interpolation, Best-Guess

Algorithmen oder manuell, können Fehler im Nachhinein behoben werden.

Abbildung 5 illustriert einen solchen Ausreißer einer Trajektorie vor und nach

dem Bereinigungsvorgang.

Abbildung 5 Bereinigen und glätten der Trajektorien vorher (links) nachher (rechts) [9]

Nachdem die Datensätze bereinigt sind, kann das Skelettmodell erstellt werden.

Man spricht dabei vom Rigging. Übliche Datenformate sind C3D, BVH oder

FBX. Im Falle von BVH liegen die Datensätze bereits als hierarchisches

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 11

Skelettmodell vor. Bei C3D und FBX liegen die Datensätze als einzelne

Positionsdaten der Marker/Sensoren vor. Für die Kinect existieren bereits

Werkzeuge, die den komfortablen Export in das BVH Datenformat unter

OpenNI und dem Microsoft SDK ermöglichen (Vgl. Kapitel 4.4). Die Erstellung

des Skelettmodells geschieht üblicherweise in speziellen Programmen wie

Autodesk Motionbuilder6 oder Blender7. Nachdem das Skelettmodell erstellt ist,

kann im letzten Schritt das Skelettmodell mit einem 3D Modell verbunden

werden. Dieser Schritt wird auch als Skinning bezeichnet und kann in 3D-

Modellierungsprogrammen wie Autodesk Maya8, Autodesk 3D Studio Max9 oder

Blender durchgeführt werden.

6 Autodesk Motion Builder Produktbeschreibung: http://www.autodesk.de/adsk/servlet/pc/index?id=15013088&siteID=403786 7 Blender: http://www.blender.org/8 Autodesk Maya Produktbeschreibung: http://www.autodesk.de/adsk/servlet/pc/index?siteID=403786&id=146575129 Autodesk 3D Studio Max Produktbeschreibung: http://www.autodesk.de/adsk/servlet/pc/index?id=14642267&siteID=403786

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 12

3 Technische Rahmenbedingungen

Die Anwendung von Motion Capturing Verfahren benötigt spezielle Hardware.

Dieses Kapitel soll die Fragen klären, inwieweit sich die Kinect von

professionellen Motion Capturing Systemen unterscheidet, welche

Einschränkungen sie mit sich bringt und welche Möglichkeiten sie bietet. Zu

diesem Zweck wird im Folgenden ein genauer Blick auf die einzelnen

Hardwarekomponenten der Kinect geworfen und deren Funktionsweise erklärt.

3.1 Hardware der Kinect

Die Kinect besteht im wesentlichen aus folgenden fünf Kernkomponenten,

welche in Abbildung 6 dargestellt werden:

• einer RGB-Kamera

• einem Infrarot-Projektor

• einer Infrarot-Kamera

• einem Multi-Array-Mikrofon

• einem Motor zum Neigen der Kinect

Abbildung 6 Kernkomponenten der Kinect – eigene Darstellung [15]

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 13

3.1.1 RGB–Kamera

Die RGB-Kamera ist in der Mitte der Kinect-Sensorleiste angebracht. Der als

System on Chip (SoC) ausgeführte CMOS Sensor liefert bei einer

Bildwechselfrequenz von 30 fps eine VGA Auflösung mit 640*512 Pixel. Die

Bildinformationen werden dabei mit einer Farbtiefe von 16bit übertragen. Der

Nachteil der RGB–Kamera ist die geringe Bildwechselfrequenz: Die Verfolgung

schneller Bewegungen ist dadurch nicht sehr präzise. Das Sichtfeld der RGB-

Kamera umfasst 57° in der Horizontalen und 43° in der Vertikalen [27].

3.1.2 Infrarot-Projektor

Die Aufgabe des Infrarot-Projektors besteht in der Aussendung eines speziellen

Lichtmusters10. Das Infrarotlicht wird mit einer Wellenlänge von 780nm

ausgestrahlt [13]. Damit ist die Kinect gegenüber Umgebungslicht

weitestgehend unempfindlich. Die Verwendung der Kinect im Freien, bei

direktem Sonnenlicht ist jedoch nicht zu empfehlen, da die Sonneneinstrahlung

zu Interferenzen führen kann. Die Aussendung des infraroten Lichts geschieht

bei der Kinect über die Zeit konstant [27].

3.1.3 Infrarot-Kamera

Um das projizierte Lichtmuster zu erfassen, ist in der Kinect ein

monochromatischer, lichtempfindlicher CMOS Sensor verbaut. Dieser Sensor

verwendet einen Bandbreitenfilter und verfügt über eine Auflösung von

1280*1024 Pixeln. Durch die Verwendung eines 2*2 Pixel Binnings11 bei einer

Bildwechselfrequenz von 30fps beträgt die reduzierte Auflösung 640*512 Pixel.

Die Bildinformationen werden dabei mit einer 11bit Intensitätstiefe vom Sensor

übertragen [27].

10Vgl.. Kapitel 3.2.111 Binning: Zusammenfassen benachbarter Bildelemente auf dem Bildsensor selbst. Durch die Bildung von Pixelblöcken wird eine höhere Lichtempfindlichkeit pro Pixel zu Lasten der Auflösung erreicht [28].

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 14

3.1.4 Multi-Array-Mikrofon

Das Audiosystem der Kinect besteht aus einem Multi-Array-Mikrofon, welches

aus vier einzelnen Mikrofonen besteht. Jeder der vier Mikrofonkanäle wird vom

Mikroprozessor als 16bit Audio mit einer Abtastrate von 16 kHz verarbeitet [13].

3.1.5 Neigungsmotor

Zum Neigen der Sensorleiste verfügt die Kinect über einen im Standfuß

eingebauten Motor. Dieser ermöglicht das motorisierte Neigen der Sensorleiste

um ±28°. Der aktuell vorliegende Neigungswinkel wird dabei über einen

Beschleunigungssensor bestimmt [13].

3.2 Funktionsweise der Kinect

Nachdem im vorigen Kapitel auf die technischen Spezifikationen der Kinect

eingegangen wurde, beschreibt dieses Kapitel die Funktionsweise und

Zusammenspiel der Komponenten. Zu Beginn wird die Kommunikation

zwischen Sensoren und Mikroprozessor erläutert. Im Anschluss wird das

Verfahren zur Erzeugung von Tiefenbildern, Light Coding, beschrieben.

Abschließend wird kurz auf die erzeugten Kamerabilder (RGB, IR) Bezug

genommen.

Die Microsoft Kinect verwendet das von der Firma Primesense patentierte

Referenzdesign „Primesensor“ [27]. In der Kinect kommt dieses in abgeänderter

Form zum Einsatz. Das Referenzdesign umfasst drei Komponenten:

Infrarotprojektor, Infrarot-Kamera und Primesense PS1080 System on Chip

(PS1080 SoC). Zusätzlich zum Referenzdesign ist in der Kinect eine RGB-

Kamera verbaut. Eine Darstellung des Referenzdesigns, mit den zusätzlich in

der Kinect verbauten Komponenten, wird in Abbildung 7 gegeben. Der PS1080

SoC ist der Kern der Kinect: Er steuert den Infrarot-Projektor, welcher ein

großflächiges, fest definiertes Infrarot-Punktmuster in den Raum projiziert. Die

Infrarot-Kamera empfängt die reflektierten Infrarotstrahlen und liefert die Daten

an den Mikroprozessor. Dieser errechnet auf Basis des (verzerrten),

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 15

empfangenen Punktmusters und des Referenz-Punktmusters über ein

Triangulationsverfahren ein Tiefenbild der Szene [10]. Die Erzeugung der

Tiefenbilder geschieht also direkt auf dem Chip und erfordert keine zusätzliche

Software-Berechnungen. Über einen separaten Datenstrom wird das Farbbild

der RGB-Kamera an den PS1080 SoC übertragen. Per USB 2.0 werden die

Daten anschließend an den Host übertragen. Um weitere Software-

Berechnungen zu vermeiden, übernimmt der PS1080 SoC zusätzliche

audiospezifische Berechnungen wie Rausch-unterdrückung oder die

Lokalisation von Audioquellen [27].

Abbildung 7 Primesense Referenzdesign mit optionalen Komponenten [27]

3.2.1 Structured Light Coding

Die interne Erstellung von Tiefenbildern durch den PS1080 SoC stellt eine der

wichtigsten Aufgaben der Kinect dar. Die Kinect verwendet zu diesem Zweck

ein von Primesense entwickeltes und patentiertes Verfahren: Light Coding. Der

genaue Algorithmus dieses Verfahrens ist nicht dokumentiert, es lassen sich

jedoch anhand von Patenten und Untersuchungen Dritter Rückschlüsse auf das

Verfahren zu [4][5][30][31].

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 16

Entgegen vieler Annahmen, nutzt die Kinect keine teure ToF-Technik12 sondern

bedient sich dem Prinzip von strukturiertem Licht. Bei diesem wird Infrarotlicht

in definierten, wechselnden Mustern ausgesendet und von einem Infrarot-

CMOS Sensor (Infrarot-Kamera) aufgenommen. Aufgrund des nicht offen

gelegten Algorithmus' lassen sich nicht alle Facetten des Verfahrens erklären.

Die von Primesense angemeldeten Patente lassen jedoch einige Rückschlüsse

auf das Verfahren zu. Dadurch, dass die Berechnung der Tiefeninformationen

bereits auf dem PS1080 SoC durchgeführt werden, liegt die Vermutung nahe,

dass es sich bei dem projizierten Punktmuster um eine Art Code handelt, der

die finale Berechnung vereinfacht.

Abbildung 8 Infrarot Punktmuster der Kinect [28]

Zur Erzeugung von Tiefeninformationen projiziert der Infrarot-Projektor ein fest

definiertes Punktmuster unterschiedlicher Intensitätsstufen. Das auf eine

Leinwand projizierte Punktmuster des Infrarot-Projektors wird in Abbildung 8

dargestellt. Bei näherer Betrachtung von Abbildung 8 fällt auf, dass sich das

Punktmuster nicht durch eine zufällige Anordnung auszeichnet. Vielmehr lassen

12ToF-Technik: Time of Flight – Laufzeitverfahren um Distanzen zu messen. Dabei wird die Szene mittels eines Lichtpulses ausgeleuchtet. Die Kamera misst für jedes Pixel die Zeit, die das Licht zum Objekt und zurück braucht. Die Zeit ist dabei proportional zur Distanz [37].

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 17

sich mehrere „Blöcke“ identifizieren, die im Zentrum einen besonders hellen

Lichtpunkt aufweisen. Ob die zentralen, hellen Lichtpunkte eine besondere

Funktion (z.B. Orientierungspunkt) haben, oder bloße Nebeneffekte des

Verfahrens sind, konnte nicht geklärt werden. Das Muster wiederholt sich

insgesamt dreimal nach jeweils 211 Punkten in horizontaler und 165 Punkten in

vertikaler Richtung. Damit ergibt sich insgesamt eine „3x3 Blockmatrix“.

Multipliziert man die Punkte mit den Blöcken, kommt man auf 633*495 Punkte,

welches ungefähr einer VGA Auflösung gleich kommt. Eine sehr ausführliche

Untersuchung der Zusammensetzung des Musters wird von A. Reichinger in

[28] beschrieben.

Die Besonderheit der Kinect ist, dass die Tiefeninformationen aus der

Kombination von Infrarot-Projektor und Infrarot-Kamera berechnet werden. Dies

stellt eine großen Vorteil bei der Menge der anfallenden Berechnungen im

Vergleich zu zwei Kameras bei Stereo-Kamerasystemen dar. Anhand des

Musters, dass in einem zur Lichtquelle bekannten Abstand entsteht, kann über

die Abweichung zwischen reflektiertem und bekanntem Muster die

Tiefeninformation berechnet werden. Zur Berechnung wird ein

Triangulationsverfahren eingesetzt. Abbildung 9 verdeutlicht den räumlichen

„Versatz“ der Lichtpunkte, für Objekte im Punktmuster.

Abbildung 9 Änderungen der Lichtpunkte ohne (links) und mit Objekt (rechts) [28]

3.2.2 Bilder der Kamera

Der optimale Abstand zur Kamera beträgt laut Herstellerangaben [16] zwischen

1,2m und 3,5m. Objekte, die außerhalb des empfohlenen Abstandes erfasst

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 18

werden, liefern gar keine oder nur sehr ungenaue Tiefeninformationen (Vgl. [8]).

Unter Einbeziehung von Sichtfeld und Kameraabstand ergibt sich ein

ungefähres Aufnahmefeld13 von 4m². Die Genauigkeit der Infrarot-Kamera

beträgt bei einem Abstand von 2m zur Kinect für x und y 3mm und für z 1cm

[27].

Abbildung 10 zeigt ein mit der Kinect aufgenommenes RGB Bild und das

zugehörige Tiefenbild. Die RGB Kamera besitzt gegenüber der Infrarot-Kamera

ein größeres Sichtfeld. Auffallend bei der Kinect ist, dass die Tiefenbilder mit

einer Auflösung von 640*480 Pixeln anstatt der angegebenen 640*512 Pixeln

ausgegeben werden. Die Tiefeninformation werden mit einer Genauigkeit von

11bit zurückgegeben. Die Intensitätstiefe der Tiefenbilder entspricht also einem

11bit Wert, womit sich für jedes Pixel ein Wertebereich von 0 – 2047 ergibt.

Auffallend bei Tiefenbildern sind die schwarzen Stellen. Diese liefern keine

Tiefeninformationen und entstehen, wenn Objekte mit spiegelnden,

reflektierenden Oberflächen aufgenommen werden, oder dann wenn an

besagter Stelle kein Punktmuster abgebildet wurde. Des weiteren ist bei

Tiefenbildern an der rechten Seite ein dünner schwarzer Rand zu bemerken,

der ebenfalls keine Tiefeninformation liefert. Die Aufgabe dieses genau 8 Pixel

breiten, Randes ist nicht bekannt (Vgl. Abbildung 10).

Abbildung 10 Mit Kinect aufgenommenes RGB-Bild (links), entsprechendes Tiefenbild (rechts)

13 Mit Aufnahmefeld ist die nutzbare Fläche gemeint, in der der Akteur von der Kamera erfasst werden kann.

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 19

3.3 Verwendung mehrerer Kinect-Systeme

Ein großes Problem optischer Systeme ist die Verdeckung. Des weiteren ist das

Aufnahmefeld der Kinect mit 4m² relativ gering. Es besteht jedoch die

Möglichkeit, mehrere Kinect-Systeme zu verwenden und die angesprochenen

Probleme zumindest teilweise zu lösen. Da die Kinect das Light Coding

Verfahren nutzt ist es prinzipiell möglich, mehrere Kinect-Systeme zu

kombinieren ohne zu starke Interferenzen befürchten zu müssen. Angemerkt

sei, dass die Verwendung von mehr als zwei Kinect-Systemen erst durch die

Nutzung spezieller Treiber und Frameworks möglich ist (Vgl. Kapitel 4.2). Erste

Projekte auf diesem Gebiet beschäftigten sich mit der 3D Rekonstruktion von

Objekten bzw. Umgebungen [7]. Aber auch für den Motion Capturing Vorgang

wäre die Verwendung mehrerer Kinect-Systeme von großem Vorteil. Wie die

Projektergebnisse von Kreylos zeigen [11], führt eine Überlagerung der

Punktmuster nicht zu starken Interferenzen. Bis auf einige Teilbereiche erkennt

das System welche Punkte des Musters zu welcher Kamera gehören. Für

verbesserte Ergebnisse existieren Möglichkeiten der Synchronisation der

Infrarot-Projektoren. Denkbar wäre zum Beispiel die Implementierung eines

Zeitmultiplexverfahrens (TDM). Hierbei handelt es sich jedoch um einen

Gegenstand aktueller Forschung. Des weiteren beschränken sich Kreylos

Projektergebnisse auf die Verwendung zweier Kinects. Die Verwendung von

mehr als zwei Kinects ist wiederum aktueller Forschungsgegenstand.

3.4 Vergleich Kinect / OpenStage

Nachdem die Hardware und die Funktionsweise der Kinect beschrieben wurde,

wird in diesem Kapitel ein Vergleich zwischen der Kinect und einem

professionellem Motion Capture System, dem OpenStage 2.0 von Organic

Motion [22] gegeben. OpenStage wird in der Praxis im Bereich der

Unterhaltungsindustrie sowie in Forschung und Lehre als professionelles

System für Motion Capturing verwendet und stellt demnach ein angemessenes

Vergleichsobjekt zur Kinect dar. Ziel des Kapitels ist es, die Eigenschaften der

Kinect im direkten Vergleich mit einem professionellem System besser

einordnen zu können.

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 20

Abbildung 11 Vergleich Microsoft Kinect / Organic Motion Open Stage 2.0

Das OpenStage 2.0 System ist ein aktuelles Motion Capture System des

Herstellers Organic Motion. Das System ist für den professionellen Gebrauch

konzipiert und kann für die Animationserstellung von Filmen und Videospielen,

sowie für Bewegungsanalysen in der Sport- und Humanmedizin eingesetzt

werden. Genau wie bei der Kinect wird ein optisches, markerloses Verfahren

eingesetzt um Bewegungen zu erfassen. Abhängig von der Anzahl der

eingesetzten Kameras (8 – 24 Stück) ergibt sich ein Aufnahmefeld von bis zu

50 m². Ein weiterer großer Vorteil gegenüber der Kinect ist die

Bildwechselfrequenz der verwendeten Kameras, welche bis zu 240 fps leisten

können. Damit lassen sich selbst schnellste Bewegungen erfassen. Des

weiteren kann das System bis zu vier Personen, sowie mehrere Objekte

gleichzeitig erfassen. Der Preis von OpenStage beträgt, je nach Anzahl der

Kameras zwischen 40.000 und 80.000 $ und ist damit um ein vielfaches teurer

als die Kinect mit durchschnittlich 120 $ [22]. Angemerkt sein, das die

angegebenen Preise ausschließlich die Hardware sowie die Software, die für

einen Einsatz notwendig sind umfassen.

Zusammenfassend lässt sich festhalten, dass die Kinect bei

Bildwechselfrequenz und Aufnahmefeld klar das Nachsehen hat. Das geringere

Aufnahmefeld liegt jedoch an der Anzahl der verwendeten Kameras. Wie im

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 21

vorigen Kapitel angeklungen, ist die Verwendung mehrerer Kinect-Systeme

aktueller Forschungsgegenstand. Die Tracking Charakteristika beider Systeme

unterscheiden sich dagegen nur gering. Eine tabellarische Gegenüberstellung

der Microsoft Kinect und dem Open Stage 2.0 System wird in Abbildung 11

gegeben.

3.5 Zwischenfazit

Anhand der vorgestellten technischen Daten und Funktionsweise der Kinect,

lassen sich einige Vor- und Nachteile, insbesondere für den Anwendungsfall

Motion Capturing, identifizieren.

Zum einen bietet die Kinect mit einem durchschnittlichen Verkaufspreis von 120

€ eine preisgünstige Möglichkeit zur Nutzung einer 3D Kamera.

Kamerasysteme die auf anderen optischen Verfahren der Tiefenmessung, wie

Time of Flight beruhen, oder das in Kapitel 2.4 vorgestellte OpenStage System

sind um ein vielfaches teurer. Das in der Kinect eingesetzte Light Coding

Verfahren bietet einige Vorteile: Durch den Einsatz des Infrarot-Projektors wird

keine zusätzliche Hintergrundbeleuchtung gebraucht. Des weiteren wird keine

strukturierte Oberfläche benötigt, da das Verfahren durch den Einsatz von

strukturiertem Licht selber für eine Strukturierung sorgt.

Eine wesentliche Einschränkung der Kinect ist die mit 1,2m – 3,5m geringe

Reichweite des Sensors: Zum einen ist die Nutzungsfläche für die Erfassung

von Bewegungen auf ca. vier Quadratmeter eingeschränkt, was die

Möglichkeiten beim Motion Capturing stark einschränkt. Zum anderen nimmt die

Messgenauigkeit der Tiefenwerte aufgrund der geringen Auflösung der

Kameras mit steigendem Abstand stark ab. Untersuchungen der Kinect-

Genauigkeit von Khoshelham [8] und Pece et al. [23] ergaben, dass die

durchschnittliche Messabweichung bei einem Abstand von 1,5m zum Sensor

0,6cm betrug. Mit steigender Distanz zum Sensor beträgt die Messabweichung

bei einem Abstand von 5m zum Sensor bereits 7cm.

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 22

Ein weiteres Problem des Light Codings ist die Anfälligkeit gegenüber anderen

Infrarotquellen. Die dadurch entstehenden Interferenzen können zu fehlerhaften

Tiefeninformationen führen. Aus diesem Grund eignet sich die Kinect nicht für

die Verwendung im Freien, bei direkter Sonneneinstrahlung.

Ein generelles Problem von optischen Verfahren besteht bei verdeckten

Objekten: Hinter dem Rücken verschränkte Arme können beispielsweise nicht

vom System erkannt werden und liefern demnach auch keine Informationen in

Form von Daten. Durch die Verwendung spezieller Algorithmen (Vgl. Kapitel

4.2.2) kann das System jedoch robuster gegenüber Verdeckung gemacht

werden. Auch der gleichzeitige Einsatz mehrerer synchronisierter Kinect-

Systeme wäre denkbar, um dieses Problem zu lösen.

Zusammenfassend lässt sich aussagen, dass die Kinect aus Hardwaresicht alle

Grundvoraussetzungen mit sich bringt, um im privaten Umfeld sowie in Lehre

und Forschung als System für Motion Capturing eingesetzt zu werden.

Inwieweit die eingesetzte Software Einschränkungen mit sich bringt, wird im

nächsten Kapitel untersucht.

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 23

4 Software

Nachdem im vorigen Kapitel die hardwarespezifischen Eigenschaften der

Kinect beschrieben wurden, befasst sich dieses Kapitel mit der zur Verfügung

stehenden Software, um die Kinect an einem PC verwenden zu können. Die

Software nimmt bei optischen, markerlosen Verfahren eine entscheidende Rolle

ein. Relevante Punkte für die spätere Generierung eines Skelettmodells liegen

hier nicht direkt vor, sondern müssen erst über spezielle Algorithmen berechnet

werden. Zu diesem Zweck wird die vorhandene Software in unterschiedliche

Teilbereiche geordnet. Zu Beginn werden Gerätetreiber behandelt, die die

Ansteuerung der Hardware ermöglichen. Danach werden Frameworks und

Middleware Komponenten beschrieben, die z.B. die Erzeugung eines

Skelettmodells ermöglichen. Im Anschluss erfolgt eine Zusammenfassung der

bisherigen Ergebnisse und ein Vergleich der beiden Frameworks.

Abgeschlossen wird das Kapitel mit einer kurzen Beschreibung, verfügbarer

Werkzeuge, mit denen Motion Capturing unter Verwendung der Kinect möglich

ist.

4.1 Gerätetreiber

Wie bereits in der Einleitung erwähnt, war die Verwendung der Kinect an einem

PC von Microsoft nicht vorgesehen. Das Potential der Kinect wurde jedoch

frühzeitig von Entwicklern und Hobby-Programmierern erkannt, so dass kurz

nach Veröffentlichung der Kinect im November 2010 bereits erste Gerätetreiber

für den PC verfügbar waren.

Der erste verfügbare Treiber für die Kinect entstand im Rahmen eines

Hackerwettbewerbs und wurde von Hector Martin entwickelt. Per Reverse

Engineering entwickelte er einen unter LINUX nutzbaren prototypischen

Treiber. Dieser Treiber wurde unter der GNU General Public License von Martin

veröffentlicht. Im Rahmen des OpenKinect/Libfreenect Projektes wurde dieser

Treiber weiterentwickelt [14]. Der Treiber ermöglicht den Zugriff auf die Daten

der Infrarot-Kamera und der RGB-Kamera. Zusätzlich bietet er die Möglichkeit

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 24

den Neigungsmotor sowie die LEDs der Kinect anzusteuern. Verfügbar sind die

Treiber für Windows-, Mac OSX- und LINUX-Betriebssysteme. LibFreenect

bietet zudem Wrapper für die Programmiersprachen C, C++, C#, Java, Python,

ActionScript und Ruby an.

Ein weiterer Treiber stammt vom Hersteller Primesense und ermöglicht die

Nutzung aller Geräte die das Primesensor Referenzdesign nutzen (Vgl. Kapitel

3.2). Dazu zählen unter anderem die Kinect und das von ASUS angebotene

„Wavi Xtion14“. Der Gerätetreiber ist Bestandteil des Frameworks OpenNI und

ermöglicht die Verwendung von Infrarot-Kamera, RGB-Kamera, Neigungsmotor

und LEDs. OpenNI entstand aus einem Zusammenschluss von Primesense und

zweier anderer Unternehmen (Willow Garage15 & Sidekick16). „Ziel dieses nicht

gewinnorientierten Projektes ist die Nutzung und Förderung von Kompatibilität

und Interoperabilität natürlicher Interaktions-Geräte, -Anwendungen und

-Middleware“ [25]. Genau wie OpenKinect fällt auch OpenNI unter die GNU

General Public License und ermöglicht dementsprechend auch einen

kommerziellen Einsatz. Die Gerätetreiber sind für die Betriebsysteme LINUX

und Windows jeweils in 32bit und 64bit Versionen verfügbar. Ein Treiber für

Mac OSX wird bisher nur im Beta Status angeboten.

Der letzte Gerätetreiber, der in diesem Kapitel vorgestellt wird, stammt von

Microsoft. Er wurde im Juni 2011 im Rahmen der Veröffentlichung des Software

Development Kits (SDK) erhältlich gemacht (Vgl. Kapitel 4.2.2) und ermöglicht

die Verwendung von Infrarot-Kamera, RGB-Kamera, Neigungsmotor, LEDs und

Mikrofon-Array. Der Treiber ist ausschließlich für die Nutzung unter Windows

Betriebssystemen (x86 und x64) bestimmt und ist exklusiv für die Kinect

entwickelt worden. Andere Systeme, die das Primesense Referenzdesign

nutzen, werden nicht unterstützt. Die kommerzielle Nutzung wird von Microsoft

nicht gestattet [18].

14 ASUS Wavi Xtion: http://event.asus.com/wavi/ 15 Willow Garage: http://www.willowgarage.com/ 16 Sidekick: http://www.sidekick.co.il/

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 25

4.2 Entwicklungsumgebungen

Nachdem die Gerätetreiber für die Kinect beschrieben wurden, befasst sich

dieses Kapitel mit zur Verfügung stehenden Entwicklungsumgebungen. Die

Untersuchung konzentriert sich dabei auf das von Microsoft angebotene

Software Development Kit und das OpenNI Framework. Die Funktionalitäten

dieser beiden Entwicklungsumgebungen werden beschrieben, sowie Vor- und

Nachteile benannt. Außerdem wird die Generierung des Skelettmodells, welche

für den Motion Capturing Prozess von besonderer Wichtigkeit ist für beide

Entwicklungsumgebungen erläutert. Abschließend erfolgt ein Vergleich der

beiden vorgestellten Entwicklungsumgebungen.

4.2.1 OpenNI

OpenNI (Open Natural Interaction) ist ein Framework, welches mehrere APIs

für die Entwicklung von Anwendungen mit natürlicher Interaktion zur Verfügung

stellt. OpenNI unterstützt die Entwicklung in den Sprachen C und C# und kann

auf den Betriebssystemen Windows, LINUX und Mac OSX zum Einsatz

kommen. Die APIs ermöglichen dabei zweierlei Zweck: Zum einen wird die

Kommunikation zu den visuellen und auditiven Sensoren ermöglicht. Zum

anderen wird die Kommunikation zu den visuell- und auditiv-verarbeitenden

Middleware Komponenten erreicht [26].

Abbildung 12 Architektur OpenNI [26]

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 26

Die Architektur von OpenNI besteht aus drei unterschiedlichen Lagen (Vgl.

Abbildung 12). Die unterste Schicht beinhaltet die Hardware, welche die

visuellen und/oder auditiven Elemente der Szene über Sensoren erfasst.

Darüber befindet sich in der mittleren Schicht OpenNI. In dieser Schicht werden

Schnittstellen zur Kommunikation bereitgestellt, die sowohl mit den Sensoren

als auch mit den Middleware-Komponenten interagieren. Die Middleware-

Komponenten analysieren dabei die Daten, die vom Sensor erfasst werden.

Beispielsweise kann anhand eines Bildes, welches eine Person zeigt, die

Position der Hände der erfassten Person ermittelt werden (Vgl. Abbildung 13,

rechts). Die oberste Schicht repräsentiert Software, welche Anwendungen mit

natürlicher Interaktion implementieren.

Die Verwendung von OpenNI setzt beim Erfassen von Personen eine

Kalibrierungspose (Vgl. Abbildung 13, links) voraus. Diese „Psi Pose“, die

wenige Sekunden gehalten werden muss, nutzt OpenNI um die Koordinaten

des Skelettmodells zu berechnen. Erst nach erfolgreicher Kalibrierung ist das

Tracking für die jeweilige Person aktiviert. Neben der Berechnung des

Skelettmodells bietet OpenNI die Möglichkeit einer simplen Gestenerkennung,

Tracking der Handflächen und Zugriff auf das originale Tiefenbild (monochrom)

an [24],[26].

Abbildung 13 Kalibrierungspose mit Skelett (links); Tracking der Hand (rechts) [26]

Ebenfalls von Primesense stammt die Middleware-Komponente NITE [24].

NITE beinhaltet sowohl Algorithmen für die Identifizierung von Personen und

deren Bewegungen als auch ein Framework zur Gestenerkennung. Die

Skelettgenerierung findet jedoch im OpenNI Framework Statt. Das erstellte Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 27

Skelett umfasst dabei 20 Joints und wird auf Grundlage der analysierten

Tiefenbilder generiert (Vgl. Kapitel 3.2). NITE ist in der Lage mehrere Benutzer

zu erkennen und diese getrennt voneinander zu verarbeiten. NITE verwendet

dazu 2 Schichten: „NITE Algorithms“ und „NITE Controls“ [24]. Der „NITE

Algorithms“ Layer verarbeitet dabei die Tiefenbilder, die vom Primesensor

produziert werden. Auf diese Ergebnisse kann nun über die zur Verfügung

gestellten Schnittstellen von OpenNI der „NITE Controls“ Layer zugreifen. Der

„NITE Controls“ Layer ist eine Applikationsschicht, welcher ein Framework für

Gestenerkennung und die Verwendung von Gesten auf grafischen

Benutzeroberflächen zur Verfügung stellt. Abbildung 14 zeigt die Architektur

von OpenNI mit der NITE Middleware.

Abbildung 14 Architektur OpenNI mit NITE Middleware [24]

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 28

4.2.2 Microsoft Kinect SDK

Seit Juni 2011 bietet auch Microsoft offiziell ein Entwicklungswerkzeug für die

Kinect an. Microsoft reagierte damit auf die rasch anwachsende Anzahl von

Anwendungen, welche die Kinect als Eingabegerät nutzten und veröffentlichte

das „Kinect for Windows Software Development Kit“ (Kinect SDK). Das Kinect

SDK wird in einer überarbeiteten Beta Version (Stand: November 2011) zum

Download auf der Microsoft Seite angeboten17.

Das Kinect SDK kann ausschließlich unter Windows 7 (x86 und x64) verwendet

werden. Es unterstützt die Entwicklung in den Sprachen C++ und C#.

Zusätzlich wird die Installation des DirectX SDK18 sowie das Microsoft Speech

Platform SDK19 empfohlen, um die mitgelieferten Anwendungen wie

SkeletonTracker nutzen zu können. Die kommerzielle Nutzung wird von

Microsoft nicht gestattet [18]. Abbildung 15 zeigt die Interaktion von Hardware

und Software mit einer Anwendung durch das Kinect SDK [17].

Abbildung 15 Hardware und Software Interaktion mit einer Anwendung [17]

Im Lieferumfang des Kinect SDK's befinden sich neben Gerätetreibern die NUI

API, welche eine Reihe von Schnittstellen und Werkzeugen zur Verfügung

stellt. Die genaue Architektur des Kinect SDK's wird in Abbildung 16 dargestellt:

In der untersten Schicht befinden sich die Hardwarekomponenten der Kinect,

bestehend aus Neigungsmotor, USB Hub sowie den auditiven und visuellen

Sensoren. Darüber befinden sich die Gerätetreiber, welche den Zugriff auf die

Sensoren der Kinect ermöglichen. Zusätzlich wird die Verwendung zweier

17 Kinect for Windows: http://www.microsoft.com/en-us/kinectforwindows/ 18 Microsoft DirectX SDK: http://msdn.microsoft.com/en-us/directx/aa93778119 Microsoft Speech Platform SDK: http://www.microsoft.com/download/en/details.aspx?id=24003

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 29

Kinects für eine Anwendung durch einen Nummerierung der angeschlossenen

Geräte ermöglicht. In der darüber liegenden Schicht befindet sich die NUI API,

welche die Rohdaten der Sensoren abruft und die Kinect steuert. Ebenfalls in

dieser Schicht befindet sich ein DirectX Media Object (DMO) Codec für das

Mikrofon-Array. Dieser Codec ermöglicht die Lokalisation von Audioquellen

durch das Mikrofon-Array [19][20]. In der obersten Schicht befinden sich die

eigentlichen Anwendungen.

Die NUI API stellt das Kernstück des Kinect SDK's dar und übernimmt

grundlegende Managementfunktionen der verfügbaren Bildströme und Geräte.

Darunter zählt der Zugriff auf die Kinect Sensoren, die an dem PC

angeschlossen sind, sowie der Zugriff auf RGB-Bilder und Tiefenbilder. Des

weiteren werden die verarbeiteten RGB- und Tiefenbilder geliefert um das

Skelettmodell zu erfassen. Im Gegensatz zu OpenNI ist beim Kinect SDK keine

Kalibrierungspose notwendig um mit dem Tracken des Skelettmodells zu

beginnen. Microsoft verwendet einen Algorithmus welcher es erlaubt, in

Echtzeit anhand der Analyse der Tiefenbilder die Haltung der Person zu

bestimmen [29].

Abbildung 16 Architektur des Kinect for Windows SDK Beta [17]

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 30

Der Ansatz zur Bestimmung der Haltung der Person beruht auf der

Umwandlung des komplizierten „Pose Estimation Problems“ (Vgl. [5] und [21])

in ein einfacheres Klassifizierungssystem für jeden Pixel. Ziel ist es im ersten

Schritt einzelne Körperteile (Kopf, Schulter, Oberarm, Unterarm, etc.) zu

identifizieren. Um für jedes Pixel eine Annahme darüber zu treffen in welchem

Körperteil es gerade liegt, wird eine große Anzahl von Trainingsdaten genutzt.

Diese Motion Capture Datenbank umfasst über 100.000 Posen. Um

Redundanzen zu vermeiden, liegen 2 vergleichbare Posen niemals näher als

5cm zusammen [29]. Die einzelnen Körperteile der Trainingsdaten (31

verschiedene) werden klassifiziert und durch unterschiedliche Einfärbungen

gekennzeichnet (Vgl. Abbildung 17). Die eingefärbten Körpermodelle und die

dazugehörigen Tiefenbilder werden dann dem Klassifizierungssystem zur

Verfügung gestellt. Über das Klassifizierungssystem, ein Randomized Tree [2]

[12], wird nun entschieden zu welchem Körperteil das jeweilige Pixel gehört.

Mittels der errechneten Informationen durch die einzelnen Körperteile des

Klassifizierungssystems, können nun Rückschlüsse auf die Position der

einzelnen Joints im Raum getroffen werden. Diese Informationen stellen die

Grundlage für das finale Skelettmodell dar [29].

Abbildung 17 Vorverarbeitung des Skelettmodells beim Kinect SDK [29]

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 31

4.2.3 Vergleich OpenNI / Microsoft SDK

Nachdem die vorigen Kapitel im Detail auf die Möglichkeiten der Entwicklungs-

umgebungen eingegangen sind, wird in diesem Kapitel ein Vergleich zwischen

dem OpenNI Framework und dem Kinect SDK gezogen. Dazu werden

angefangen bei der Installation die Punkte Hardware-Unterstützung, Tracking

von Personen sowie Funktionalitäten und Besonderheiten der

Entwicklungsumgebungen gegenübergestellt.

Die Installation des Kinect SDK's erfolgt problemlos über einen einzelnen

Installer. In diesem sind alle notwendigen Treiber und Bibliotheken enthalten.

Um die mitgelieferten Beispielapplikationen nutzen zu können, muss zusätzlich

das DirectX SDK installiert werden. Das Kinect SDK ist exklusiv für Windows 7

erhältlich. Als Programmiersprachen können C# oder C++ verwendet werden.

Die Installation von OpenNI ist gegenüber dem Kinect SDK etwas komplizierter.

Um den vollen Funktionsumfang der Kinect mit OpenNI nutzen zu können,

müssen mehrere Komponenten installiert werden. Neben den Gerätetreibern,

müssen OpenNI, NITE Middleware sowie OpenNI Hardware Binaries jeweils

einzeln installiert werden. Die Installation der NITE Middleware erfordert

zusätzlich einen Produktschlüssel20, der jedoch frei verfügbar ist. OpenNI kann

unter Windows sowie unter Linux und Mac OSX verwendet werden. Als

Programmiersprachen können C oder C++ verwendet werden. Zusätzlich

existieren eine Reihe von Wrappern, die die Programmierung in Java unter

OpenNI ermöglichen. Der Vollständigkeit sei erwähnt, dass die simultane

Installation von OpenNI und dem Kinect SDK nicht möglich ist. Aufgrund der

unterschiedlichen Gerätetreiber, die OpenNI und das Kinect SDK nutzen, kann

immer nur eine Entwicklungsumgebung verwendet werden.

Das Kinect SDK bietet Zugriff auf alle Sensoren und Kameras. Des weiteren ist

die Ansteuerung des Kinect Motors, zur Neigung der Sensorleiste, sowie die

Verwendung des Mikrofon-Arrays möglich. OpenNI bietet lediglich Zugriff auf

die Daten von Infrarot-Kamera, Infrarot-Sensor sowie RGB-Kamera. Die

Ansteuerung des Kinect Motors sowie des Mikrofon-Arrays ist derzeit noch nicht

möglich. Um dennoch Audio unter OpenNI nutzen zu können ist es möglich, 20Durch die Überarbeitung der Primesense Webseite sind einige Ressourcen derzeit noch nicht wieder einsehbar (Stand: 17.10.2011) - Schlüssel: 0KOIk2JeIBYClPWVnMoRKn5cdY4=

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 32

anstelle der von Primesense angebotenen Gerätetreiber, die Gerätetreiber des

Kinect SDK's zu verwenden (CL NUI21). Diese Methode eignet sich jedoch

ausschließlich für die Verwendung unter Windows 7, da die CL NUI Treiber

exklusiv für Windows 7 angeboten werden.

Bei der Erfassung von Personen bietet das Kinect SDK von Microsoft eine

Reihe von Vorteilen gegenüber OpenNI. Ein Vorteil des Kinect SDK's ist die

nicht benötigte Kalibrierungspose zum Starten des Tracking-Vorgangs. OpenNI

benötigt hierzu, wie in Kapitel 4.2.1 angesprochen, eine PSI ähnliche

Kalibrierungspose der Person, um das Skelettmodell zu berechnen. Des

weiteren hat sich das Skelettmodell unter dem Kinect SDK als sehr robust

gegenüber Verdeckung erwiesen. Bei kurzzeitiger Verdeckung durch fremde

Objekte oder eigene Körperteile (Arm hinter Rücken verschränkt) bleibt das

Skelettmodell konsistent. Beispielsweise wird eine schnelle 360° Drehung um

die eigene Körperachse problemlos vom Kinect SDK erkannt und dargestellt.

OpenNI hat demgegenüber bei Verdeckung des öfteren Probleme die Position

der einzelnen Joints korrekt darzustellen. Die verdeckten Joints werden

kurzzeitig an fehlerhaften Positionen dargestellt, was sich in einem „Flackern“

der betroffenen Joints bei der Darstellung des Skelettmodells auswirkt. Beide

Entwicklungsumgebungen sind in der Lage, den ganzen Körper der erfassten

Person als Skelettmodell darzustellen. OpenNI bietet zusätzlich eine API an, die

es ermöglicht die Handflächen der getrackten Person zu verfolgen. Dies ist vor

allem bei der Entwicklung von gestenbasierten Anwendungen von Vorteil. Die

Möglichkeit einzelne Finger von Personen zu erfassen wird aufgrund der

festgelegten Anzahl von 20 Joints pro Person von keiner der beiden

Entwicklungsumgebungen unterstützt. Die Hände werden dabei jeweils von

einem Joint repräsentiert.

Zusammenfassend lässt sich feststellen, dass beide Entwicklungsumgebungen

eine Reihe von Vor- und Nachteilen besitzen. Das Kinect SDK von Microsoft

besitzt durch den verwendeten Prädiktionsalgorithmus klare Vorteile bei der

Robustheit des Skelettmodells. Der zweite große Vorteil besteht in der

Unterstützung von Spracherkennung durch das Multi-Array-Mikrofon. Dadurch

sind multimodale Anwendungen, die visuelle sowie auditive Eingaben des 21CL NUI Download: http://codelaboratories.com/nui

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 33

Benutzers erkennen und verarbeiten, realisierbar. OpenNI sollte immer dann

verwendet werden, wenn es um die Realisierung von kommerziellen

Anwendungen oder Produkten geht. Des weiteren besteht ein großer Vorteil

von OpenNI in der Plattformunabhängigkeit und der Möglichkeit über Wrapper

die Kinect in Anwendungen wie Unity3D22 oder im Browser nutzen zu können.

Die Kombination von OpenNI und NITE bietet zudem eine Reihe von

Möglichkeiten bei der Entwicklung von Anwendungen, die auf gestenbasierte

Eingaben setzen. Ein tabellarischer Überblick der zusammengefassten

Ergebnisse wird in Abbildung 18 gegeben.

Abbildung 18 Vergleich Kinect SDK / OpenNI

22 Webseite: http://unity3d.com/ Entwicklungsumgebung für interaktive 3D Grafik-Anwendungen

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 34

4.3 Motion Capturing mit der Kinect

Dieses Kapitel liefert ein kurzen Überblick verfügbarer Werkzeuge, mit deren

Hilfe die Erfassung und Speicherung von Motion Capture Daten unter

Verwendung der Kinect möglich ist. Auf eine genaue Untersuchung der

aufgeführten Werkzeuge wurde im Rahmen der vorliegenden Arbeit verzichtet.

• Brekel Kinect: eine komfortable Möglichkeit Echtzeit Motion Capturing

durchzuführen, wird unter dem Namen „Brekel Kinect“ angeboten. Das

von Jasper Brekelman entwickelte Werkzeug nutzt OpenNI und NITE um

3D Objekte zu erfassen und anschließend als BVH Datei zu exportieren.

Die Kernfunktionalität des Werkzeugs besteht im Streamen des

erfassten Skelettmodells in Motionbuilder. Die Erfassung geschieht dabei

in Echtzeit. Die Nutzung des Werkzeugs ist kostenlos [3].

• BVH-Export: Vom japanischen Entwickler Actinia Software wird ein

weiteres Werkzeug angeboten um Bewegungen zu erfassen: BVH-

Export. Das Tool wird in zwei unterschiedlichen Ausführungen

angeboten: SkeletonViewerToBVH (für Kinect SDK) und

NiUserTrackerToBVH (für OpenNI). Die Erfassung der Bewegungen

geschieht in Echtzeit über die von OpenNI/Kinect SDK bereitgestellten

SkeletonViewer und ermöglicht einen anschließenden Export der

aufgenommen Bewegungen in das BVH Datenformat [1]. Die Nutzung

des Tools ist ebenfalls kostenfrei.

• iPiSoft Desktop Motion Capture: Vom Entwickler iPiSoft23 wird die

Software „iPi Studio“ angeboten. Die Software basiert auf einer Version

von OpenNI, verwendet laut Herstellerangaben aber proprietäre

Algorithmen, um eine Verbesserung des Erfassungsgenauigkeit zu

erreichen. Die Software bietet die Möglichkeit zwei Kinects gleichzeitig

zu nutzen. Im Gegensatz zu „Brekel Kinect“ oder den BVH-Export Tools,

wird der Tracking Vorgang nicht in Echtzeit unterstützt. Die Software ist

kostenpflichtig. Eine dreißig tägige Testversion wird jedoch angeboten

[6].

23 IpiSoft: http://www.ipisoft.com/

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 35

5 Fazit und Ausblick

Ziel der Ausarbeitung war eine Untersuchung, inwieweit sich die Kinect als

Motion Capturing System am PC eignet. Dazu wurden im ersten Schritt die

Hardware und Funktionsweise der Kinect untersucht. Darauf aufbauend wurden

im zweiten Schritt zwei Entwicklungsumgebungen vorgestellt und auf

Möglichkeiten und Schwachstellen analysiert. Die Ergebnisse sollen an dieser

Stelle abschließend zusammengefasst werden.

Als Ergebnis der Hardwareuntersuchung kann festgehalten werden, dass die

Kinect als System für Motion Capturing, abhängig vom Anwendungsgebiet,

mehr oder weniger gut geeignet ist. Die Einschränkungen liegen vor allem an

zwei Aspekten: der Bildwechselfrequenz und dem Aufnahmefeld. Die

Bildwechselfrequenz ist mit 30fps sehr gering. Für den Motion Capturing

Vorgang hat dies zur Folge, dass schnelle Bewegungen meist nur unzureichend

erfasst werden. Die Konsequenz ist ein hoher zeitlicher Aufwand in der

anschließenden Post-Produktion. Die zweite große Einschränkung der

Hardware ist das ca. 4m² kleine Aufnahmefeld, welches dem Akteur zur

Verfügung steht. Das Repertoire der möglichen Bewegungen ist damit stark

eingeschränkt. Komplexe Abläufe, wie beispielsweise ein Salto Mortale, können

mit einer einzelnen Kinect nicht erfasst werden. Die bereits angesprochene

Lösung dieses Problems liegt in der Verwendung mehrerer, synchronisierter

Kinect-Systeme durch spezielle Software. Damit würde zudem das Problem der

Verdeckung gelöst werden.

Die Software spielt bei optischen, markerlosen Motion Capturing Verfahren eine

große Rolle. Mit dem Kinect SDK und OpenNI wurden zwei

Entwicklungsumgebungen vorgestellt, die die Verwendung der Kinect am PC

ermöglichen. Für den Motion Capturing Prozess stand dabei vor allem die

Generierung des Skelettmodells im Vordergrund. Im Vergleich wurde deutlich,

dass das Kinect SDK mit den verwendeten Prädiktionsalgorithmen genauere

Trackingergebnisse liefert. Die Stärken von OpenNI liegen mehr im Bereich der

gestenbasierten Interaktion. Des weiteren konnte beobachtet werden, dass die

Latenzzeit beim Echtzeit Capturing unter dem Kinect SDK etwas geringer ist als

unter OpenNI. Die Anforderungen an zukünftige Softwarelösungen liegen zum

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 36

einen in der Möglichkeit mehrere Kinect Systeme synchron nutzen zu können

und zum anderen in Algorithmen, die die Erfassungsgenauigkeit allgemein

verbessern.

Abschließend soll festgehalten werden, dass die Kinect für den professionellen

Einsatz als Motion Capturing System nicht geeignet ist. Das geringe

Aufnahmefeld von ca. 4m² sowie die geringe Bildwechselfrequenz von maximal

30 fps stellen für einen professionellen Einsatz zu große Einschränkungen dar.

Der geringe Preis, Portabilität, wenig Kalibrierungsaufwand und die Möglichkeit

Motion Capturing im eigenen Wohnzimmer durchführen zu können, macht die

Kinect für freischaffende Mitarbeiter, kleinere Entwickler und für den Bereich der

Forschung und Lehre dennoch interessant. Der mittlerweile angekündigte

Nachfolger der Kinect [38] (dessen genaue Eigenschaften noch nicht bekannt

gegeben wurden) könnte durch verbesserte Sensoren neue Möglichkeiten,

insbesondere im Bereich Motion Capture, bieten.

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 37

Literaturverzeichnis

[1] Actinia Software (2011) , BVH Export , http://actinia-software.com/actinia_software_download.html , Stand: 7.10.2011

[2] Amit, Yalit and German, Donald (1996) , Shape Quantization and Recognition with Randomized Trees , http://galton.uchicago.edu/~amit/Papers/shape_rec.pdf , Stand: 18.10.2011

[3] Brekelman, Jasper (2011) , Brekel Kinect , http://www.brekel.com/ , Stand: 7.10.2011

[4] Freedman, Barak, et al. (2008) , Depth Mapping Using Projected Patterns , http://www.freepatentsonline.com/20080240502.pdf , Stand: 05.08.2011

[5] Garcia, Javier, et al. (2009) , Range Mapping Using Speckle Decorrelation , http://www.freepatentsonline.com/7433024.pdf , Stand: 07.08.2011

[6] IPISoft (2011), IPI Desktop Motion Capture, http://www.ipisoft.com/index.php , Stand: 7.10.2011

[7] Izadi, Shahram, et al. (2011), KinectFusion: Realtime 3D Reconstruction and Interaction using a moving depth camera , http://research.microsoft.com/pubs/155416/kinectfusion-uist-comp.pdf , Stand: 13.12.2011

[8] Khoshelham, K. (2011) , Accuracy Analysis of Kinect Depth Data , http://www.isprs.org/proceedings/XXXVIII/5-W12/Papers/ls2011_submission_40.pdf , Stand: 15.10.2011

[9] Kitagawa, Midori and Windsor, Brian, MoCap for Artists – Workflow and Techniques for Motion Capture, ISBN-13: 978-0240810003

[10] Klug, Brian, Microsoft Kinect – The Anand Tech Review , http://www.anandtech.com/show/4057/microsoft-kinect-the-anandtech-review/2 , Stand: 22.10.2011

[11] Kreylos, Oliver, Kinect Hacking , http://idav.ucdavis.edu/~okreylos/ResDev/Kinect/ , Stand: 07.08.2011

[12] Lepetit, Vincent, et al. (2010) , Randomized Trees for Real Time Key Point Recognition , http://cvlab.epfl.ch/~lepetit/papers/lepetit_cvpr05.pdf , Stand: 03.09.2011

[13] Mangharam, Rahul (2011) , Kinect Teardown ,http://www.seas.upenn.edu/~rahulm/Shared/Slides/Teardown-01-Kinect.pdf , Stand: 15.10.2011

[14] Martin, Hector (2011), OpenKinect Resources , https://github.com/OpenKinect/libfreenect , Stand: 21.08.2011

[15] Microsoft (2010) , http://www.microsoft.com/de-de/default.aspx , Stand: 26.10.2011

[16] Microsoft (2010) , Kinect Manual , http://download.microsoft.com/download/0/C/2/0C21CEBE-0031-489E-966E-513E6070995A/kinect_en_fr-FR_de-DE_it-IT_es-ES.pdf , Stand: 05.08.2011

[17] Microsoft (2011) , Kinect for Windows Programming Guide , http://kinectforwindows.org/documents/Programming_Guide.pdf , Stand 05.08.2011

[18] Microsoft (2011) , Kinect for Windows SDK EULA , http://kinectforwindows.org/download/EULA.htm , Stand: 05.08.2011

[19] Microsoft (2011) , Kinect Speech Walkthrough , http://kinectforwindows.org/documents/Speech_Walkthrough.pdf , Stand: 05.08.2011

[20] Microsoft (2011) , Microfon Array Echo Cancellation Walkthrough , http://kinectforwindows.org/documents/MicArrayEchoCancellation_Walkthrough.pdf , Stand: 05.08.2011

[21] Microsoft (2011) , Skeletal Viewer Walkthrough , http://kinectforwindows.org/documents/SkeletalViewer_Walkthrough.pdf , Stand: 05.08.2011

[22] Organic Motion, Open Stage 2.0 , http://www.organicmotion.com/solutions/openstage , Stand: 12.11.2011

[23] Pece, Fabrizio , et al. (2011) , Three Depth Camera Technologies Compared , http://www.cs.ucl.ac.uk/staff/F.Pece/page9/files/abstract.pdf , Stand: 07.08.2001

[24] Primesense (2010) , Prime Sensor NITE 1.3 Controls Programmers Guide , http://andrebaltazar.files.wordpress.com/2011/02/nite-controls-1-3-programmers-guide.pdf , Stand: 23.09.2011

[25] Primesense (2011) , http://www.primesense.com/ , Stand: 21.09.2011

[26] Primesense (2011) , OpenNI User Guide , http://www.openni.org/images/stories/pdf/OpenNI_UserGuide_v4.pdf , Stand: 13.08.2011

[27] Primesense, The Primesensor Reference Design , http://primesense.360.co.il/files/FMF_2.PDF , Stand: 23.09.2011

[28] Reichinger, A. (2011), Kinect Pattern Uncovered, http://azttm.wordpress.com/2011/04/03/kinect-pattern-uncovered/ , Stand: 21.08.2011

Florian Gebauer | WS 11/12 | Projektarbeit

Motion Capturing unter Verwendung der Microsoft Kinect 38

[29] Shotton, Jamie, et al. (2011) , Real Time human Pose Recognition from a single Depth Images, http://research.microsoft.com/apps/pubs/?id=145347 , Stand: 05.10.2011

[30] Shpunt, Alexander, et al. (2009) , Optical Designs for Zero Order Reduction , http://www.freepatentsonline.com/20090185274.pdf , Stand: 07.08.2011

[31] Shpunt, Alexander, et al. (2010) , Depth Mapping Using Multi Beam Illumination , http://www.freepatentsonline.com/20100020078.pdf , Stand: 07.08.2011

[32] Wikipedia (2011) , Rotoskopie , http://de.wikipedia.org/wiki/Rotoskopie , Stand:13.10.2011

[33] Wikipedia (2011), Bandpass , http://de.wikipedia.org/wiki/Bandpass , Stand: 12.11.2011

[34] Wikipedia (2011), Binning , http://de.wikipedia.org/wiki/Binning , Stand:12.11.2011

[35] Wikipedia (2011), CMOS , http://de.wikipedia.org/wiki/Complementary_Metal_Oxide_Semiconductor , Stand: 12.11.2011

[36] Wikipedia (2011), Eadeward Muybridge , http://de.wikipedia.org/wiki/Eadweard_Muybridge , Stand 02.11.2011

[37] Wikipedia (2011), Time of Flight Kamera , http://de.wikipedia.org/wiki/TOF-Kamera, Stand: 05.10.2011

[38] WinFuture.de (2011) , Kinect Nachfolger soll von den Lippen lesen können , http://winfuture.de/news,66847.html , Stand: 15.12.2011

Florian Gebauer | WS 11/12 | Projektarbeit