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.