Avatar: Depth-based Multi-Camera Motion Capturing

Die Seite wird erstellt Astrid Reich
 
WEITER LESEN
Avatar: Depth-based Multi-Camera Motion Capturing
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
Avatar: Depth-based Multi-Camera Motion Capturing
ii
Avatar: Depth-based Multi-Camera Motion Capturing
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
Avatar: Depth-based Multi-Camera Motion Capturing
iv
Avatar: Depth-based Multi-Camera Motion Capturing
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.
Avatar: Depth-based Multi-Camera Motion Capturing
vi
Avatar: Depth-based Multi-Camera Motion Capturing
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.
Avatar: Depth-based Multi-Camera Motion Capturing
viii
Avatar: Depth-based Multi-Camera Motion Capturing
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
Avatar: Depth-based Multi-Camera Motion Capturing
INHALTSVERZEICHNIS   x

6 Ergebnisse         31

7 Fazit              39
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