BLIT2007 - Laser Graffities
Aus BraLUG-Wiki
Fred (Diskussion | Beiträge) (→Kamera -> Videoeingang) |
Fred (Diskussion | Beiträge) (→Kamera -> Videoeingang) |
||
Zeile 31: | Zeile 31: | ||
Die optimale Kamera zur Bilderkennung hat folgende Eigenschaften: | Die optimale Kamera zur Bilderkennung hat folgende Eigenschaften: | ||
* ein fester Standpunkt | * ein fester Standpunkt | ||
− | in der Realität :-) Befestigung auf einem Stativ | + | ... in der Realität :-) Befestigung auf einem Stativ |
* Ausrichtung möglichst nah zur optischen Achse des Beamers | * Ausrichtung möglichst nah zur optischen Achse des Beamers | ||
− | in der Realität :-) direkt über dem Beamer | + | ... in der Realität :-) direkt über dem Beamer |
[[Bild:Kamera_beamer_320x280.jpg|thumb|320px|Quickcam auf Stativ über dem Beamer]] | [[Bild:Kamera_beamer_320x280.jpg|thumb|320px|Quickcam auf Stativ über dem Beamer]] | ||
* einen optischen Zoom, der das Zielbild auf volle Aufnahmegröße darstellen läßt | * 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 | + | ... in der Realität :-( Zusatzlinse für WebCam für 2/3 - Bildbereich |
[[Bild:Quickcam_mit_linse_320x320.jpg|thumb|320px|Quickcam mit Zusatzlinse]] | [[Bild:Quickcam_mit_linse_320x320.jpg|thumb|320px|Quickcam mit Zusatzlinse]] | ||
* eine möglichst hohe Auflösung (möglichst nah an der des Beamers, der Lichtpunkt muss mehrere Pixel groß sein) | * 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 | + | ... in der Realität :-( Bildbereich nur 320x240 zu 1024x768, einfacher Laserpunkt auf 4m <1 Pixel |
* kurze Reaktionszeit und hohe Kontrastschärfe des Sensors | * kurze Reaktionszeit und hohe Kontrastschärfe des Sensors | ||
− | in der Realität :-( langsamer und kontrastarmer CMOS-Sensor und alte USB1.1-Schnittstelle | + | ... in der Realität :-( langsamer und kontrastarmer CMOS-Sensor und alte USB1.1-Schnittstelle |
===Grafikprogramm: "graffities"=== | ===Grafikprogramm: "graffities"=== |
Version vom 28. Oktober 2007, 15:02 Uhr
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
- 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
- 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
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.