Handtracking - Verständnisfragen
-
Hi!
Ich weiß nicht ob das hier hinpasst .... ich probiers einfach mal.Hi!
Ich hoffe hier kann mir jemand bei Verständnisproblemen in Bezug auf Handerkennung in Bildsequenzen helfen.
Geht zur Zeit weniger um C++ Code, sondern um Verständnis.
Habe schon gegoogelt was das Zeug hält, aber zu einigen Dingen keine Antwort finden können.Meine Aufgaben:
1. Integration of Color Spaces in framework:
Hab ich bereits gemacht. Hab die Farbräume Rgb,Luv,Lab und Rg implementiert.=====================================================
2. Fit a Gaussian model to initialization area
You have to fit a Gaussian to the color values of the Region of interest (ROI).
Therefore you have to calculate a mean and a covariance matrix defining the gaussian for
all color spaces
Roi: manuell im Bild selektiert, d.h. kleines Rechteck auf der Hand definiert mein RoiFrage1: Mit dem Gauss-Modell definiere ich mein Hautfarbenmodell, stimmt das so?
Das Gaussmodell wird ja durch die Kovarianzmatrix und dem Mittelwertvektor komplett beschrieben.
In einem vereinfachten Beispiel sieht die normierte Kovarianzmatrix für ROI im RGB-Farbraum so aus:
Nach meiner Auffassung, kann man daraus folgendes lesen:
Zwischen Rot-Blau und Grün-Blau besteht kein Zusammenhang, da im ROI zufällig blau nicht vorkommt.
Zwischen Rot-Grün besteht ein leichter gegensätzlicher linearer Zusammenhang.Frage2: Aber was heißt das und was bringt diese Information für mich?
Die Gaußverteilung hat ja jetzt die Form einer Glockenkurve.
Das Hautfarbenmodell, sprich Gaußverteilung sieht im vereinfachten Bsp. so aus:Frage3: Heißt das jetzt, dass dies mein Hautfarbmodell ist in Form einer Ellipse?
=====================================================
3. Integration of color distances: Euclidean, Mahalanobis, Bhattacharyya
Calculate a distance value for every pixel of the current image to the pre-calculated
Gaussian of step 2.
Mein Hautfarbenmodell hab ich ja jetzt durch das ROI (die Hand). Im Folgebild muss ich ja für
jedes Pixel entscheiden, ob es "Hautähnlichkeiten" hat oder nicht.Frage4: Um diese Ähnlichkeit zu überprüfen verwende ich jetzt Distanzen?
Distanzen geben mir hier ja die Information, ob ein Pixel ähnlich zu einem anderen ist.
Die euklidische Distanz berechnet man ja so:
Euklid\\_Distanz = \sqrt{\sum\_{i=1}^{n}(x_{i}-y_{i})^{2}}Frage5: Was ist in meinem Fall jetzt x und was y?
Frage6: y wär das Pixel im Folgebild, steht x im Ausgangsbild für einen Vektor oder für ein einzelnes Pixel?
=====================================================
4. Initialization of tracking
Use MSER detection on the distance values calculated in step 3 to initialize the tracker.
Take the MSER that covers the entire ROI: A single binary initialization region should be
returned.
Frage7: Erst hier wird ein Schwarz-Weiß-Bild zurückgegeben?Frage8: Wo wird jetzt entschieden, welche Regionen zusammengehören?
Wär wirklich super, wenn sich jemand die Zeit nehmen könnte, die Fragen zu beantworten ... danke!
-
Ich sag mal ein bißchen was dazu...
Frage 1: Ja, das gibt Dir die Verteilung von Hautfarbe im Farbraum wider.
Frage 2: Anschaulich gibt dir das für jede Farbe die Wahrscheinlichkeit, dass es sich dabei um Hautfarbe handelt. Mit einem Schwellwert zum Beispiel kannst Du nun bestimmte Pixel als Hautfarbe klassifizieren und die mit zu niedriger Wahrscheinlichkeit ablehnen.
Frage 3: Nein, die Ellipse dient nur der anschaulichen Darstellung der Gausfunktion. Dein Farbmodell ist die zuvor geschätzte Verteilung
Frage 4/5: x und y sind zwei Farben. Eine davon ist vermutlich eine Referenz-Hautfarbe. Du misst nun den Abstand einer Farbe zur Hautfarbe. Die Mahalanobis-Distanz verwendet dabei zur Gewichtung die Kovarianzmatrix. So werden Unterschiede in Richtungen starker Varianz weniger stark gewichtet als Unterschiede in Richtungen geringer Varianz.
-
Jester schrieb:
Ich sag mal ein bißchen was dazu...
Frage 1: Ja, das gibt Dir die Verteilung von Hautfarbe im Farbraum wider.
Frage 3: Nein, die Ellipse dient nur der anschaulichen Darstellung der Gausfunktion. Dein Farbmodell ist die zuvor geschätzte Verteilung
Hi!
Danke vorerst einmal für deine Antworten Jester.Jester schrieb:
Frage 2: Anschaulich gibt dir das für jede Farbe die Wahrscheinlichkeit, dass es sich dabei um Hautfarbe handelt. Mit einem Schwellwert zum Beispiel kannst Du nun bestimmte Pixel als Hautfarbe klassifizieren und die mit zu niedriger Wahrscheinlichkeit ablehnen.
Ganz klar ist mir das jetzt noch nicht. In meinem verkleinerten Beispiel handelt es sich um die Kovarianzmatrix von einem beliebig gewähltem ROI in einem Bild im RGB Format. Durch die Normierung würde 1 ein perfekten linearen Zusammenhang bedeuten. Mit der Aussage kann ich aber leider nicht viel anfangen. Für Rot_Grün hab ich den Wert "-0.34932520395189" ... was besagt dieser?
Und wie bestimme ich diesen Schwellwert? Ist nicht meine Gaußverteilung eine Art Schwellwert, da er ja mein Hautfarbmodell repräsentiert?Jester schrieb:
Frage 4/5: x und y sind zwei Farben. Eine davon ist vermutlich eine Referenz-Hautfarbe. Du misst nun den Abstand einer Farbe zur Hautfarbe. Die Mahalanobis-Distanz verwendet dabei zur Gewichtung die Kovarianzmatrix. So werden Unterschiede in Richtungen starker Varianz weniger stark gewichtet als Unterschiede in Richtungen geringer Varianz.
x wäre also meine Referenz-Hautfarbe ... als ein Vektor, der bei meiner Gaußverteilung herauskommt, oder?
Im Beispiel von der euklidischen Distanz ... wenn x die Referenzhautfarbe ist, ist dann y ein Pixel im nächsten Bild oder wird da sowas wie ein Mittelwert mehrerer Pixel genommen? Weil ich muss ja bei jedem Pixel feststellen, ob es eine Hautfarbe ist oder nicht?!Entweder denk ich zu kompliziert oder ich steh auf der Leitung

-
Niemand irgendwelche Ansätze, Tipps auf meine Fragen???