BLIT2007 - Laser Graffities

Aus BraLUG-Wiki

Wechseln zu: Navigation, Suche

Laser_graffities_icon_64x64.png

Inhaltsverzeichnis

Idee

Vor einigen Jahren gab es bei Arte.tv einen Bericht über Laser-Graffities in den Niederlanden. Es gab auch eine kurze Diskussion in der BraLUG-Liste.

Irgendwann 2007 begann die Planung zum 4. Brandenburg Linux-Infotag. Die Laser-Graffities passten nun zum Inselmodell ... "Multimediastrand" und zum Konzept, mehr praktische Anwendungen vorzuführen und die Besucher aktiv einzubeziehen.

Das Programm lasertraq wurde getestet. Das Programm arbeitet auf Grundlage von gstreamer ... und war bei den Tests "zu langsam". Zur Optimierung und aus Interesse an der Video4Linux - Programmierung wurde dann ein eigenes Programm begonnen. Schneller ist es wahrscheinlich auch nicht geworden.

Konzept

In kurzen Stichpunkten:

  • Licht-Figuren werden mit einem Laser-Pointer oder einer sehr starken Taschenlampe an eine Wand gemalt.
  • Eine Videokamera nimmt diese Lichtbewegung in Einzelbildern auf.
  • Durch ein Videofilter werden die Lichtpositionen in den Einzelbildern berechnet:
    • Variante a) Lichtpunkt als Pointer: Die Positionen werden als "Mausclick mit Bewegung" umgerechnet und an die aktiven X-Programme gesendet.
    • Variante b) Lichtfläche als Grafikobjekt: Die Lichtlinien werden gefiltert, die Einzelbilder überlagert, als zusammengesetztes Grafikbild dargestellt und nachbearbeitet.
    • Variante c) Berechnung des Lichtpunktes / der Lichtfläche aus einem Soll-Ist-Vergleich zwischen dem Bildschirm- und Kamerabild.
  • Die X-Bildschirm wird mit einem Beamer wieder an die o.g. Wand ausgestrahlt, so dass ein "Malen auf diese Wand" simuliert wird.

Umsetzung

Lichtquelle -> Kamera

  • Der Lichtpunkt von Taschenlampen ist in dunkler Umgebung im Vergleich zum Umgebungslicht klar zu unterscheiden.

... in der Realität :-) nur zum Programmier-Test ohne Beamer für Entfernungen unter 3m geeignet

  • Die Leuchtstärke von handelsüblichen Laserpointern genügt für den Betrieb im Zimmer, auch bei mittlerem Tageslicht in Räumen. (zum Betrieb bei hellem Tageslicht und bei weiten Entfernungen sind stärkere Laser mit auch größerem Leuchtpunkt einzusetzen)

... in der Realität :-) Bei Dunkelheit war der Beamer nur ungenügend herunterzuregeln, so dass das Bild an der Wand bereits zu hell für die Kamera schien

Kamera -> Videoeingang

Die optimale Kamera zur Bilderkennung hat folgende Eigenschaften:

  • ein fester Standpunkt

in der Realität :-) Befestigung auf einem Stativ

  • Ausrichtung möglichst nah zur optischen Achse des Beamers

in der Realität :-) direkt über dem Beamer

Quickcam auf Stativ über dem Beamer
  • einen optischen Zoom, der das Zielbild auf volle Aufnahmegröße darstellen läßt

in der Realität :-( Zusatzlinse für WebCam für 2/3 - Bildbereich

Quickcam mit Zusatzlinse
  • eine möglichst hohe Auflösung (möglichst nah an der des Beamers, der Lichtpunkt muss mehrere Pixel groß sein)

in der Realität :-( Bildbereich nur 320x240 zu 1024x768, einfacher Laserpunkt auf 4m <1 Pixel

  • kurze Reaktionszeit und hohe Kontrastschärfe des Sensors

in der Realität :-( langsamer und kontrastarmer CMOS-Sensor und alte USB1.1-Schnittstelle

Grafikprogramm: "graffities"

Grundlage für dieses Programm ist "fireDemo" von lasertraq.

Folgende Änderungen wurden vorgenommen:

  • Das Bild bleibt bestehen.
  • Das Programm verfügt über ein kleines Zeichenmenü mit den Funktionen:
    • Bild löschen
    • Pinselform wählen
    • Pinselgröße wählen
    • Pinselfunktion Malen / Wischen
    • Farbpalette wählen
    • Bildfarben verblassen

Arbeitshilfe: graffities.pdf Quelltexte: graffities.tar.gz

Videoprogramm - Pointersteuerung: "laser_mouse"

Grundidee für die X-Pointer - Steuerung ist ebenfalls das Programm lasertraqd aus lasertraq.

Folgende Änderungen wurden vorgenommen:

  • Die Video4Linux - Schnittstelle wird direkt gelesen.
  • Während der Laufzeit können Video-Einstellungen angepasst werden.
  • XML-Verarbeitung wurde entfernt.
  • Der Event ButtonPress wurde berichtigt, um weitere X-Programme zu bedienen.
  • Der Mausclick wird nach einer einstellbaren Positionierzeit ausgelöst.

Arbeitshilfe: laser_mouse.pdf Quelltexte: laser_mouse.tar.gz

Kontakt

Fred Koegler

Weitere Informationen zum Thema

Alle meine Quellen waren unter GPL "wild zusammengesucht" - somit sind auch diese Programme "Freie Software unter GPL".

Das Programm ist "schnell" entstanden ... nicht genau auf den Code sehen. Ich habe noch einige Ideen, wie man die Funktionen & die Bildverarbeitung anders angehen kann. Ich möchte das Maus-Ziehen irgendwann so programmieren, dass auch GIMP zu bedienen ist. Weiß noch nicht, wann ich das versuche. Das Grundproblem bleibt: zueinander passende Ausrüstung und Lichverhältnisse.

Die Quellen sind hoffentlich mit "make all" einfach und ohne Änderungen zu übersetzen.


Die Quellen zur Programmierung waren ....

  • lasertraq ... Idee für Maussteuerung und "fireDemo" als Vorlage zum Malprogramm
  • gqcam Quellen liegen nicht mehr unter http://bigred.unl.edu/ ... QuickCam, Videobild speichern
  • sdlcam ... QuickCam, SDL, Videobild speichern
  • Farbraumkodierung ... Video - Farbraumkodierung UYVY -> RGB
  • tvtime ... ein kleines TV-Programm ... Video-Schnittstellen Video4Linux und Video4Linux2 "sicher" setzen / programmieren
  • GIMP ... Standardfarbverläufe als "POV color_map" gespeichert und mit eigenem Tcl-Script "pov2cpp.sh" in C-Header-Dateien umformatiert.
'Persönliche Werkzeuge