AR Raumdetektion

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche

Das Projekt AR Raumdetektion wurde im Rahmen des Praktikums Interaktion bei Herrn Professor Brünig im Wintersemester 17/18 durchgeführt.

Ideenfindung

Die Idee des Projekts entstand aus dem allgemeinen Interesse des Projektteams in die Technik der Augmented Reality (Erweiterte Realität). Der spezielle Grundgedanke kam dabei mit dem Ausprobieren der Smartphone App IKEA Place, in der man IKEA Produkte mit Hilfe der Kamera-Funktion in einem Raum maßstabsgetreu platzieren kann. Die Produkte sind dabei dreidimensional auf der Kamera zu sehen, wodurch man sie aus verschiedenen Perspektiven betrachten kann. Insbesondere die Raumerkennung spielt dabei eine entscheidende Rolle und führt die Komponenten aus Hardware und Software zusammen. Das Projektteam hat sich demnach für das Praktikum dazu entschlossen, eine vereinfachte Raumdetektion zu programmieren.

Vorgehensweise

Komponentenauswahl

Zunächst muss überlegt werden, welche Hardware- bzw. Softwarekomponenten für die Durchführung des Projekts benötigt werden.

Der erste Ansatz war die Entwicklungsumgebung von Unity mit den Bibliotheken von Vuforia, die speziell für Augmented Reality Projekte geeignet ist. Schnell stellte sich heraus, dass der Arbeitsaufwand hauptsächlich aus Parametrierung bestand und ohne die Möglichkeit, spezielle Anpassungen mit eigenen Codezeilen hinzuzufügen. Vuforia erschien dem Projektteam daher als nicht sinnvoll für die Realisierung des Projekts.

Als zweiter und finaler Ansatz für die Erstellung des Codes wurde die Entwicklungsumgebung von Visual Studio 2015 verwendet. Mit Visual Studio ist es möglich, diverse Programmbibliotheken einzubinden, die für die Realisierung notwendig sind. Da vor allem die Bilder der Kamera eine wichtige Rolle spielen, eignet sich dafür OpenCV, einer Bibliothek mit Algorithmen für die Bildverarbeitung.

Als Hardware wurden lediglich eine funktionierende Webcam und quadratische Marker einer bestimmten Farbe benötigt.

Realisierung

Die erste Aufgabe bestand darin, das Webcam-Bild korrekt einzulesen und zur weiteren Verarbeitung in einer Matrix zu speichern.

Anschließend musste eine Farberkennung stattfinden, die über Trackbars parametrierbar für eine Farbe realisiert wurde. Den Farbbereich konnte man am besten über den HSV-Farbraum ermitteln. Dabei werden die Helligkeit (H), die Sättigung (S) und der Farbwert (V) für einen bestimmten Farbbereich eingestellt. Die Farbe gelb hat sich als besonders gut detektierbar herausgestellt, da sie im Versuchslabor nur sporadisch vertreten ist. Über ein Schwarz-Weiß-Bild konnte man ideal den gelben Farbraum von anderen Farbeinflüssen trennen.

Thresholded Image.png

Um Entfernungen zu detektieren, müssen im nächsten Schritt die Größen des Markers auf dem Kamera-Bild erkannt werden. Dazu eignet es sich, die Konturen des Markers explizit auszulesen. Durch Approximation konnten die Konturen außerdem auf gerade Linien vereinfacht werden. Auf dem ursprünglichen Webcam-Bild wurden diese Konturen dann aufgezeichnet und als neues Fenster ausgegeben. Zusätzlich konnte aus den Konturen der Mittelpunkt in Pixel ausgelesen und dessen Koordinaten auf dem Bild platziert werden. Der Ursprung der Koordinaten befindet sich an der linken oberen Ecke.

Result.png

Das Projekt wurde bis hierhin durchgeführt.

Im C++ Code der Realisierung werden die einzelnen Schritte der Programmierung mit passenden Kommentaren erläutert.

Abschluss

Um das Projekt abzuschließen, müsste man nun die Maße in reale Größen umwandeln. Bei den Markern handelt es sich um Quadrate mit 10 Zentimeter Seitenlänge. Ist ein Quadrat auf dem Kamerabild kleiner als das andere, liegen die Marker in unterschiedlichen Raumtiefen. Auch die Rotation der Marker verändert die Längen der Kanten auf dem Bild. Um die Seitenlängen auf dem Bild in reale Größen umzuwandeln, ist ein Vergleichsbild notwendig, welches die Größen für eine bestimmte Raumtiefe eines Markers genau definiert. Anschließend lassen sich die Größen genau auf dem Kamerabild darstellen und durch geeignete Markerplatzierungen kann ein dreidimensionaler Raum gebildet werden. In folgender Abbildung wird die fertige Raumerkennung konzeptionell dargestellt:

Konzeptbild Raumdetektion.PNG