Augmented Mirror

Aus toolbox_interaktion
Version vom 13. Juni 2016, 14:52 Uhr von Baer (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Logo AMirror.jpg

Beschreibung

Es soll eine Software-Anwendung mit Hilfe der „Xbox Kinect“ für einen virtuellen Kleiderschrank erstellt werden.

Folgende 3D-Gegenstände sollen dabei anprobiert werden können:

· Hut

· Brille

Die Körper- und Gesichtserkennung soll automatisch erfolgen und die Accessoires sollen bei dreidimensionalen Bewegungen an der richtigen Position erhalten bleiben.

Funktionen der Anwendung

Gesichts- und Körpererkennung, sobald sich der Nutzer vor die Kinect-Kamera stellt;

Bei 3D-Bewegungen sollen die Objekte an der entsprechenden Stelle bleiben;

Auswählen eines Gegenstandes am Bildrand durch Gestensteuerung;

Realisierung

Die Anwendung wird in Java mithilfe der Entwicklungsumgebung Processing programmiert.

ProcessingLogo.png


Folgende Bibliotheken werden dabei eingesetzt:


· OpenNI: Körpererkennung zur Berechnung der Rotationswinkel

· OpenCV: Gesichtserkennung für die Anpassung der Objekte

· ObjLoader: Import der Blender-Objekte


Skalierung der Objekte:


· Position der Objekte kann aus den Tiefeninformationen ermittelt werden

· Durch diese Tiefeninformation ist die Berechnung der Abstände bestimmter Körperteile möglich. ( In diesem Falle die Ohren und dadurch den Augenschwerpunkt )

Projektstufen

Zeitplan


Aufteilung der Gruppe in verschiedene Arbeitsbereiche:

Kinect Desc.png · Ein Teil ist zuständig für die Programmierung und Ansteuerung der Kinect in Processing;


Blenderlogo.svg.png · Der andere Teil sorgt für die Modellierung und Einbindung der 3D-Objekte mit Blender;


Realisierungshilfen für das gemeinsame Arbeiten:


·Dropbox als Dateiablage

·Gemeinsamer Blog ;

·Anlegen eines GitHub Accounts für ein paralleles Programmieren

·Projektplan mit Mindmanager, sowie eine Lastenheft


Einarbeitung in die verschiedenen Softwarekomponenten und erste Testprogramme:


·Gesichtserkennung mithilfe der Webcam via OpenCV: Kompletter Code

import hypermedia.video.*;
import java.awt.Rectangle;


OpenCV opencv;

// contrast/brightness values
int contrast_value    = 0;
int brightness_value  = 0;

void setup() {

......

}

public void stop() {
    opencv.stop();
    super.stop();
}

....

FaceDetection.png

  • Screenshot: FaceDetection gekennzeichnet durch das blauen Rechteck


·Ansteuerung der Kinect mit Processing



·Modellierung einer Testbrille in Blender



·Einbinden der Objektdateien in Processing: Kompletter Code

 
import SimpleOpenNI.*;
import saito.objloader.*;

PVector headPosition;

SimpleClass object;

SimpleOpenNI context;
float        zoomF =0.5f;
float        rotX = radians(180);  // by default rotate the hole scene 180deg around the x-axis, 
                                   // the data from openni comes upside down
float        rotY = radians(0);

void setup()
{
............
}


Das resultierende Alpha-Programm:

Screenshots


InterfaceDesign

Die Objektauswahl wird durch eine Erkennung der Hand und deren Position in einem vordefinierten Bereich gekennzeichnet.

JohnLennon.png Aviator.png RayBan.png Zylinder.png IndianaJones.png

  • Interface Buttons für die Auswahl der Objekte

JohnLennon mouseover.png Aviator mouseover.png RayBan mouseover.png Zylinder mouseover.png Indiana Jones mouseover.png

  • Sobald die Handfläche o. Maus drüberfährt und die Auswahl bestätigt ändert sich das Design


Letzte Projektphase

·Implementierung der verschiedenen Programmkomponenten:


·Zusammenführung des RGB-Bildes mit den Tiefeninformationen der Kinect:


·Exakte Modellierung von Zylinder und Brille mit Blender:


Brille

Zylinder


  • Das Resultat:

Interface.png

  • Screenshot: Auswahl der versch. Objekten