Human Tetris

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche

Dieses Projekt wurde während des Wintersemesters 2010/2011 realisiert, und lasst sich von dem japanischen Fernsehspiel Hole in the Wall inspirieren.

Konzept

In diesem Spiel steht man vor einer Wand, die auf den Spieler zugeht. Es gibt eine Form in dieser Wand, und man muss seinen Körper beugen, um durch die Wand durchzukommen. Wir haben dieses Spiel mit dem Software Eyesweb nachgebildet. Der Spieler wird von der Webcam erkannt, und die Forme seines Körpers wird aufgeschnitten. Dann gibt es einen Vergleich mit einem Bild. Wenn die Forme des Körpers gleich wie die Forme des Bilds ist, ist der Spieler erfolgreich.

Umsetzung

Körper Erkennung

Die Körper Erkennung ist ein wichtiger Punkt dieses Projekts. Das Ziel ist der Vergleich des Körpers mit der Mauer. Deshalb muss die Erkennung des Körpers des Spielers so genau und robust wie möglich sein. Man bekommt zuerst die Szene mit einer Kamera. Dieses Video wird im Grauwert umgewandelt, um die Verarbeitung zu erleichtern. Dann entfernt man den Hintergrund nach der Klassischen Methode, die den Hintergrund von dem aktuellen Bild subtrahiert. Daher bekommt man ein Video, das nur bewegende Objekte enthalt.

Background sub.jpg

Form Verarbeitung

Diese Stufe besteht aus der Verarbeitung der Silhouette, die vorher bekommt wurde. Man führt eine Binarisierung durch. Es gibt jetzt ein Video mit einer bewegenden weißen Silhouette vor einem schwarzen Hintergrund. Allerdings enthält dieses Video Rauch. Der Wert des Schwerpunkts ist wichtig, um eine gute Binarisierung zu sichern, auch wenn es schlechte Lichtbedingungen gibt. Dann verwendet man mehrere Operatoren, um die Silhouette zu glätten. Es gibt drei Stufen: zuerst ein 5x5 Median-Operator, dann ein 3x3 Gaussfilter und endlich ein Opening Operator. Man kriegt eine saubere Silhouette ohne Rauchen. Diese Silhouette wird später mit der Mauer verglichen werden. Die Silhouette wird mit Hilfe eines NOT Operators invertiert. Dann wird es mit der aktuellen Szene Video addiert, um eine Farbige Silhouette zu erreichen. Dies wird am Ende angezeigt.

Filters.jpgHumanTetris Shadow.jpgBody form.jpg

Vergleich zwischen der Schatten und der Mauer

Das Ziel dieses Vergleichs ist zu wissen, ob die Silhouette wirklich ins Innere der Mauer ist. Die Pixel der beiden Bilder werden verglichen, und nur der Pixel mit dem höchsten Wert wird bewahrt. Man bekommt dann ein Bild, in dem die Silhouette und die Mauer sich überlagern. Dieses Bild wird von der Mauer subtrahiert, um nur die nicht-gemeinsamen Pixel zu bekommen, die die Mauer-äußeren Teile der Silhouette repräsentiert. Dieses Bild wird jetzt in Matrix umgewandelt. Jeder Wert diese Matrix wird addiert. Man bekommt einen Wert, der durch 255 (Weiß Wert) dividiert wird. Das ist die Zahl der Pixel, die außerhalb der Mauer sind. Diese Zahl wird mit einem verstellbaren Grenzewert verglichen. Der Grenzewert dient als eine Toleranz. Wenn die Pixelzahl niedriger als die Toleranz ist, dann weiß man, dass die Silhouette ins Innere der Mauer ist.

Substraction wall shadow.jpgComparison.jpg

Shadow plus wall.jpgShadow minus wall.jpg

Abschlussanzeige

Um die Wirkung des Fernsehspieles nachzubilden, muss die Mauer beweglich sein. Man braucht zuerst eine 3D Umwelt. Die Bestandteile, bzw. die Silhouette und die Mauer, werden mit verschiedenen Koordinaten angezeigt, um einen Eindruck von einer Bewegung zueinander zu geben. Diese Illusion wird durch die Koordinaten der Mauer Variation erfüllt. die Mauer hat tatsächlich eine Anfangsstelle, und ein Zähler ändert diese Stelle, so dass die Mauer sich der Silhouette nähert.

Display.jpg

Spiel Verwaltung

Hier bekommt man das Ergebnis des Vergleichs zwischen der Mauer und der Silhouette. Wenn die Mauers Stelle fast gleichwertig mit der Silhouette Stelle ist, beginnt den Abzug einer festgestellten Zeit. Wenn die Silhouette am Ende der Zeit noch ins Innere der Mauer ist, bekommt der Spieler einen Punkt. Danach fängt ein neues Spiel an, mit einer neuen Mauer.

Wall change.jpgPoints.jpg

Verbesserung

Dieses Projekt kann bei mehreren Weisen verbessern werden. Zuerst, die Benutzung einer guten Kamera erhöht unbestreitbar die Erkennungsqualität, sowohl die Genauigkeit als auch die Flüssigkeit. Es ist auch möglich die Silhouette Verarbeitung zu verbessern, bei Veränderung oder Hinzufügung der Operatoren. Die grafische Anzeige kann auch verbessert werden. Wir hatten vor, eine grafische Schnittstelle in Visual Basic zu konzipieren. Jedoch haben wir das nicht geschafft, weil die Kommunikation zwischen EyesWeb und der Visual Basic Anwendung ganz schwer realisierbar war, und weil wir nicht genug Zeit dafür hatten.

Ergebnis

Die folgenden Punkte beschreiben, wie das Spiel in Eyesweb aussieht. Die Ansicht ist mit dem Hauptfenster und drei anderen kleinen Fenster gebildet:

  • den Punktestand
  • die übrige Zeit, um den Punkte für gültig zu erklären
  • 0 oder 1, wenn die Silhouette ins Innere der Mauer oder nicht ist

Die Spielkontrollen sind:

  • Enter, um das Spiel anzufangen
  • P, um zu pausieren oder fortzusetzen
  • Space, um den Hintergrund zurückzusetzen
  • Esc, um den Spiel zu stoppen

Downloads

EyesWeb XMI patch : Human Tetris.eywx

Man soll in dem Patch den Zugriff der Bilder ändern, damit kann EyesWeb diese Bilder finden.

Bilder : Pictures.zip