Avatar: Depth-based Multi-Camera Motion Capturing
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Christian Brümmer Betreuer Kai Berger Erstgutachter Prof. Dr.-Ing. Marcus Magnor Zweitgutachter Prof. Dr.-Ing. Friedrich M. Wahl Avatar: Depth-based Multi-Camera Motion Capturing Bachelor-Arbeit 10. Oktober 2011 Institut für Computergraphik, TU Braunschweig
Eidesstattliche Erklärung Hiermit erkläre ich an Eides statt, dass ich die vorliegende Arbeit selbständig verfasst und keine anderen als die angegebenen Hilfsmittel verwendet habe. Braunschweig, 10. Oktober 2011 Christian Brümmer
Abstract Motion Capturing provides the possibility to transfer human motions to a computer related format. The recorded animation data can be processed by a computer, be transfered to 3D models for computer games and animated movies or finally used to move robot joints. This work is about the recording and processing of animation data through depth-based images of RGB-D ca- meras. Therefor calibrated multiple-view image data are used to project the 3d point-cloud of a person. The bounding boxes of single body parts from a parametrized 3D model are used to determine and maximize the overlapping with the 3d point-cloud by rotation and translation. During the process the anthropometrical limitations can be considered. The resulting motion infor- mation can finally be saved as a BVH-file and transfered to a multiple-joint robot arm. That transference involves another diploma thesis named Avat- ar: Robotersteuerung anhand von menschlichen Bewegungsdaten by Kirill Sadovnichy [Sad11] for the Institute for Robotics and Process Control at Braunschweig University of Technology.
Zusammenfassung Motion Capturing ermöglicht die Übertragung menschlicher Bewegungen in ein für Computer lesbares Format. Die aufgenommenen Bewegungsdaten können per Computer bearbeitet, auf 3D-Modelle für Computerspiele und Animationsfilme übertragen oder schließlich genutzt werden, um Roboter zu bewegen. Diese Arbeit beschäftigt sich mit der Aufnahme und Verarbei- tung von Bewegungsinformationen mit Bildern von Tiefenkameras. Dafür werden Videodaten mehrerer kalibrierter Kameras genutzt, um eine 3D- Punktwolke eines Menschen zu generieren. Die Bounding-Boxen einzelner Körperteile eines parametrisierten 3D-Modells werden verwendet, um eine Überdeckung mit der 3D-Punktwolke festzustellen, zu bewerten und durch Rotation und Translation zu maximieren. Hierbei kann die anthropometri- schen Einschränkungen der menschlichen Bewegung berücksichtigt werden. Die resultierenden Bewegungsinformationen werden anschließend in einem BVH-Dateiformat gespeichert und an einen mehr-gelenkigen Roboterarm übertragen. Diese Übertragung wird in einer seperaten Diplomarbeit mit dem Titel Avatar: Robotersteuerung anhand von menschlichen Bewegungs- daten von Kirill Sadovnichy [Sad11], am Institut für Robotik und Prozess- informatik der TU Braunschweig, bearbeitet.
Inhaltsverzeichnis 1 Einführung 1 1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Ziele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4 Gliederung der Arbeit . . . . . . . . . . . . . . . . . . . . . . 2 2 Stand der Technik 5 2.1 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Bildbasiertes Motion Capturing . . . . . . . . . . . . . . . . . 6 2.3 Tiefenbildbasiertes Motion Capturing . . . . . . . . . . . . . 7 3 Kinect 9 3.1 Ausstattung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.2 Datenströme . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4 Aufnahmeumgebung 13 4.1 Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.2 Multiplexing . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.3 Kalibrierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 4.4 Aufnahme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.5 Synchronisierung . . . . . . . . . . . . . . . . . . . . . . . . . 16 5 Motion-Capturing 17 5.1 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.2 Vorverarbeitung . . . . . . . . . . . . . . . . . . . . . . . . . 18 5.2.1 Segmentierung der Silhouette . . . . . . . . . . . . . . 18 5.2.2 Projektion der visuellen Hülle . . . . . . . . . . . . . . 18 5.3 Initiierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 5.4 Bewertung der Überdeckung . . . . . . . . . . . . . . . . . . . 23 5.5 Positionskorrektur . . . . . . . . . . . . . . . . . . . . . . . . 26 5.6 Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.6.1 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . 26 5.6.2 Optimierung . . . . . . . . . . . . . . . . . . . . . . . 29
Abbildungsverzeichnis 3.1 Darstellung der Kinect und Kennzeichnung der technischen Ausstattung. Bild vgl. http://gadgetinformation.blogspot. com/, accessed on September 26th 2011 . . . . . . . . . . . . 9 3.2 Schematische Darstellung der Entstehung von Infrarot-Schatten in Tiefenbildern. . . . . . . . . . . . . . . . . . . . . . . . . . 11 4.1 Schematische Darstellung der Aufnahmeumgebung und Ka- merapositionierung. . . . . . . . . . . . . . . . . . . . . . . . 13 4.2 Gegenüberstellung von Tiefenbildern bei Tageslicht. . . . . . 14 4.3 Schachbrettkalibrierung für die Freiraumaufnahmen [BRB+ 11]. 15 5.1 Segmentierung der menschlichen Silhouette aus den Tiefen- karten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.2 Projektion der segmentierten Silhouette. . . . . . . . . . . . . 20 5.3 Initiierung: Darstellung der Rotations- und Skalierungspa- ramter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5.4 Initiierung: Interferenzen. . . . . . . . . . . . . . . . . . . . . 22 5.5 Initiierung: Gegenüberstellung von Kameraperspektiven. . . . 22 5.6 Initiierung: Positionierung des Skelettmodells. . . . . . . . . . 23 5.7 Überdeckung: Darstellung des 3D-Modells und den Bounding- Boxen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5.8 Überdeckung: Darstellung einer Axis-Aligned-Bounding-Box. 25 5.9 Überführung der 3D-Punkte vom globalen- in das lokale Ko- ordinatensystem der OBB. . . . . . . . . . . . . . . . . . . . . 25 5.10 Darstellung der Positionskorrektur anhand eines Beispiels. . . 26 5.11 Hierarchie des parametrisierten Skelettmodells. Dargestellt mit Hilfe der Mocap toolbox für Matlab [D.09]. . . . . . . . . 27 5.12 Ablauf des Trackings . . . . . . . . . . . . . . . . . . . . . . . 28 5.13 Überdeckung: Markierung bereits genutzter Punkte. . . . . . 28 6.1 Ergebnis der Initiierung von Aufnahme 1. . . . . . . . . . . . 31 6.2 Ergebnis der Initiierung von Aufnahme 2. . . . . . . . . . . . 32 6.3 Konfiguration für das Motion-Capturing. . . . . . . . . . . . . 32 6.4 Aufnahme 1. Ausgestreckte Arme vor dem Körper. . . . . . . 34
ABBILDUNGSVERZEICHNIS xii 6.5 Aufnahme 2. Verschränkung der Arme über dem Kopf. . . . . 35
Kapitel 1 Einführung 1.1 Motivation Motion Capturing ist eine Technik, die es ermöglicht bipedale und multi- pedale Bewegungen ( Motion’”) aufzunehmen ( Capturing“) und auf einen ” ” Computer zu übertragen. Die wohl populärste Anwendung findet Motion Capturing innerhalb der Unterhaltungsindustrie in dem Bereich der Ent- wicklung von Computerspielen und Animationsfilmen. Die Animierung virtueller Avatare auf konventionelle Art und Weise ist zeit- aufwändig und daher kostspielig. Zudem sind traditionell, manuell erzeugte Animationen durch Keyframing den natürlichen Bewegungen qualitativ un- terlegen. Hier bietet Motion Capturing eine Alternative, die es ermöglicht echte, reale Bewegungen auf computergenerierte Figuren abzubilden. Die- ser Technik sind jedoch auch Grenzen gesetzt. Besonders schwierig ist zur Zeit die Aufnahme und Analyse von Fingerbewegungen und Gesichtszügen ( Performance Capture’”). Hierfür wird Motion Capturing und Keyframing ” häufig gemeinsam verwendet. Ein sehr prominentes Beispiel ist die animierte Figur Gollum“ aus der Verfilmung von ”Der Herr der Ringe”[TC09]. Weta ” Digital animierte diese Kreatur mit Hilfe von Motion Capturing anhand der Bewegungen des Schauspielers Andy Serkis [Hig06]. Es können aber auch andere Industriezweige von dieser Technik profitieren. In der Serienfertigung von Autoteilen kommen mehr-gelenkige Roboterarme zum Einsatz, um schnell und präzise Arbeitsabläufe zu automatisieren. Die- se Bewegungsabläufe müssen aufwändig einzeln programmiert und getestet werden. Hier würde es sich anbieten Robotern Bewegungen einfach vorzu- machen, um sie ihnen beizubringen.
1.2 Ziele 2 1.2 Ziele In einem gemeinschaftliche Projekt der Institute für Robotik und Prozessin- formatik (IRP) und Computergraphik (ICG) soll ein mehr-gelenkiger Robo- terarm als virtueller Prototyp entworfen und von einem Benutzer gesteuert werden. Die hierfür benötigten Bewegungsinformationen sollen jedoch nicht durch Eingabegeräte übermittelt, sondern einfach abgefilmt werden. Aufbauend auf einer vorangegangenen Arbeit von Adrian Wierzbowski mit dem Titel Avatar: Control your Robot [Wie11], welche den Motion Captu- ring Ansatz auf Basis von einfachen Video-Kameras verfolgte, soll jetzt mit Hilfe mehrerer Tiefenkameras diese Umsetzung weitergeführt werden. Das zuvor entwickelte Tool wurde dabei beibehalten und an die neuen Anforde- rungen angepasst und erweitert. 1.3 Überblick Als Eingabedaten benötigt das Tool für das Motion Capturing einen Vi- deodatensatz von Tiefenbildern, Kalibrierungsinformationen der Kameras sowie ein parametrisiertes Skelettmodell und eine damit verbundene, mo- dellierte Körperhülle. Die Aufnahmen der Videodaten für diese Arbeit er- folgte mit der kostengünstigen Bewegungssteuerung Kinect für die Xbox 360 [Mic11a], die von Microsoft und PrimeSense entwickelt wurde. Anhand der Tiefenkarten erzeugt das Tool zuerst Masken der aufgenomme- nen Person. Im nächsten Schritt werden die Silhouetten der Person aus allen Kameras als 3D-Punktwolke, der visuellen Hülle, in einen 3D-Raum proji- ziert. Die Bewegung der Person wird anhand dreidimensionaler Überdeckung der visuellen Hülle mit den Bounding-Boxen einzelner Körperteile des Mo- dells auf das Skelett abgebildet. Die Abbildung der Animation entsteht durch die Optimierung der Überdeckung mittels Rotation und Translation einzel- ner Körperteile. Aus der Wiederholung dieses Vorganges, für jedes Bild aus dem Videoda- tensatz, resultiert eine Keyframe-Sequence, die im Biovision Hierarchical motion capture data Format (BVH) abgespeichert wird. 1.4 Gliederung der Arbeit In Kapitel 2 wird ein Einblick in den Stand der Technik gegeben, danach folgt eine Zusammenfassung technischer Details und Funktionsweisen der Kinect in Kapitel 3. Der Aufbau und die Umgebung für die Aufnahmen sowie eine Methode für Multiplexing und Kamera-Kalibrierung wird in Ka- pitel 4 beschrieben. Anschließend wird in Kapitel 5 das entwickelte Motion- Capturing-Verfahren, von der Initiierung und den Korrekturalgorithmen bis
3 Einführung zum Tracking, vorgestellt. Hinterher folgt eine Zusammenfassung der Resul- tate, in Form der gewonnen Bewegungsinformationen, in Kapitel 6. Abschlie- ßend wird in Kapitel 7 aus den erarbeiteten Ergebnissen ein Fazit gezogen.
1.4 Gliederung der Arbeit 4
Kapitel 2 Stand der Technik 2.1 Überblick Seit vielen Jahren gehört die Animierung von virtuellen Figuren zu den großen Herausforderungen in der Computergrafik. Grundsätzlich unterschei- det man zwischen optischen und nicht optischen Verfahren für Motion Cap- turing. Die optischen Verfahren versuchen anhand von Sensoren, durch Triangulie- rung, die Positionen und Ausrichtungen aller Gelenke zu ermitteln. Hierbei werden häufig mehrere kalibrierte Kameras genutzt, um möglichst genaue und stabile Informationen zu erhalten. Man unterscheidet zwischen aktiven und passiven, optischen Verfahren. Ein Beispiel für ein typisches passives Verfahren ist der Einsatz von Reflekto- ren die Licht, von in der Nähe der Kameras befindlichen Quellen, reflektieren und so eine automatische Lokalisierung auf den Videobildern ermöglichen. Hier wird als Informationsquelle nur das einfache Videomaterial verwendet. Der Einsatz von LEDs anstelle von Reflektoren ist ein Beispiel für aktive Marker und wird in der Filmindustrie, für Aufnahmen an großen Sets, ein- gesetzt [Men00]. Für das sogenannte markerlose Motion-Capturing werden keine Reflektoren benutzt, sondern wichtige Bewegungsinformationen ohne weitere Hilfsmit- tel, aus einer Bildquelle, extrahiert. Als Aufnahmegerät wird hier etwa eine Time-Of-Flight Kamera verwendet [GPKT10], welche Signale in die auf- zunehmende Umgebung schickt, um Tiefeninformationen zu gewinnen. Ein Nachteil dieser Technik ist die geringe Auflösung und Bildfrequenz der Tie- fenbilder. Diese Methode wird zu den aktiven, optischen Verfahren gezählt. Lange Zeit war der finanzielle Aufwand für Tiefenkameras vergleichsweise hoch, doch mittlerweile gibt es günstige Bewegungssteuerungen für Spiele- konsolen im Endverbrauchermarkt, die mit Hilfe von Infrarot-Emitter und -Sensoren Tiefenkarten erzeugen können. Diese Arbeit profitiert von dieser
2.2 Bildbasiertes Motion Capturing 6 Entwicklung und nutzt als RGB-D Kamera Microsofts Bewegungssteuerung Kinect für die XBox 360 [Mic11a]. Nicht optische Verfahren für Motion Capturing verwenden beispielsweise Ganzkörperanzüge und Gyroskope [Men00] als Detektoren, um Bewegun- gen zu erfassen. Man unterscheidet hier zwischen elektromagnetischen und mechanischen Aufnahmeverfahren, auf die im Rahmen dieser Arbeit jedoch nicht weiter eingegangen wird. Die hier genannten Systeme sollen ohne An- spruch auf Vollständigkeit einen kleinen Einblick in den Stand der Technik geben. 2.2 Bildbasiertes Motion Capturing Einen umfangreichen Überblick über passives Motion Capturing bis 2006 findet man in A survey of advances in vision-based human motion capture and analysis von Moeslund et al.[MHK06]. Mit markerless Motion-Caturing befasst sich die Arbeit Free-Viewpoint Vi- deo of Human Actors von Carranza et al. [CTMS03]. Hier werden mit Bild- daten synchronisierter Videokameras Bewegunsinformationen eines Men- schen extrahiert und auf ein 3D-Model mit parametrisierten Skelett ange- wendet. Zusätzlich können, anhand der Silhouetten des Menschen, aus allen Kameras die Bildinformationen genutzt werden, um Texturen zu generieren und auf das Model abzubilden. Auf diese Weise können nach der Aufnahme interaktiv neue Perspektiven auf die Person erzeugt werden. Die Bewegungs- erkennung erfolgt, nach einer Initialisierungspose durch die Maximierung der Überdeckung der projezierten Modell-Maske und der extrahierten Silhouet- te des Menschen, mittels Rotation und Translation der Gelenke. Ein ähnliches Verfahren zur Bewegungsaufnahme wird in Model-based Ana- lysis of Multi-Video Data von Magnor et al. [MT04] verwendet. Es werden mehrere Videostreams von synchronisierten Kameras genutzt, um ein pa- rametrisiertes 3D-Modell an das aufgenommenen Objekt anzupassen. Die- ser Ansatz lässt sich nicht nur auf menschliche Bewegungen übertragen, wird aber unter Anwendung einer solchen Bewegungsaufnahme demons- triert. Durch die Minimierung eines XOR-Vergleichs von Modell-Maske und menschlicher Silhouette, mittels Rotation und Translation, wird die Bewe- gung des Körpers auf ein parametrisiertes Skelett übertragen. Für die zeit- liche Optimierung der Bearbeitung kann, nach dem Fitting des Torsos, die Bewegungen der restlichen vier Extremitäten des Menschen auf unterschied- lichen Computern parallel berechnet werden. Das Paper Motion Capture Using Joint Skeleton Tracking and Surface Esti- mation von Gall et al. [GSdA+ 09] analysiert nicht nur die Bewegung des Menschen, sondern passt das 3D-Modell für jeden Frame an die visuelle Hülle des Probanden an. Dadurch kann ein noch genauerer Vergleich der
7 Stand der Technik resultierenden Silhouetten erreicht werden. In Optimization and Filtering for Human Motion Capture von Gall et al. [GRBS10] wird eine lokale und globale Optimierung vorgestellt, um die Be- wegungsaufnahme zu verbessern. Dafür wird ein multi-layer Framework ein- geführt, welches stochastische Optimierung, Filterung und lokale Optimie- rung kombiniert. Der erste Layer basiert hier auf die simulierte Abkühlung, ein heuristisches Optimierungsverfahren sowie gegebene physische Bewe- gungseinschränkungen. Der zweite Layer verfeinert die ermittelten Bewe- gungsinformationen durch Filterung und lokaler Optimierung einzelner Ge- lenke. Ein ebenfalls häufig verwendetes Verfahren ist die Ableitung der Bewe- gungsinformationen durch die Generierung der visuellen Hülle anhand der Silhouette [TdAM+ 04, CBK03, CMG+ 10]. Auch hierfür werden kalibrier- te, synchronisierte Videokameras benötigt, die das aufzunehmende Objekt möglichst von allen Seiten aufnehmen. 2.3 Tiefenbildbasiertes Motion Capturing Einen weiteren Ansatz bieten aktive Aufnahmeverfahren, die anhand von Tiefenbildern Bewegungsinformationen extrahieren. In Real-time Identification and Localization of Body Parts from Depth Images von Plageman et al. [PGKT10] wird eine Methode beschrieben, um Körper- formen auf Tiefenkarten zu identifizieren und den richtigen Körperteilen zuzuordnen. Dafür werden zuerst potentielle Positionen für Körperteile, auf der generierte Punktwolke, über den geodätischen Weg gesucht. Dabei wird die Punktwolke, ähnlich wie die Oberfläche eines Modells behandelt und ein einfacher Dijkstra’s Algorithmus verwendet. Die Zuordnung der gefundenen Positionen in den Tiefenkarten zu den einzelnen Körperteilen wird unter Verwendung einer Datenbank mit Vergleichsbildern durchgeführt. Ein weiteres markerloses Motion Capturing Verfahren wird in Nonlinear Body Pose Estimation from Depth Images von Grest et al. [GWK05] vorge- stellt. Mit Hilfe eines Iterative Closest Point (ICP) Algorithmus und einem nichtlinear optimierten, analytischen Jacobi-Verfahren kann hier eine sehr effiziente Bewegungserkennung durchgeführt werden. Als Grundlage für das Fitting dient auch hier eine 3D-Punktwolke, die aus den Tiefenbildern ge- neriert werden kann. Die Arbeit Real-Time Human Pose Recognition in Parts from Single Depth Images von Shotton et al. [SFC+ 11] präsentiert eine Methode, die eine Da- tenbank und einen Decision Forest verwendet, um in Echtzeit Bewegungs- erkennung zu ermöglichen. In Efficient Model-based 3D Tracking of Hand Articulations using Kinect von Oikonomidis et al. [OKA11] wird die Kinect als Tiefenkamera verwen- det, um die Position, Orientierung und Ausrichtung der einzelnen Gelenke
2.3 Tiefenbildbasiertes Motion Capturing 8 der Hand, fast in Echtzeit, zu analysieren. Dabei wird ein parametrisiertes 3D-Modell einer Hand mit der Particle Swarm Optimization (PSO) Metho- de an die Bewegungsinformationen, aus den aufgenommenen Tiefenbildern, angepasst. Für Motion Capturing mit der Kinect exisiteren bereits weit entwickelte SDKs. Zum Einen bietet PrimeSense, der Hersteller der Kinect, mit OpenNI ein umfangreiches Open-Source Softwarepaket [Pri10b] an. Hier integriert ist ein Echtzeit Skelett-Tracking Verfahren, welches mit bis zu zwei Personen gleichzeitig funktioniert. Für die Bewegungsanalyse wird die Middleware Ni- te [Pri10a] eingesetzt, die ebenfalls von PrimeSense entwickelt wurde. Im Sommer 2011 veröffentlichte Microsoft, Hersteller der XBox 360, ein ei- genes SDK [Mic11b], welches ebenfalls Skelett-Tracking für bis zu zwei Per- sonen in Echtzeit ermöglicht. Eingesetzt werden darf diese Bibliothek nur in nicht-kommerziellen Projekten. In Markerless Motion Capture using multiple Color-Depth Sensors von Ber- ger et al. [BRB+ 11] haben wir gezeigt, dass es möglich ist, trotz starker Interferenzen, mehrere Kinects gleichzeitig für Motion Capturing zu nutzen. Dabei stellten wir ein Silhouetten-Basiertes offline Verfahren vor, welches Körperhaltungen, die mit dem Microsoft Kinect SDK und OpenNI/Nite [Pri10b, Pri10a, Mic11b] nicht richtig erkannt werden konnte, korrekt be- rechnet. In dieser Arbeit wird ein aktives, optisches Motion Capturing Verfahren vorgestellt. Die eingesetzten Kinect Kameras verwenden einen sogenann- ten structured-light Sensor, um die benötigten Tiefenbilder zu berechnen. Der klassische Ansatz, aus den aufgenommenen Tiefenkarten die Silhou- ette und resultierende 3D-Punktwolke zu berechnen, wird in dieser Ar- beit wieder aufgegriffen. Auch die Bewegungsanalyse durch die Formulie- rung und Lösung eines Optimierungsproblems, welches durch die Maximie- rung der Überdeckung von 3D-Modell und Punktwolke beschrieben werden kann, ist ein bewährtes Vorgehen. Um die benötigte Berechnungszeit für die Überdeckung zu minimieren, werden orientierte Bounding-Boxen des 3D- Modells verwendet. Die in [BRB+ 11] bereits korrekt erkannten Positionen, können auch mit diesem Ansatz richtig berechnet werden.
Kapitel 3 Kinect Die Kinect ist die erste Bewegungssteuerung der Videospielekonsole Xbox 360 für den Endverbrauchermarkt. Entwickelt wurde sie von Microsoft und PrimeSense [FSMA08]. Sie bietet, seit Markteinführung im November 2010, eine günstige Alternative zu Tiefenkameras mit Time-Of-Flight Aufnahme- technik. Für die Kinect sind mittlerweile diverse SDKs verfügbar, mit denen man, auf unterschiedlich Plattformen, die Funktionen der Kamera kontrollieren kann. Die wichtigsten sind die beiden offiziellen SDKs von PrimeSense und Microsoft [Pri10b, Pri10a, Mic11b] sowie das inoffizielle Software-Projekt OpenKinect [ea10]. OpenKinect bietet zudem ein umfangreiches Informa- tionsportal zu den technischen Daten der Kinect, die als Grundlage dieses Kapitels dienen. Tiefensensoren IR-Projektor IR-Empfänger RGB-Kamera Multi-Array Mikrofon Motor Abbildung 3.1: Microsofts Kinect für die Xbox 360
3.1 Ausstattung 10 3.1 Ausstattung Die Kinect ist mit einer Videokamera und einer Tiefensensor ausgestat- tet (siehe Abbildung 3.1). Die Reichweite für die Aufnahme von Tiefen- bildern beträgt 1,2 - 3,5 Meter. Das Sichtfeld beider Kameras spannt ho- rizontal 57°Grad und vertikal 43°Grad auf. Ein Motor (siehe Abbildung 3.1) ermöglich die Steuerung der Neigung des Kopfes in einem Bereich von 27°Grad. Es ist daher möglich, eine fest installierte Kinect vertikal zu justie- ren. Das integrierte Multi-Array Mikrofon (siehe Abbildung 3.1) ermöglicht zusätzlich die Option der Sprachsteuerung. Angeschlossen wird die Kame- ra über einen standardmäßigen USB 2.0 Port. Jede Kinect ist mit einem Infrarot-Projektor ausgestattet, welcher ein definiertes aber einzigartiges IR-Muster auf die Oberfläche aller Gegenstände wirft, die sich im Sichtfeld befinden. Dieses Muster wird von der Infrarot-Kamera aufgenommen und intern weiterverarbeitet. Tiefenkarten können anhand von Stereo-Bildern er- zeugt werden, wie in A parallel stereo algorithm that produces dense depth maps and preserves image features von Fua et al. [Fua93] gezeigt wurde. Da die Kinect jedoch nur eine IR-Kamera hat, bildet das IR-Muster die zweite Referenz. Dieses Verfahren unterliegt einem US-Patent mit dem Titel Range Mapping using speckle decorrelation von Garcia et al. [JF08]. 3.2 Datenströme Es sind zwei parallele Datenströme möglich. Die Auflösung der RGB- und Tiefenbilder beträgt 640x480 Bildpunkte, das Infrarot-Bild hat eine Auf- lösung von 640x488 Bildpunkten. In den Tiefenbildern gibt es einen 8 Pixel breiten Rand an der rechten Seite, der keine Informationen enthält. Alle Datenströme liefern eine Bildfrequenz von 30 Hz. Die Einträge in der Tie- fenkarte haben eine Breite von 12 Bit, von denen für die Tiefenwerte aber ef- fektiv nur 11 Bit genutzt werden. Für die RGB-Bilder werden 8 Bit für jeden Kanal an Farbinformationen übertragen. Da die Tiefeninformationen über ein emittiertes Infrarot-Pattern berechnet werden, ist es ebenfalls möglich, das IR-Bild und Tiefenbild parallel zu übertragen. Es ist mit der aktuellen Firmware-Version der Kinect nicht möglich IR- und RGB-Daten gleichzeitig zu übermitteln. Der Datenstrom für die Übertragung der Tiefenbilder hat ei- ne Größe von 12672000 Bytes/s, die RGB-Bilder umfassen 9216000 Bytes/s. Der Wertebereich in den übertragenden Tiefendaten geht von 0-2047, wobei der höchste Wert nur dann angenommen wird, wenn die Kinect für einen Pixel keine Tiefeninformation berechnen konnte. Die Umrechnung von den Werten der Tiefenkarten in Meter, kann nach [Bur10] durch folgender Formel
11 Kinect approximiert werden: 1 d= (3.1) rawDepth ∗ −0.0030711016 + 3.3309495161 Für genauere Berechnungen müssen die Konstanten an die Kalibrierung des einzelnen Gerätes angepasst werden. Um diese Abweichungen auszugleichen werden die Tiefenwerte mit einem Faktor skaliert, der aus der bekannten Distanz von Ursprung zur Kamera und dem dazugehörigen Wert in der Tiefenkarte berechnet wird. Viele Objekte haben auf den Tiefenkarten einen IR-Pattern Schatten IR-Emitter IR-Kamera Kinect Resultierendes Tiefenbild Abbildung 3.2: Schematische Darstellung der Entstehung von Infrarot- Schatten in Tiefenbildern. hellen Schatten. Dieser Schatten wird durch Hindernisse erzeugt, die durch Abdeckung die Ausbreitung des IR-Musters verhindern. Dies ist möglich, da IR-Projektor und IR-Sensor unterschiedliche Positionen und dadurch andere Perspektiven auf die Szene haben. In Abbildung 3.2 wird dieses Prinzip anschaulich dargestellt.
3.2 Datenströme 12
Kapitel 4 Aufnahmeumgebung 4.1 Aufbau Kinect Person 2,50m 3,00m Greenroom 3,00m Abbildung 4.1: Schematische Darstellung der Aufnahmeumgebung und Ka- merapositionierung. Die Grundfläche beträgt 3 m x 3 m und die Höhe der Außenwände beträgt ungefähr 2,5 m. In jeder Ecke steht auf Wandhöhe eine, um ungefähr 40°Grad nach unten geneigte, Kinect auf einem Stativ. Ein Großteil der Aufnahmen wurden innerhalb eines kleinen Greenroom an- gefertigt (siehe Abbildung 4.1), da die Bewegungserkennung auch in beeng- ten Standorten, wie z.B. dem Kfz-Innenraum, robust arbeiten soll. Für die Erkennung der Silhouetten wird kein geschlossener Raum oder besonders gefärbte Wände benötigt, da kein Chroma Keying [Wie11] verwendet wird. Der Raum bietet mit 9 m² Bodenfläche nur Platz für kleine, stationäre Be-
4.2 Multiplexing 14 (a) 4-fach Multiplexing (b) 2-fach Multiplexing. (c) Kein Multiplexing. Abbildung 4.2: Gegenüberstellung von Tiefenbildern bei Tageslicht. wegungen. Alle Videos sind mit 4 Kinects parallel aufgezeichnet worden. Die Anzahl der eingesetzten Kameras ist beliebig, weitere Kinects bedeuten höhere Interfe- renzen oder geringere Bildfrequenzen, im Falle des Einsatzes von Hardware- Shuttern. Jede Kamera befindet sich in einer Ecke, um Tiefeninformationen der aufzunehmenden Person, aus möglichst jedem Raumwinkel, zu erhalten. Der Raum wurde für die Aufnahmen weitestgehend abgedunkelt, um Inter- ferenzen, durch externe Lichtquellen und dem Tageslicht, gering zu halten. Weitere Aufnahmen (siehe Kapitel 6) wurden in einem großen Raum mit einer Fensterfassade gemacht, um die Robustheit des Verfahrens auch unter schlechteren Bedingungen wie Tageslicht zu demonstrieren. 4.2 Multiplexing Die gegenüberliegenden Kinects stören sich jedoch auch gegenseitig durch ihr emittiertes Infrarotlicht-Muster. Um diesen Effekt zu verringern wurde im Rahmen der Arbeit für das Paper [BRB+ 11] ein Multiplex-Verfahren für die Geräte entwickelt. Die technischen Details zu dieser Umsetzung wurden in dem Technical Report Multiple Kinect Studies von Y. Schröder et al. [SSB+ 11] veröffentlicht. Jene Technik ermöglicht den IR-Projektor aller 4 Kinects abwechselnd, durch einen Schrittmotor, abzudecken. Zum Einsatz kamen zwei Varianten, 2-fach Multiplexing und 4-fach Multiplexing. Die Idee des 2-fach Multiplexing ist, die Kinects mit direkt zueinander ge- richtete IR-Projektoren gleichzeitig aufnehmen zu lassen, da diese sich ge- genseitig weniger stören. Dadurch ist es möglich, mehr verwertbare Bilder pro Sekunde zu erhalten als beim 4-fach Multiplexing. Es ist nicht reali- sierbar die Aufnahme eines Bildes zeitlich zu steuern, daher müssen häufig mehrere Teilbilder, die mittels Multiplex-Verfahren aufgenommen wurden, zu einem ganzen Bild zusammengesetzt werden. Dies führt zu einer Senkung 1 der Bildrate und zeitliche Genauigkeit der Synchronisation auf 7,5 s für 2- 1 fach bzw. 3,75 s für 4-fach Multiplexing. Die Bildrate sinkt für das 2-fach Multiplexing auf 3, 75 und für das 4-fach Multiplexing auf 7, 5 Bilder pro
15 Aufnahmeumgebung (a) Farbbild der RGB- (b) Tiefenbild. (c) Kontrastgespreiztes Kamera. Infrarot-Bild. Abbildung 4.3: Schachbrettkalibrierung für die Freiraumaufnahmen [BRB+ 11]. Sekunde. 4.3 Kalibrierung Neben dem Datensatz an Tiefenbildern, benötigt das Tool die extrinischen und intrinischen Kalibrierungsinformationen der Kameras. Diese Daten ent- halten Position und Ausrichtung der Kameras in einem gemeinsamen Koor- dinatensystem und die Verzerrungen und Brennweite der Linsen. Zur Ermittlung dieser Daten eignet sich die Kalibrierung durch ein Schach- brettmuster, die mit Hilfe der Matlab Calibration Toolbox [Bou08] durch- geführt wurde. Die Toolbox benötigt ein Bild von jeder Kamera, in dem der selbe Bereich des Schachbrettmusters zu sehen ist. Dort werden manuell und in äquivalenter Reihenfolge die gleichen Ecken im Muster um diesen Bereich markiert. Diese Ebene spannt das Koordinatensystem auf. Der Ur- sprung befindet sich an der ersten markierten Position und der Up-Vector steht orthogonal zum Schachbrett. Da die RGB- und Tiefenkameras auf der Kinect unterschiedlich positioniert sind, ist die Kalibrierung nur anhand der Tiefenkarten oder von Inrarot- Bildern möglich. Ein aufgedrucktes, zweidimensionales Schachbrettmuster lässt sich mit einem Tiefensensor nicht erkennen, daher besteht das verwen- dete Muster aus spiegelnder Folie und normalem Papier [BRB+ 11] (siehe Abbildung 4.3 Bild links). Durch die Ablenkung der emittierten Infrarot- Strahlen auf der Folie sind an diesen (weißen) Stellen, in der Tiefenkarte, keine Informationen enthalten. Die Kantenverläufe des Musters in der Tie- fenkarten sind erodiert und daher weniger gut für die Kalibrierung geeignet. Es hat sich herausgestellt, dass die Kalibrierung anhand eines nachbearbei- teten Infrarot-Bildes (siehe Abbildung 4.3) die besten Ergebnisse erzielt.
4.4 Aufnahme 16 4.4 Aufnahme Für die Aufnahme stellt sich die Person ungefähr in die Mitte des Raum- es in eine Initialposition. Diese Initialposition besteht aus einer aufrechten, geraden Körperhaltung und ausgestreckten Armen (siehe Abbildung 4.1). Ausgehend von dieser Initialposition folgt dann die eigentliche Bewegung. Die Aufzeichnung der Tiefenbilder erfolgt mit dem Programm ”recorder”, welches Teil des Open-Source Projekts OpenKinect ist [ea10]. Da die Da- tenmengen, wie in Abschnitt 3.2 beschrieben, für die Aufnahme an einem einzelnen Computer zu hoch sind, wurde jede Kinect separat an einen Rech- ner angeschlossen. Zudem mussten die Daten in eine Ramdisk geschrieben werden, da aufgrund zu geringer Schreibgeschwindigkeiten der Festplatten Bilder verloren gegangen wären. Dies hätte die spätere Synchronisierung unmöglich gemacht. Eine Ramdisk ist die Erweiterung der Datenträger um ein virtuelles Volu- men. Daten, die auf dieses Volumen geschrieben werden, liegen physikalisch im Hauptspeicher. Da auf allen Aufnahme-Computern die Linux Distribu- tion Ubuntu eingesetzt wurde, ließ sich diese Lösung einfach realisieren. Jedes Tiefenbild der Aufnahme wurde einzeln, als unkomprimierte Portable Graymap (.pgm) Datei, gespeichert. Die Videoaufnahme der RGB-Kamera besteht aus Einzelbildern im Portable Pixmap (.ppm) Dateiformat. Die Größe einer 9 Sekunden Aufnahme von RGB- und Tiefenbildern beträgt ungefähr 450 MB. Daraus resultiert eine starke zeitliche Begrenzung für Aufnahmen von rund 30 Sekunden für den 1,5 GB großen Arbeitsspeicher der Aufnahmecomputer. 4.5 Synchronisierung Die Weiterverarbeitung der Bilddaten durch das Motion-Capturing Tool benötigt zeitlich synchronisierte Daten. Eine automatisierte Synchronisie- rung ist mit dem ”recorder”nicht möglich, daher mussten die Bilder manu- ell, zeitlich abgestimmt werden. Dafür dient zu Beginn jeder Aufnahmen ein Signal durch ein Feuerzeug, welches genügend Infrarotlicht emittiert, um es in den Tiefenbildern zu identifizieren. Aufgrund der Tatsache, dass die Ki- nect genau 30 Bilder pro Sekunde überträgt, kann durch das Erlöschen der Flamme von einem Bild zum nächsten, in allen Datensätzen der Kameras, ein nahezu gemeinsamer Zeitpunkt ausgemacht werden. Die Abweichung von wenigen Millisekunden, die bei jenem Vorgehen entstehen können, sind in diesem Anwendungsfall vernachlässigbar.
Kapitel 5 Motion-Capturing 5.1 Überblick Der Workflow des Tools lässt sich in mehrere Schritte unterteilen. Zu Be- ginn werden die Kalibrierungsinformationen, die Datensätze mit den Tie- fenbildern, das parametrisierte Skelettmodell zusammen mit den modellier- ten Körperteilen sowie Aufnahmen der leeren Szene für die Background- Subtraction, in das Tool geladen. Danach folgt die Erstellung der einzelnen Masken, bestehend aus den Silhouetten der Person und des Modells sowie die Projektion der Tiefenwerte zu einer 3D-Punktwolke. Dann wird anhand der ersten Bilder über die Initialposition, die Größe, Rotation und Position des Modells im Bezug auf den Menschen berechnet. Das darauf folgende Tracking besteht für jedes weitere Bild aus der Wie- derholung der Maskenerstellung und Projektion sowie der Anpassung des Modells an die aktuelle Körperhaltung der Person. (a) Tiefenkarte (b) Background- (c) Threshold und (d) Komponentenfil- Subtraction Binärkonvertierung terung Abbildung 5.1: Segmentierung der menschlichen Silhouette aus den Tiefen- karten.
5.2 Vorverarbeitung 18 5.2 Vorverarbeitung 5.2.1 Segmentierung der Silhouette Die Tiefenkarten bestehen, wie bereits in Abschnitt 3.2 beschrieben, aus Grauton-Bildern mit einer Tiefe von 12 Bit pro Eintrag. Jeder Pixel enthält die Tiefeninformationen in Darstellung eines 11 Bit großen Werts zwischen 0 und 2047, welcher in Meter umgerechnet werden kann. Den Wert 2047 erhält jeder Pixel, dessen Tiefenwert nicht richtig bestimmt werden konnte. Um die Silhouette des Menschen möglichst verlustfrei zu segmentieren, wird mit Hilfe von Background-Subtraction die Umgebung der Szene ausgelöscht (siehe Abbildung 5.2(b)). Dafür sind Aufnahmen der leeren Szene jeder Ka- mera nötig. Die absolute Differenz dieses Bildes und dem aktuellen Bild, aus dem Datensatz, bilden die Grundlage der Silhouette. Es wird auf einer Kopie des eigentlichen Bildes gearbeitet, da die Tiefenwerte der Silhouette ansonsten verfälscht werden. Da die Tiefeninformationen des Hintergrunds von Bild zu Bild nicht immer konstant sind, wird zusätzlich ein Threshold angewendet, um einen schwarzen Hintergrund zu erzeugen (siehe Abbildung 5.1(c)). Aufgrund von Infrarotlicht-Interferenzen, verursacht durch Tageslicht oder andere aktive Kinects, lassen sich in den Aufnahmen Interferenzeffekte fin- den. Zu erkennen sind diese als weiße Flecken auf den Tiefenkarten (siehe Abbildung 4.2). Diese Interferenzeffekte und der IR-Schatten, wie in Ab- schnitt 3.2 erklärt, erzeugen nach der Background-Subtraction Artefakte auf der Maske. Durch die Berücksichtigung dieser Effekte wurde nicht der gesamte Hinter- grund von dem aktuellen Bild entfernt und es bleiben kleinere Rückstände (siehe Abbildung 5.1(c)). Aus dem mehrstufigen Grauton-Bild wird eine binäre Maske erzeugt, in der die Silhouette die größte zusammenhängende Komponente bildet. In Connected Component Labeling Using Quadtrees von Samet [Sam81] wird ein effizientes Verfahren beschrieben, um zusammenhängende Komponenten in einem Bild zu identifizieren. Durch die Entfernung aller kleineren Kom- ponenten, kann die Maske effektiv von den übrig gebliebenen Artefakten befreit werden (siehe Abbildung 5.1(d)). Trotz starker Interferenzen kann auf diese Weise die Silhouette einer Person aus den Tiefenkarten segmentiert werden. 5.2.2 Projektion der visuellen Hülle Jeder Pixel innerhalb der Silhouette enthält Tiefeninformationen. Dieser Rohwert stellt den Abstand von Kamera zur Objektoberfläche dar und kann in Meter umgerechnet werden. Mit Hilfe der Kalibrierungsinforma-
19 Motion-Capturing tionen, Position und Orientierung der Kamera, ist es möglich, jeden Pixel als 3D-Punkt in das Koordinatensystem der Szene zu projizieren. Die Ma- thematische Grundlage dafür wird in dem Buch Multiple View Geometry in Computer Vision von Hartley et al. [HZ00] erläutert. Eine 3D-Punkt wird nach folgendem homogenen Gleichungssystem proji- ziert ([HZ00], S.142) xi ∝ KR(Xi − C) (5.1) In dieser Gleichung, stellt C den Positionsvektor der Kamera und R die Rotationsmatrix dar. Der Vektor xi enthält die 2D-Koordinaten des Bild- punktes in der Form (x, y, 1)T . Die intrinsischen Kameraparameter sind in der Kalibrierungsmatrix K enthalten. c 0 xh K = 0 c yh (5.2) 0 0 1 Der principal point (xh , yh ) ist der Punkt, in dem die optische Achse die Bildebene schneidet, er liegt für gewöhnlich in der Mitte. Die Brennweite der Kameralinse ist in dem Parameter c enthalten. Im Gegensatz zur klassischen Optik ist durch das Tiefenbild die genaue Distanz λi der Projektion jedes einzelnen Pixels gegeben. Folglich lässt sich zu jedem Bildpunkt der zugehörige 3D-Punkt in der Szene berechnen. RT K −1 xi Xi = λi q +C (5.3) T −T xi K K xi −1 Zu Beginn der Bearbeitung jedes Bildes wird nach der Segmentierung der Silhouette die dazugehörige 3D-Punktwolke projiziert. Für die zeitliche Opti- mierung können dabei in X- und Y-Richtung Bildpunkte auf der Tiefenkarte übersprungen werden (siehe Abbildung 5.2). 5.3 Initiierung Vor dem eigentlichen Tracking der Körperbewegung wird die Größe und Ro- tation, in der Initialposition des Modells, auf die Person angepasst. Dafür ist eine festgelegte Körperhaltung, wie in Abbildung 4.1 dargestellt, zu Beginn einer Aufnahme vorgesehen. Hierfür steht die Person mit gerader Körperhaltung in der Mitte des Raumes. Die Arme sind in einem 90◦ Win- kel vom Körper seitlich ausgestreckt. Für die Initialisierung der Modellparameter werden manuell, beliebig viele geeignete Kameraperspektiven ausgesucht. Ideal hierfür eignen sich Blick- winkel, in denen die Person direkt mit dem Gesicht oder Rücken zur Ka- mera steht. In den Silhouetten dieser Bilder werden auf beiden Seiten die
5.3 Initiierung 20 (a) Tiefenkarte von Kamera 1. (b) Projektion der 3D-Punktwolke anhand der Silhouette aller 4 Kameras aus der Per- spektive der Kamera 1. Abbildung 5.2: Projektion der segmentierten Silhouette. Es werden jeweils 3 Pixel in X- und Y-Richtung übersprungen. äußersten, horizontalen Pixel gesucht. Aufgrund der eingenommenen Körper- haltung kann davon ausgegangen werden, dass es sich dabei ungefähr um die Fingerspitzen beider Hände handelt. Mit Hilfe der Tiefeninformationen und Kalibrierungsparamter der Kameras lassen sich nach Gleichung 5.3 diese Pi- xel als 3D-Punkte (v~a , v~b ) in die Szene projizieren. Der Vektor v~p zwischen diesen beiden Punkten lautet ~vp = ~va − ~vb (5.4) Über die Anzahl der gewählten Kameraperspektiven kann dann ein Durch- schnitt dieser Punkte errechnet werden. Dafür bilden die Punkte des ersten Bildes jeweils eine Menge für die zusammengehörigen Punkte v~a und v~b . Alle weiteren Punkt-Paare werden der jeweiligen Menge zugeordnet. Dabei ist die minimale Gesamtdistanz, für alle Kombinationen der zuzuordnenden Punk- ten zu den zuerst zugeordneten Punkte, entscheidend. Der Durchschnitt der jeweiligen Menge, bildet den Punkt ~va∅ bzw. ~vb∅ für den resultierenden Vek- tor vp∅ . Er repräsentiert ungefähr die Spanne zwischen den Fingerspitzen der Person. Das parametrisierte Skelettmodell nimmt die gleiche initiale Körperhaltung ein. Als Referenz wird auch hier der Vektor ~vm zwischen beiden Händen er- mittelt. Die Positionen der Handknochen, im globalen Koordinatensystem, bieten die benötigten 3D-Punkte ~vma bzw. ~vmb . Anhand dieser Vektoren las- sen sich nun initiale Parameter für das Skelettmodell errechnen. Der Skalie- rungsfaktor s (siehe Abbildung 5.3(b)) ist das Verhältnis der Längen beider Vektoren. |~vp∅ | s= (5.5) |~vm |
21 Motion-Capturing Skelettmodell Skelettmodell Skalierungsfaktor s Rotationswinkel r Person Person Resultierendes Skelettmodell Resultierendes Skelettmodell (a) Rotationsparamter. (b) Skalierungsparamter. Abbildung 5.3: Zweidimensionale Darstellung von oben - initiale Rotations- und Skalierungsparamter. Die initiale Rotation um die Y-Achse, dem Up-Vector, kann ebenfalls an- hand der Vektoren errechnet werden. Dafür werden nur die x und z Werte der Vektoren ~vp∅ und ~vm benötigt. Sie bilden die zweidimensionalen Vekto- ren ~v2p∅ sowie ~v2m . Der Winkel r zwischen ~v2p∅ und ~v2m (siehe Abbildung 5.3(a)) lässt sich mit Hilfe des Skalarproduktes wie folgt ermitteln: ~v2p∅ · ~v2m cos(r) = (5.6) |~v2p∅ | ∗ |~v2m | Durch diese Rotation kann es passieren, dass das Modell um 180◦ , also ver- kehrt herum, gedreht ist. In diesem Fall wird durch die manuelle Benut- zereingabe die Rotation korrigiert. Der letzte initiale Parameter ist die Positionskorrektur t. Dabei wird der Durchschnitt der Subtraktion der Punkte ~va∅ ,~vma und ~vb∅ , ~vmb als Trans- lationsvektor genutzt. ~va∅ − ~vma + ~vb∅ − ~vmb t= (5.7) 2 Durch die so ermittelten initialen Parameter wird das Skelettmodell an die Position des Menschen angepasst (siehe Abbildung 5.6). Schlecht gewählte Kameraperspektiven (siehe Abbildung 5.5) und ungünstige Interferenzen können das Ergebnis stark beeinflussen. In Abbildung 5.4 ist der rechte äußere Arm in den Tiefenkarten abgeschnitten, die Rotations- berechnung wird hierdurch nicht gestört, es kann jedoch zu einer falschen
5.3 Initiierung 22 (a) Tiefenkarte. (b) Segmentierte Silhouette. Abbildung 5.4: Der rechte Arm der Person ist auf dem Tiefenbild nicht zu erkennen. Der resultierende Vektor zwischen den äußeren Punkten ist kürzer als die tatsächliche Armspanne. (a) Armspanne gut sichtbar. (b) Rotiert aber noch sicht- (c) Volle Armspanne nicht bar. sichtbar. Abbildung 5.5: Verschiedene Kameraperspektiven. Linkes Bild ist gut, mitt- leres Bild mäßig und rechtes Bild schlecht für die Initiierung verwendbar.
23 Motion-Capturing (a) Tiefenbild Kamera 1. (b) Tiefenbild Kamera 2. (c) Resultierende Position und Rotation. Abbildung 5.6: Initialpositionierung des Skelettmodells. Schwarze Linie ist der Vektor der Silhouette des linken Bildes. Rote Linie ist der Vektor der Silhouette des rechten Bildes. Resultat des Durchschnitts beider Vektoren ist blau gekennzeichnet. Resultierendes initiales Skelettmodell auf Bild rechts aus der gleichen Perspektive, wie im mittleren Bild. Skalierung kommen. Das resultierende Skelettmodell ist in dem Beispiel un- gefähr 20% kleiner, als die Person in der Aufnahme. Dies kann zu Problemen während des Trackings führen. Im Anschluss an die Initiierung folgt die erste Positionskorrektur (siehe Ab- schnitt 5.5) ,um das Skelettmodell möglichst präzise an die Körperposition des Menschen anzugleichen. Optional ist es möglich eine erstes Tracking (siehe Abschnitt 5.6) durchführen zu lassen, welches durch geringere Rota- tionseinschränkungen konträre Körper-Haltungen ausgleichen kann. 5.4 Bewertung der Überdeckung Um die Bewegungserkennung als ein Optimierungsproblem zu behandeln und zu lösen, wird eine adäquate Methode zur Bewertung der Körperhaltung des Skelettmodells benötigt. Diese Arbeit verfolgt den Ansatz, die Überdeck- ung der 3D-Punktwolke mit dem 3D-Modell (siehe Abbildung 5.7) eines Menschen zu analysieren. Ein 3D-Punkt der visuellen Hülle gilt als überdeckt, wenn er sich inner- halb des 3D-Modells befindet. Da die einzelnen Körperteile des Modells geschlossen sind, ist es möglich festzustellen, ob sich ein Punkt innerhalb eines Körperfragmentes befindet. Dafür wird ein Strahl von einer Position, außerhalb des Modells, in Richtung des zu prüfenden Punktes geschickt. Kollidiert dieser Strahl, innerhalb der Distanz bis zum Punkt, mit einer ungeraden Anzahl von Dreiecken des Objektes, befindet er sich innerhalb. Ohne zusätzliche Optimierungshierarchien muss für jedes Dreieck des Mo- dells ein Schnittpunkt-Test durchgeführt werden. Das verwendete 3D-Modell ist sehr detailliert und besteht insgesamt aus
5.4 Bewertung der Überdeckung 24 Head Head RightForearm RightForearm RightArm LeftArm LeftForearm RightArm LeftArm LeftForearm Spine Spine RightHand RightHand LeftHand LeftHand Hips Hips RightUpLeg RightUpLeg LeftUpLeg LeftUpLeg RightLeg LeftLeg RightLeg LeftLeg RightFoot LeftFoot RightFoot LeftFoot Abbildung 5.7: Auf dem linken Bild ist das 3D-Modell, bestehend aus den einzelnen, modellierten Körperteilen dargestellt. Auf dem Bild rechts sind die orientierten Bounding-Boxen der Körperteile abgebildet. 21422 Dreiecken. Die reduzierte Punktwolke besteht aus ungefähr 6000 - 8000 Punkten. Selbst für einen optimierter Algorithmus wie in Fast, mi- nimum storage ray/triangle intersection von Möller et al. [MT05] vorge- stellt, ist die Kalkulation zeitaufwändig. Zur Optimierung werden für die Überdeckung daher nicht die modellierten Körperteile verwendet, sondern die Bounding-Boxen, die diese umgeben. Eine Bounding-Box ist ein geometrischer, rechteckiger Körper, der ein drei- dimensionalen Objekt vollständig umschließt (siehe Abbildung 5.7). Es ist möglich sehr effizient festzustellen, ob sich ein Punkt innerhalb einer Bounding-Box befindet, dessen Seiten parallel zur x-, y- bzw z-Achse verlau- fen. Dafür ist lediglich zu überprüfen, ob der Wert der x-, y- und z-Position des Punktes kleiner bzw. größer der maximalen bzw. minimalen x-, y-, und z-Positionen der Seitenwände der Bounding-Box sind (siehe Abbildung 5.8). Die Bounding-Boxen liegen innerhalb des globalen Koordinatensystems nicht unbedingt parallel zu den Achsen, sondern sind, entsprechend der Rota- tion der einzelnen Körperteile, orientiert und werden als Object Oriented Bounding-Box (OOBB) bezeichnet. Für eine effiziente Berechnung werden die Positionen der 3D-Punkte, in das lokale Koordinatensystem der betrach- teten OOBB überführt (siehe Abbildung 5.9). Dies wird erreicht, indem die Rotationsmatrizen aller vorhergehenden Skelettknochen miteinander multi- pliziert werden. Jeder Punkt, der innerhalb eines Körperteils liegt, wird gezählt. Die Anzahl der Überdeckten Punkte repräsentiert ein Bewertungskriterium für die qua-
25 Motion-Capturing y-Achse y1 x0 y0 x-Achse x1 z0 z1 z-Achse Abbildung 5.8: Darstellung einer Bounding-Box die parallel zu den x-, y- und z-Achsen liegt. Diese wird Axis-Aligned-Bounding-Box (AABB) genannt. Ein Punkt p liegt innerhalb der Box, wenn folgende Ungleichungen für die Positionswerte erfüllt sind: x0 < xP < x1 , y0 < yP < y1 , z0 < zP < z1 . Abbildung 5.9: Für den OBB-Schnittpunkttest werden Position der 3D- Punkte aus dem globalen Koordinatensystem in das lokale Koordinatensys- tem der OBB überführt. Der rechte Oberarm wirkt aufgrund von leichten Interferenzen gespalten.
5.5 Positionskorrektur 26 Abbildung 5.10: Darstellung der Positionskorrektur anhand eines Bei- spiels. Das Skelettmodell wird auf der x-Achse nach rechts verschoben, um die Überdeckung zu optimieren. Die rot markierten Punkte sind nicht überdeckt. litative Betrachtung der aktuellen Körperhaltung des Skelettmodells. Der Trackingalgorithmus und die Positionskorrektur verfolgen stets das Ziel, die- se Überdeckung zu maximieren. 5.5 Positionskorrektur Um eine nicht-stationäre Bewegung zu analysieren, reicht es nicht einzelne Körperteile zu rotieren. Aus diesem Grund muss das 3D-Modell ingesamt räumlich bewegt werden. Dafür wird ein einfacher Brute-Force-Algorithmus eingesetzt, der innerhalb einer Distanz in definierten Schritten nach bes- seren Positionen sucht (siehe Abbildung 5.10). In dieser Implementierung werden nicht nur Positionen in der positiven und negativen Richtung der drei Achsen gesucht, sondern ebenfalls in allen anderen Richtungskombina- tionen. Daraus ergeben sich 27 Positionen, die für einen Schritt überprüft werden müssen. Wurde eine bessere Position gefunden, wird dieser Vorgang ausgehend von der neuen Position wiederholt. Für den Fall dass keine Verbesserung gefun- den werden konnte, kann die Schrittgröße jedes Mal verringert werden, um die aktuelle Position weiter zu optimieren. Diese feine Suche wird ab einer bestimmten Schrittgröße abgebrochen. 5.6 Tracking 5.6.1 Überblick Die Übertragung der Körperbewegung des Menschen auf das 3D-Modell, erfordert für jedes Bild die Anpassung der Rotation aller Gelenke. Dabei
27 Motion-Capturing Head LeftForearm RightForearm LeftArm RightArm LeftHand RightHand Spine Hips RightUpLeg LeftUpLeg RightLeg LeftLeg RightFoot LeftFoot Abbildung 5.11: Hierarchie des parametrisierten Skelettmodells. Dargestellt mit Hilfe der Mocap toolbox für Matlab [D.09]. wird die Hierarchie des parametrisierten Skelettmodells ausgenutzt. Ausge- hend von der Wurzel Hips, werden alle Kinderknochen sowie die Kindeskin- der nacheinander rotiert. Die Aufteilung ab der Wurzel erfolgt nach den 5 Extremitäten des Menschen: der Kopf sowie beide Arme und Beine (siehe Abbildung 5.11). Der Tracking-Algorithmus arbeitet, ähnlich wie die Positionskorrektur, nach dem Brute-Force-Prinzip. Beginnend mit der Hüfte werden nacheinander die einzelnen Knochen, in allen Kombinationen, um die drei Achsen in einer definierten Schrittgröße rotiert (siehe Abbildung 5.12). Wird dabei eine Ro- tation gefunden, bei der die Überdeckung maximal ist, wird, ausgehend von der neue Orientierung, erneut gesucht. Sollte kein neues Maximum gefun- den werden, beginnt optional eine feinere Rotation mit kleineren Schritten. Dieser Vorgang wird solange wiederholt, bis eine bestimmte Schrittgröße er- reicht wurde. Für die zeitliche Optimierung kann, auf dieses Vorgehen zu Lasten einer akkuraten Rotation, verzichtet werden.
5.6 Tracking 28 Abbildung 5.12: Ablauf des Trackings. Zunächst wird der linke Arme schritt- weise um die z-Achse nach oben rotiert und danach der Unterarm um die gleiche Achse nach unten. Dabei wird die Überdeckung maximiert. Abbildung 5.13: Überdeckung - bereits markierte Punkte dürfen nicht noch- mal gezählt werden. Skeletthierarchie gibt die Reihenfolge vor (von Bild links nach rechts), in der die Überdeckung der Körperteile analysiert wird. Farbig markierte Punkte: grün Torso, gelb linkes Oberbein, blau linkes Unterbein.
29 Motion-Capturing 5.6.2 Optimierung Um zu verhindern, dass ein Körperteil, innerhalb eines zeitlichen Versatzes eines Bildes, um einen unrealistisch großen Winkel rotiert wird, existiert ei- ne Beschränkung. Dieses Vorgehen führt zu einer flüssigeren Bewegung und verhindert, dass sich das Modell innerhalb weniger Bilder zu weit von der eigentlichen Bewegung entfernt. Für das erste Tracking, im Anschluss an die Initialisierung, werden diese Grenzen großzügiger gewählt, um anfängliche, größere Differenzen zwischen der Körperhaltung des Menschen und des 3D- Modells minimieren zu können. Bei Aufnahmen von besonders schnellen Bewegungsvorgängen oder unrealistischen, synthetischen Datensätzen, muss auf diese Funktion eventuell verzichtet werden. Ein weiterer wichtiger Mechanismus ist die Markierung bereits überdeckter Punkte. Jeder 3D-Punkt der visuellen Hülle, der bereits durch ein zuvor rotiertes Körperteil überdeckt wurde, bekommt eine Markierung und darf für folgende Überdeckungen nicht gewertet werden (siehe Abbildung 5.13). So wird verhindert, dass Bereiche die eine hohe Dichte an Punkten bein- halten, wie z.B. der Torso, mehrfach für ein Maximum eines Körperteils genutzt werden können. Besonders empfindlich ist hierfür die visuelle Hülle des Kopfes, dessen zugehöriger Körperteil, Head, innerhalb weniger Bilder häufig ein Maximum im Bereich des Nackens und Rückens findet. Da die Extremitäten des Menschen nach außen in der Regel kleiner werden, ist die Hierarchie des Skelettmodells (siehe Abbildung 5.11) dafür gut geeignet. Der Torso findet vorwiegend ein Maximum in der oberen Hälfte der Punktwol- ke und verhindert, dass die übrigen Extremitäten sich in den Körper drehen. Es ist möglich die anthropometrischen Einschränkungen der Bewegung zu berücksichtigen. Dies bedeutet eine Einschränkung der Rotationswinkel al- ler Skelettknochen während des Trackings. Da Rotationen um die z-Achse, bei Körperteilen wie den Armen oder Beinen, kaum zu einer Änderung der Überdeckung führt, entsprechen die Orientierungen dieser Achse teilweise nicht denen der Person in der Aufnahme. Solch eine Einschränkung kann dazu führen, dass z.B.Rotationsbewegungen des Unterarms, die zu einem lokalen Maximum führen würden, aufgrund der verkehrten z-Rotation des Oberarms, nicht möglich sind. In dieser Situation verharrt der Unterarm in einem lokalen Minimum und das Tracking scheitert.
5.6 Tracking 30
Kapitel 6 Ergebnisse Die Berechnungsdauer für den Initiierungsvorgang und das Tracking, variiert mit den Konfigurationseigenschaften. Durch die vielen unterschiedlichen Pa- rameter, wie in den Abschnitten 5.3, 5.5 und 5.6 beschrieben, sind sehr unter- schiedliche Ergebnisse für eine Aufnahme möglich. Für jede Aufnahme muss daher, separat, die optimale Einstellung gefunden werden. Die Konfigurati- onsparameter sind innerhalb der Klasse globals.h als Präprozessordefinition, verfügbar (siehe Abbildung 6.3). Die Ergebnisse für den Initiierungsvorgang zweier unterschiedlicher Aufnahmen sind der Tabelle 6.1 zu entnehmen. Die Bildreihe in der Abbildung6.1 und 6.2 visualisiert die erreichte Initialposi- tion. Es wurden die gleichen grundlegenden Konfigurationen genutzt (siehe Abbildung 6.3). Der Tabelle ist zu entnehmen, dass die Positionserkennung ohne anschlie- ßender Positionskorrektur und Tracking bei durchschnittlich 45% liegt. Nach dem Einsatz der beiden Korrekturalgorithmen liegt die Überdeckung bei un- gefähr 90%. Ein hervorragendes Ergebnis, in Anbetracht der Tatsache, dass die Genauigkeit der Projektion der 3D-Punktwolke durch die Schachbrettka- librierung natürlich einer Schwankung unterliegt. Der Einsatz der optiona- (a) Tiefenkarte mit 3D- (b) 3D-Punktwolke und (c) Resultierendes Skelett- Punktwolke und Bounding- Bounding-Boxen, grüne modell mit modellierten Boxen. Punkte sind überdeckt. Körperteilen. Abbildung 6.1: Ergebnis der Initiierung von Aufnahme 1.
32 (a) Tiefenkarte mit 3D- (b) 3D-Punktwolke und (c) Resultierendes Skelett- Punktwolke und Bounding- Bounding-Boxen, grüne modell mit modellierten Boxen. Punkte sind überdeckt. Körperteilen. Abbildung 6.2: Ergebnis der Initiierung von Aufnahme 2. #define FRAMES TO PROCESS 57 #define MODEL SCALE FACTOR 1 . 1 #define FLIP MODEL 1 #define X POINT CLOUD SKIPPING PIXEL 3 #define Y POINT CLOUD SKIPPING PIXEL 3 #define TRACKING ROTATION STEP 1 #define MIN TRACKING ROTATION STEP 0 . 1 #define MAX TRACKING ROTATION ITERATION STEPS 5 #define FAST ROTATING 0 #define ROOT TRACKING ROTATION STEP 0 . 5 #define ROOT MIN TRACKING ROTATION STEP 0 . 1 #define ROOT MAX TRACKING ROTATION ITERATION STEPS 1 #define REPOSITIONING EACH FRAME 0 #define INITIAL REPOSITIONING STEP 50 #define MIN REPOSITIONING STEP 1 #define FAST REPOSITIONING 0 #define RENDER WHILE CALCULATING 0 Abbildung 6.3: Konfiguration für das Motion-Capturing.
33 Ergebnisse len, feineren Suche bringt für einen erheblich höheren Zeitaufwand lediglich eine Verbesserung der Überdeckung von maximal 10%. In den Aufnahmerei- hen 6.4 und 6.5 wurde nur die Bewegungen der oberen Extremitäten erlaubt, da die Beine in den Tiefenkarten abgeschnitten sind und das Tracking des Torsos die korrekte Rotation der übrigen Körperteile erschwert. Die Auf- nahmen wurden unter starkem Einfluss von Tageslicht in einem weitläufigen aber geschlossenem Areal gemacht. In der Aufnahme 1 werden die ausgestreckten Arme vor dem Körper zu- sammengeführt (siehe Abbildung 6.4). Wenn eine einzelne Kinect eine sol- che Bewegung von hinten filmt, fehlen Informationen für die Konstrukti- on der gesamten Körperhaltung. Der hier vorgestellte Algorithmus nutzt Informationen von beliebig vielen, kalibrierten Kameras aus unterschiedli- chen Perspektiven. Auch wenn eine Kinect die Position der Arme verdeckt bleibt, liefern die Perspektiven anderer Kameras die benötigten Informa- tionen. Die professionellen SDKs von OpenNI/Nite [Pri10a] und Microsoft [Mic11b] scheitern aus dieser Perspektive an der Bewegungssequenz (Abbil- dung 6.4 Reihe 6 und 7). In der Aufnahme 2 sind die Arme der Person über dem Kopf verschränkt. Starke Interferenzen und komplexe Bewegungen, wie diese Überkreuzung der Arme, stellen für professionelle Echtzeit-Tracking-Algorithmen wie die des Microsoft Kinect SDKs [Mic11b] oder von OpenNI/Nite [Pri10a] Probleme dar (Abbildung 6.5 Reihe 6 und 7). Das hier präsentierte Offline-Verfahren ermöglicht dieses robuste Tracking menschlicher Extremitäten, trotz starker Interferenzeffekte durch Tageslicht (siehe Abbildung 6.5). Nicht stationäre, freie Bewegungen werden häufig noch nicht richtig erkannt. Der Grund hierfür ist ein noch nicht ganz ausgereifter Tracking-Algorithmus. Es werden weitere Mechanismen benötigt, um die Bewegungserkennung für kompliziertere Bewegungen robuster zu gestalten. Denkbar wäre eine Kombination von Silhouetten basiertem Tracking [Wie11] und dem hier vorgestellten Verfahren auf Basis der Informationen aus den Tiefenkarten. Um die anthropometrischen Einschränkungen der menschlichen Bewegung zu berücksichtigen, muss ein Algorithmus entwickelt werden, welcher ver- kehrte Rotationen der Extremitäten um die z-Achse erkennt und beheben kann. Ohne einen solchen Mechanismus läuft das Tracking mit diesen Ein- schränkungen stehts Gefahr, dass einzelne Körperteile in einem lokalen Mi- nimum verharren. Ein weiterer wichtiger Aspekt ist die zeitliche Optimierung der Berech- nung der Bewegungserkennung. Die Kalkulation der Überdeckung einzelner Körperteile könnte, nach der Bearbeitung des Torsos, parallelisiert werden [WL96]. Dadurch würde die Hardware-Architektur moderner Mehrkernsys- teme effizienter genutzt werden.
Sie können auch lesen