Raylight

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche

Raylight ist ein Projekt von 3 Studenten, die damit anfassbares und interagierendes Licht erschaffen wollten.

Raylight01.jpg







Konzept

In einem Raum sollen durch Nebel mehrere Lichtstrahlen sichtbar gemacht werden. Wenn man nun einen dieser Lichtstrahlen beruehrt soll eine Reaktion ausgeloest werden.


Aufbau

Raylight aufbau.jpg

Komponenten:

  • Hazer
  • Beamer
  • Kamera
  • Rechner (OS X) als Schnittstelle des Systemes, der Tonausgabe und Projektion steuert

Implementierung mit Hilfe eines kleinen Programms welches in Processing und mit OpenCV umgesetzt wurde.













Ein kleiner Raum wird abgedunkelt und mit dem Hazer leicht vollgenebelt. Der Beamer projiziert ein Bild bestehend aus schwarzem Hintergrund und einigen weiss gefuellten Kreisen an die gegenueberliegende Wand. Durch den Dampf im Raum werden die weissen Lichtsrtahlen sichtbar gemacht, alles andere bleibt schwarz. So befindet sich an der kurzen Wand (links in der Skizze) das projizierte Bild mit mehreren Kreisen, im Raum zwischen Wand und Beamer sind mehrere Lichtbalken sichtbar. Das Bild an der Wand wird mit Hilfe der Kamera, welche an der Decke befestigt ist und auf die Abbildung gerichtet ist abgefilmt.

Durch Anfassen eines Strahles wird dieser somit nicht mehr an die Wand projiziert und daher auch nicht mit abgefilmt. So entsteht ein Unterschied zwischen abgefilmten Bild und ausgegebenem Bild. (Ausarbeitung 1) Ein Ton wird abgespielt.

Somit kann man durch Beruehren des Lichtes Geraeusche erzeugen.

Umsetzung

Wir haben uns auf die Programmierung mit Processing geeinigt und verwendeten zur Bildverarbeitung OpenCV. Auf einem Rechner wird das Raylight-Programm gestartet. Dieser Rechner ist mit einem Beamer und einer Kamera verbunden.

Beim der Ausfuehrung des Programmes passiert folgendes:

  • die Kamera wird gestartet
  • das Bild, welches die Kamera aufnimmt wird in Processing geladen
  • es oeffnet sich ein erstes Fenster welches weisse Kreise auf schwarzem Hintergrund anzeigt
  • es oeffnet sich ein zweites Fenster auf welchem das Kamerabild angezeigt wird, vom Programm schon umgewandelt in ein Binaerbild und mit den Konturen (siehe zweite Herangehensweise)
  • im Hintergrund wird (je nach Herangehensweise) etwas berechnet

Das erste Fenster wird in den Bereich des Bildschirmes geschoben, welcher projiziert wird. Das zweite Fenster ist nur zur Ueberpruefung offen.


Nach gruendlicher Ueberlegung, wie man am besten erkennt, ob ein Lichtstrahl abgedeckt wird haben sich zwei Herangehensweisen als praktikabel herausgestellt:

Vergleich der weissen Pixel (Projektion und Aufnahme)

Dies ist die einfachere Methode, welche wir im Endeffekt auch fuer die Praesentation verwendet haben, die aber fuer verschiedene Variationen (zum Beispiel unterschiedliche Toene, je nach abgedecktem Lichtstrahl) nicht verwendbar ist.

Die abgefilmte Projektion wird in ein Binaerbild umgerechnet, welches im zweiten Fenster angezeigt wird. Es zeigt also die Kreise an. Nun werden alle weissen Pixel in diesem Bild gezaehlt und es wird eine Schwelle berechnet. Diese ist abhaengig von der starke des Hazers, da durch das Sichtbarmachen des Lichtes auch Teile der Lichtstrahlen und nicht nur die Projektion abgefilmt werden. Wird nun diese Schwelle unterschritten, also wenn ein Lichtstrahl abgedeckt wird und somit nicht mehr mit abgefilmt wird, so wird ein Audiosignal ausgeloest.

Untersuchung auf Bewegung innerhalb eines Kreises

Mit OpenCV wird eine Hintergrundsubtraktion durchgefuehrt, um so abgefilmte Bewegung sichtbar zu machen. Der Unterschied zum jeweils vorhergegangenem Frame (also die Konturen eines bewegten Objekts) wird in rot im zweiten Fenster angezeigt. Ausserdem werden die Konturen der projizierten Kreise in diesem Fenster zur Kontrolle angezeigt. Nun wird ueberprueft, ob innerhalb dieser Kreise ein Pixel rot ist (bzw eine bestimmte Anzahl, da ein einziger Pixel auch nur ein Fehler sein koennte). Ist dies der Fall wird wieder das Audiosignal ausgegeben. Um diesen Aufbau korrekt durchfuehren zu koennen, Muss die Kamera auf das projizierte Bild gematched werden. Das heisst, dass projiziertes- und Kamerabild aufeinander passen muessen. Bei dieser Herangehensweise muss somit auch die Person mit abgefilmt werden, welche die Lichtstrahlen beruehrt. In der ersten Version war dies nicht der Fall.


Fazit

Letzten Endes war die Umsetzung schwerer als gedacht und so beschraenkt sich unsere Interaktion auf die Ausgabe von Toenen bei Beruehrung irgend eines Lichtstrahles. Vor allem die Programmierung gestaltete sich als nicht ganz trivial, da viele Quellen nur unzureichende Beschreibung der einzelnen Befehle enthalten. Unter anderem hat sich die Auswahl einer geeigneten Kamera, welche unter OSX capturing faehig ist als Stolperstein erwiesen. Um die Situation ein wenig zu entzerren und fuer uns zu einem erfolgreichen Abschluss zu bringen, wurden zwei verschiedene Loesungsansaetze ausgearbeitet.

Moegliche Erweiterungen koennten sein: verschiedenfarbige Lichtstrahlen, unterschiedliche Sounds, etc.

Download

die Dateien zum Download