motion capturing unter verwendung der microsoft kinect · studiengang medieninformatik master...
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