Implementierung eines Kinect Fusion Plugins für Unity

Fabian Göttl

Bachelorarbeit: Implementierung eines Kinect Fusion Plugins für Unity
Betreuer: Dr. Jens Grubert
Datum: 09/2015

Motivation

  • Augmented Reality im Aufkommen
  • Wiedererkennen der Nutzerposition innerhalb des Raums
  • Korrektes einblenden der virtuellen Einblendungen

Zusammenfassung

Diese Arbeit beschäftigt sich mit der Fusionierung mehrerer Tiefenbilder zu einer dreidimensionalen Rekonstruktion. Dabei wird der Softwarealgorithmus Kinect Fusion und die Tiefenkamera Structure Sensor verwendet. Das Ziel besteht darin, die Position der Tiefenkamera während eines Scanvorgangs zu bestimmen und anschließend diese auf das Koordinatensystem eines früheren Scans, der als Referenz dient, abzubilden. Ein möglicher Nutzen dieser Berechnungen liegt bei Anwendungen, die eine Wahrnehmung einer erweiterten Realität (englisch: Augmented Reality) ermöglichen. Beispielsweise kann die Position und Ausrichtung von virtuell eingeblendeten Objekten innerhalb eines Referenzkoordinatensystems gespeichert werden. In späteren Aufnahmen kann ein Bezug zu diesem Referenzkoordinatensystem hergestellt werden. Somit kann das Objekt auch in diesem Zeitpunkt an derselben Position und identischer Ausrichtung erneut eingeblendet werden.

Als Lösungsansatz wurde die Registrierung zweier 3D Punktwolken mittels der Point Cloud Library (PCL) verwendet. Dabei wird eine aktuelle Rekonstruktion nach einem abgespeicherten Referenzmodel ausgerichtet. Dieser Vorgang ermöglicht Rückschlüsse, inwiefern beide Koordinatensysteme zueinander verschoben und verdreht sind. Unter zusätzlicher Verwendung der von Kinect Fusion berechneten Kameraposition, kann auf die Kameraposition im Referenzkoordinatensystem geschlossen werden. Das System wurde anschließend als ein Plugin für die Spiel-Engine Unity und als eine eigenständige Applikation implementiert.

Evaluation

Der Algorithmus wurde nach der Implementierung mehreren Stress-Tests unterzogen. Hierbei wurde ausgewertet, ob die Pose der Tiefenkamera auch unter schweren Bedingungen weiterhin bestimmt werden kann. Zum Beispiel wurde ein Scanvorgang aufgenommen, während der Structure Sensor um 180° um die Kameraachse gedreht war. Trotz dieser unüblichen Situation, konnte der Algorithmus den Aufenthaltsort der Kamera korrekt bestimmen. Ähnlich gute Ergebnisse wurden in Szenen festgestellt, in denen Objekte während zweier Aufnahmen entfernt wurde. Bei schnellen Kamerabewegungen und dem Scannen von reflektierenden oder absorbierenden Oberflächen ging das Tracking verloren. Dies jedoch ist auf die limitierenden Faktoren des Funktionsprinzips der verwendeten Infrarot-Tiefenkamera zurückzuführen.

Abb. 1: Punktwolken (rot und grün) aus zweier Aufnahmen einer Tiefenkamera. Beide Punktwolken werden zueinander ausgerichtet

Abb. 2: Die Punktwolken werden durch Filter von Störungen befreit. Links vor der Verarbeitung. Rechts nach dem Filtern

Abb. 3: Ausgerichtete Punktwolken nach allen Verarbeitungsschritten. Nach einem zusätzlichen Optimierungsschritt sind im rot-markierten Bereich keine Abweichungen zu sehen.