Mittwoch, 28. Mai 2008

Merkmalsextraktion

CamShift- und MeanShift- Algorithmus bei OpenCV

OpenCV verwendet für das Tracken den CamShift-Algorithmus. Der Vorteil davon ist, dass man auch kostengünstigere WebCams benutzen kann. So ein Algorithmus, dass effizient und schnell arbeiten und in Realzeit tracken kann, ohne die Ressourcen des PCs auszuschöpfen, sodass andere Anwendungen nebenher laufen können.
Der MeanShift-Algorithmus basiert auf eine robuste parameterlose Technik für steigende Dichtheitsgradienten, um den Gipfel der Wahrscheinlichkeitsverteilung zu finden.

Wir wollen ein Verfahren für die Farbverteilung in einer Videoszene finden.

Aus diesem Grund ist der MeanShiftAlgorithmus so modifiziert worden, dass er mit dynamisch wechselnden Farb-Wahrscheinlichkeitsverteilungen arbeiten kann, die von der Video-Bildsequenz stammen. Dieser modifizierte Algorithmus ist der Continuously Adaptive MeanShift Algorithmus (CamShift).

Arbeitsweise der Algorithmen:
MeanShift Algorithmus:
1. Festlegen einer Suchfenster-Größe
2. Festlegen der Anfangsposition des Suchfensters
3. Berechnen der Mittleren Position im Suchfenster
4. Zentrieren des Suchfensters an dieser mittleren Position
5. Wiederholen von Schritt 3 und 4 bis zu einer Konvergenz (oder bis zu einem gegebenen
Schwellenwert)

Der MeanShiftAlgorithmus arbeitet mit Wahrscheinlichkeitsverteilungen, um farbige Objekte in VideoSequenzen zu tracken. Die Farbbilddaten müssen als Wahrscheinlichkeitsverteilungen dargestellt werden. Benutzt werden Farbhistogramme um dies zu bewerkstelligen.

CamShift Algorithmus:
1. Festlegen der Anfangsposition des Suchfensters
2. Anwendung von MeanShift (s.o.) ; Speichern des zeroth moment
3. Gleichsetzen der Suchfenstergröße zu einer Funktion des zeroth moment, der in Schritt 2
gefunden wurde.
4. Wiederholen des 2. und 3. Schritts bis zu einer Übereinstimmung („zeroth moment“ :
Verteilungsbereich unter dem Suchfenster. Fensterradius, Höhe und Breite, wird in die
Funktion des zeroth moment eingesetzt)

Der CamShiftAlgorithmus trackt X, Y und Bereiche der Hautfarbenen Wahrscheinlichkeits-verteilung. Der Bereich ist hierbei proportional zu Z, der Entfernung zu der Kamera.

Überprüfung Masterprojekt, MPT und OpenCV mit HandVU

Nach Überprüfung des Masterprojekts die uns zur Verfügung stand, MPT und OpenCV mit HandVU habe ich mich entschieden, OpenCV mit HandVu für die weiteren Lösungswege zu verwenden, da diese zwischen den drei Projekten am Robustesten und für unser Projekt am besten geeignet ist.

In dem Masterprojekt werden Standbilder verwendet wir brauchen aber eine Anwendung die mit bewegten Bildern arbeiten kann.
MPT wäre auch eine Anwendung die man verwenden könnte. Aber nach einigen Test habe ich herausgefunden das OpenCV mit HandVU besser ist, da HandVU speziell für die Erkennung des Handes geeignet ist.

Ausserdem habe ich mir auch einen Pongspiel heruntergeladen und getestet. Es gibt verschiedene Variationen vom Pongspiel.

Ich werde versuchen als nächstes eine Schnittstelle zwischen dem Pongspiel und OpenCV mit HandVU herzustellen.

Nachdem dies dann steht, könnte man versuchen aus den anderen Projekten Sachen für unsere Anwendung herausnehmen um diese dann zu optimieren.

Nebenbei versuche ich mich auch mit der Theorie auseinander zu setzen, sodass ich demnächst darüber auch einen Post reinstellen werde.

Weitere Informationen zu OpenCV & HandVU können Sie aus dem Blog von Frau Demir entnehmen.

weitere Links zum Downloaden der Programme:

http://www.movesinstitute.org/~kolsch/HandVu/HandVu.html#download

http://sourceforge.net/project/showfiles.php?group_id=22870&package_id=16937

http://sourceforge.net/project/showfiles.php?group_id=124401