BLIT2007 - Laser Graffities

Aus BraLUG-Wiki

(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Screenshots)
(Screenshots)
Zeile 147: Zeile 147:
 
... vom BLIT2007:
 
... vom BLIT2007:
  
  [[Bild:Graffity1_320x240.jpg|320px|Graffity1_320x240.jpg]] [[Bild:Graffity2_320x320.jpg|320px|Graffity2_320x320.jpg]]
+
  [[Bild:Graffity1_320x240.jpg|320px|Graffity1_320x240.jpg]] [[Bild:Graffity2_320x320.jpg|320px|Graffity2_320x320.jpg]]
  
 
... aus den Programmtests:
 
... aus den Programmtests:
  
  [[Bild:Graffity3_320x240.jpg|320px|Graffity3_320x240.jpg]] [[Bild:Graffity4_320x240.jpg|320px|Graffity4_320x240.jpg]]
+
  [[Bild:Graffity3_320x240.jpg|320px|Graffity3_320x240.jpg]] [[Bild:Graffity4_320x240.jpg|320px|Graffity4_320x240.jpg]]
 
+
  [[Bild:Graffity5_320x240.jpg|320px|Graffity5_320x240.jpg]] [[Bild:Graffity7_320x240.jpg|320px|Graffity7_320x240.jpg]]
+
  [[Bild:Graffity5_320x240.jpg|320px|Graffity5_320x240.jpg]] [[Bild:Graffity7_320x240.jpg|320px|Graffity7_320x240.jpg]]
 
+
 
  [[Bild:Graffity6_320x200.jpg|320px|Graffity6_320x200.jpg]]
 
  [[Bild:Graffity6_320x200.jpg|320px|Graffity6_320x200.jpg]]
  

Version vom 28. Oktober 2007, 15:21 Uhr

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

Einsatz

USB Logitech QuickCam Expr. (360x296)

... stdout Ausgabe :

Name: Logitech QuickCam USB
Type: 513
        Can capture
        Can capture subareas of the image
Channels: 1
Audios: 0
Maxwidth: 360
Maxheight: 296
Minwidth: 32
Minheight: 32
---------
X: 0
Y: 0
Width: 360
Height: 296
Chromakey: 0
Flags: 524288
---------
Brightness:     10240 (40)
Hue:            32768 (128)
Color:          32768 (128)
Contrast:       0 (0)
Whiteness:      0 (0)
Depth:          24
Palette:        4

Minolta Z2 (640x480) & Hauppauge (bt878)

... stdout Ausgabe :

Name: BT878 video (Hauppauge (bt878))
Type: 171
        Can capture
        Can tune
        Overlay onto frame buffer
        Can clip
        Scalable
Channels: 4
Audios: 1
Maxwidth: 924
Maxheight: 576
Minwidth: 48
Minheight: 32
---------
Channel: 1
Name: Composite1
---------
X: 40
Y: 40
Width: 640
Height: 480
Chromakey: 0
Flags: 0
---------
Brightness:     25600 (100)
Hue:            32768 (128)
Color:          32768 (128)
Contrast:       32768 (128)
Whiteness:      0 (0)
Depth:          16
Palette:        9

Screenshots

... vom BLIT2007:

Graffity1_320x240.jpg Graffity2_320x320.jpg

... aus den Programmtests:

Graffity3_320x240.jpg Graffity4_320x240.jpg

Graffity5_320x240.jpg Graffity7_320x240.jpg

Graffity6_320x200.jpg

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