# IR Quellen aus Webcambild herausfiltern



## bluerider007 (28. Jul 2009)

hallo leute!

ich bin neu hier als verzeiht mir bitte, falls ich irgendeinblödsinn schreibe 

also meine frage an euch:

ich will ein größeres Projekt realisieren und ein teil ist es jetzt nun aus einem webcambild (der speziell auf IR ausgelegt ist) die einzenlen bereiche auf denen eine IR licht sichtbar ist herauszufiltern.
wenn ich jetzt also ein bild mit mehreren weißen flecken habe, will ich das rund um diese weißen flecke ein rechteck gezeichnet wird eventuell der rest des bildes komplett verdunkelt wird.

bei meinem projekt geht es nämlich darum die position meines fingers zu erkennen. dazu muss das von den fingern reflektierte IR licht von der kamera erkannt und entprechend in eine koordinate umgewandelt werden.

wäre soetwas möglich? wenn ja dann wie?

ich hoffe ich hab das irgendwie verständlich erklärt 
außerdem bedanke ich mich für die antworten im voraus


----------



## Noctarius (28. Jul 2009)

Ich würde einfach das Bild in Regionen (Quadranten) einteilen und die Helligkeit der Pixel (R+G+B) aufaddieren und schauen ob der hellste Quadrant der Finger ist.
Besonders riesige (über viele Quadranten verteilte), helle Flächen würde ich dabei ausschließen. Wie viele Quadranten aneinander "sehr hell" sein dürfen müsste man ausprobieren.

Wäre eine sehr einfache Testmöglichkeit, ob so eine "simple" Analyse nicht schon ausreicht.


----------



## Geeeee (28. Jul 2009)

Das Thema kommt mir gerade irgendwie bekannt vor. Hab da vor ~1 Jahr mal was in diese Richtung mit der WiiMote gesehen. Eine WiiMote ist eine gute "IR-Kamera". So wie es sich anhört, hast du ja schon eine WebCam für diesen Zweck. Es gibt auch Java-Bibliotheken, die z.B. schon ein bisschen Positionsbestimmung drin haben.


----------



## bluerider007 (28. Jul 2009)

hi! 
danke für die schnellen antworten 

das mit den einteilen in bestimmten bereichen ist eigentlich eine sehr plausible idee, werd ich glaub ich mal ausprobieren.

und ja, es ist so etwas in der richtung wie mit der wiimote (ich besitze sogar eine ), aber es ist eine andere art von anwendung für die die wiimote glaub ich nicht ganz ideal ist, außerdem soll das ein richtiges projekt werden und da kommt es glaub ich nicht so gut an, wenn ich mit der wiimote herumspiele, oder . also muss ich einfach von der wiimote wegkommen und etwas eigenes entwickeln. aber zum experimentieren ist es ideal.


----------



## Noctarius (28. Jul 2009)

Mit der Quadranteneinteilung kannst du sogar "Multitouch" realisieren ;-)


----------



## Geeeee (28. Jul 2009)

Wird nun etwas Offtopic, aber das hat mich nicht mehr losgelassen, darum hab ich mal wieder danach gesucht:
Johnny Lee demos Wii Remote hacks | Video on TED.com
Wenn man noch mehr sehen will, einfach nach johnny lee suchen.


----------



## newcron (4. Aug 2009)

Hallo Bluerider, 
wäre es möglich, ein bild einer solchen IR-Kamera zu sehen, eventuell kann ich dir dann noch besser weiterhelfen, als ich es jetzt tue. 

Was du beschreibst, nennt man in der Bildverarbeitung Bildregionen, dabei handelt es sich um zusammenhängende Bereiche eines Bildes. 

Die einfachste Methode, um solche Regionen zu finden, ist das Bild zunächst in Graustufen und dann in ein Schwarz/Weiß Bild umzuwandeln, wobei du mit einem geschickt gewählten dem Schwellwert (der Helligkeitswert, ab dem der Pixel weiß werden soll; darunter wird er schwarz) einiges erreichen kannst. Es gibt diverse Verfahren, um einen möglichst guten Schwellwert zu berechnen, ich würde dir das MAX-ENTROPY und das IsoData Verfahren nahelegen: beide sind einfach zu implementieren und bringen recht gute Ergebnisse. Wenn dir das nicht reicht, kannst du immer noch nach besseren alternativen suchen.

Das Resultat hiervon ist, dass dein Bild in reinem schwarz/weiß vorliegt, Nun kannst du die Regionen ziemlich einfach mit einem FloodFill Algorithmus füllen. Gehe davon aus, dass alles was schwarz ist, der hintergrund ist und laufe über jeden Pixel. Findest du einen Pixel der weiß ist, fülle ihn und alle umliegenden weißen Pixel (hier kommt der flood fill Algorithmus ins spiel) mit einer neuen Farbe, dann gehe weiter, bis du wieder einen weißen Pixel findest (die gerade gefüllte Fläche zählt nun nicht mehr als weiß!) Wenn du bei diesem FloodFill auch gleichzeitig die Bounding-Box von der Fläche, die du gerade füllst, berechnest, hast du am ende viele bunte Flächen und die zugehörigen Bounding-Boxen. 

Für weitergehende informationen suche nach dem Begriff: "Binary Image Processing".


----------

