Archive

Posts Tagged ‘motion detection’

AS3: Interactive Webcam Package 1.2

December 21st, 2007 16 comments

iacamlogo_web iacamdoku iacamdoku2

Es ist endlich geschafft und auch noch rechtzeitig zu Weihnachten 😉 wurde die Version 1.2 meines Interactive Webcam Packages fertig gestellt. Viel hat sich in der Funktionalität zur Version 1.0 eigentlich nicht getan, ausser dass das Interactive Webcam Package nun komplett auf ActionScript 3 portiert wurde.
Aber der damit verbundene erhebliche Perfomancesprung von ActionScript 2 auf ActionScript 3 und die neuen Open-Source Projekte (wie z.B. Papervision 3D) ermöglichen einige neue interessante Anwendungsfelder für das Interactive Webcam Package. Als kleinen Vorgeschmack und für eine bessere Vorstellung wie solch eine Kombination aussehen könnte, habe ich für euch zwei Videos meiner neuen Webcam Experimente mit hochgeladen, die in Kombination mit der Papervision3D Engine entstanden sind.

Der Sourcecode dieser Experimente liegt in dem zip-File des Interactive Webcam Packages bei, so dass jeder damit ein wenig rumspielen kann. An dieser Stelle möchte ich mich noch bei den Entwickler der Papervision3D Engine,John Grden für das XFighter Modell und Jens Franke für seinen Papervision3D Vortrag und seine Utility Klassen bedanken. Ohne diese hilfreichen Tools hätte ich diese zwei kleinen Experimente auf jeden Fall nicht so schnell realisieren können.

Nochmal kurz zum Aufbau und zur Struktur des neuen Interactive Webcam Packages. Da sich bekanntlich die Flash API Struktur von ActionScript 2 auf ActionScript 3 schon gut verändert hat, musste ich auch ein bissl an der Struktur des Interactive Webcam Packages rumschrauben. Da die Klassen aber nicht so mega umfangreich sind, hat sich eigentlich nur das Eventhandling nennenswert verändert. So dass jetzt alle Events mit der bekannten ActionScript 3 addEventListener() Funktion abgefangen und bearbeitet werden müssen. Aber über solch eine Änderung lacht ja ein eingefleischter AS3 Coder ;-). Für alle anderen offenen Punkten soll die beigelegte Dokumentation des Interactive Webcam Packages für Klärung sorgen. Dabei orientiert sich die Dokumentation an der etablierten Flash Hilfe. Aus diesem Grund sind alle möglichen Klassenmethoden und Attribute erklärt und mit Beispielcodes versehen. Sollte es dennoch Fragen oder Probleme geben, scheut euch nicht mich anzuschreiben oder hier zu posten. Ich werde dann mein Bestes geben.

Nun aber genug von mir, wünsch euch allen frohe Weihnachten und viel Spass beim Flashen im neuen Jahr!


AS2: Interactive Webcam Package

June 14th, 2007 1 comment

iacamlogo_web singlelighttrack handon

Seit einiger Zeit spiele ich schon mit bildbasierter Interaktion rum (wie man es im meinen Experimenten Bereich gut sehen kann:-). Leider liesen sich die bisherigen Klassen nicht so einfach ohne Änderung für andere Experimente verwenden. Aus diesem Grund habe ich mich jetzt nochmal hingesetzt und die Klassen richtig aufgeräumt bzw. auch zum Teil verbessert.

Das Lichter Tracking arbeitet endlich auflösungsunabhängig (funzt somit auch in 640x480px) und wirft schön Events, die ihr mit einem einfachen Listener Objekt abrufen könnt.
Die CamButton Klasse wurde komplett überarbeitet. Es gibt jetzt eine CamButtonManager Klasse mit der man dann die Cam Buttons erzeugt, ganz nach dem Prinzip des Factory Pattern. Die CamButtonManager Klasse überprüft desweiteren ob der Button aktiv ist oder nicht und führt dementsprechend das Ereignis aus. Was mir aber am besten gefällt ist, dass jetzt in zwei verschiedenen Modi gearbeitet werden kann. Einmal der bisher bekannte Modus mit dem Differenzkey (wo man vorher ein Snapshotbild ohne User erstellen musste) und jetzt gibt es neuerdings noch dazu den Modus Motion Detection, der ganz nach dem Prinzip von Guy Watson arbeitet. Nur dass man bei meiner Version die Menge der Frameüberlagerungen zur Laufzeit einstellen kann. ;-p

Das wars auch schon im Groben an Neuerungen. Ich hoffe mit den Klassen kann jetzt jeder ein bissl schneller mit bildbasierter Interaktion herumspielen. Die Klassen könnt ihr euch mit Codebeispielen und einer ausführlichen Dokumentation hier runterladen:

Download: Interactive Webcam Package mit Klassendoku und Beispiel Codes

Ich würde mich sehr über euer Feedback freuen!

-- UPDATE 22.12.2007 --
Es gibt ein neues Update des Interactive Webcam Packages für ActionScript 3. Mehr Infos hier.

Webcam User Interface

October 10th, 2006 2 comments

caminterface greenman handon

Nach einer Woche rumtüffteln mit meiner Webcam, habe ich es endlich geschafft, dass man mittels Webcam durch ein Menü navigieren kann. Die Grundlage der Personenextrahierung aus dem Webcambild stammt von dem Webcam Motion Detection Tutorial von Guy Watson, welches ich auf meine Bedürfnisse umgeschrieben habe. Das heisst der User erstellt ein Webcam Snapshot (er darf sich dabei nicht im Webcam-Bildbereich befinden) von seiner Umgebung. Somit erhalte ich alle Bildinformationen von seinem Hintergrund, die ich dann von dem jeweiligen aktuellen Bild (Frame) subtrahiere. Dieser Vorgang bewirkt, dass alle Pixel, die sich nicht verändern haben ein Ergebnis von Null zurückliefern (einen schwarzen Pixel). Alles was schwarz ist ist somit unaktiv, jedoch wenn ein Bereich zu z.B. 80% aus nicht schwarzen Pixel besteht, kann man davon ausgehen, dass dieser Bereich aktiv ist und eine Aktion kann ausgeführt werden.
Dieses Verfahren mittels Referenzbilderzeugung und Subtraktion funktioniert bisher ganz gut, jedoch stösst es bei Beleuchtungsänderung und bei Bildänderung durch die Automatik der Webcam an seine Grenzen. Bei solch einer Situation hilft nur noch die Erstellung eines neues Referenzbildes (Bei meinem Experiment durch den restart-Button möglich).

Probiert es mal selbst aus:

Source Code dieses Experiments

-- UPDATE 17.06.2007 --
Die CamButton Klasse wurde in Sachen Anwenderfreundlichkeit und erweiterte Funktionalität überarbeitet, so dass ihr diese Klasse sehr einfach für eure eigenen Experimente einsetzen könnt. Den Download gibt es unter Interactive Webcam Package mit ausführlicher Doku und Beispielcode zum leichteren Einstieg.