Mittwoch, 25. Juni 2008

Nochmals ein kurzer Überblick mit einem Diagramm
Wie die Algorithmen funktionieren?


Das folgende Diagramm fasst die durchlaufenen Schritte des Algorithmus zusammen:


HSV Color System = Hue Saturation Value
HSV separiert Farbe, Helligkeit und die Konzentration des Farbtons.

Das Originalbild wird für jedes Videobild mittels eines Farbhistogrammmodels von der getrackten Farbe zu einem Farbwahrscheinlichkeitsbild konvertiert.

Durch den Camshift-Algorithmus werden die Größe und das Zentrum des Farbobjektes gefunden, der auf dem Farbwahrscheinlichkeitsbild aufsetzt.

Der Blau gestrichelte Kasten beinhaltet die Schritte, die der MeanShift-Algorithmus durläuft.

Um die Position und die Größe im nächsten Videobild zu setzen, wird die aktuelle Position und die aktuelle Größe des getrackten Objekts weitergegeben und dazu benutzt.

Dieser Prozess wird wiederholt.


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

Dienstag, 19. Februar 2008

Bildsegmentierung

Um die Hand von all den anderen Sachen, wie zum Beispiel Hintergrund usw. filtern zu können muss man die aufgenommene Hand als erstes segmentieren.




Es gibt bei der Bildsegmentierung verschiedene Verfahren die Angewendet werden können.
Die Grenzen zwischen diesen Verfahren sind oft fließend. Daher kann man sie kombinieren um bessere und effiziente Ergebnisse zu erzielen.

Pixelorientierte Verfahren

Beim pixelorientierten Verfahren werden Kriterien zur Segmentzuordnung nur auf das Pixel angewandt, unabhängig von anderen Pixeln.

Verfahren: Schwelwertverfahren

Kantenorientierte Verfahren

Beim kantenorientierten Verfahren wird nach Kanten oder Konturen gesucht, die zu Objektgrenzen zusammengefasst werden.

Verfahren: Sobel Operatoren, Laplace Operatoren, Wasserscheidentransformation, Snakes

Regionenorientierte Verfahren

Beim regionenorientierten Verfahren werden zusammenhängende Punktmengen als Gesamtheit betrachtet.

Verfahren: Region Growing, Split and Merge, Pyramid Linking, Region Merging

Modellbasierte Verfahren

Beim modellbasierten Verfahren wird konkretes Wissen über die Bilder zugrundegelegt, also ein Modell.

Verfahren: Hough-Transformation, statistische Modelle, Template-Matching

Texturorientierte Verfahren

Beim texturorientierten Verfahren wird nach einer Textur, also nach einer homogenen inneren Struktur, anstatt nach einer einheitlichen Farbe segmentiert.

Verfahren: Cooccurrence-Matrizen (Haralick-Matrizen) ,
Texturenergiemaße (Texture-Energy-Measure),
Lauflängenmatrizen (Run-Length-Matrix),
fraktale Dimensionen und Maße,
Markoff-Random-Fields und Gibbs-Potentiale,
strukturelle Ansätze,
signaltheoretische Konzepte

Diese Verfahren sind teilweise im Grenzbereich zur Klassifikation oder erlauben gleichzeitige Segmentierung und Klassifizierung.


Montag, 19. November 2007

Definition Bilderkennung, Mustererkennung, Bildverarbeitung und Bildbearbeitung

Bilderkennung ist ein Teilgebiet der Mustererkennung und der Bildverarbeitung. In der Bilderkennung versucht man, Objekte in einem Bild zu gliedern. Diesen Objekten werden symbolische Beschreibungen zugewiesen. Nach Zusammenhängen zwischen den Objekten wird nicht gesucht, wie es in der Musteranalyse üblich ist.

Unter dem Begriff Mustererkennung werden alle Verfahren zusammengefasst, die geeignet sind, Muster in Bildern nach bestimmten Kriterien voneinander zu trennen. Mustererkennung ist ein Verfahren der Bildverarbeitung, mit dessen Hilfe in Satellitenbildern oder digitalen Luftbildern Strukturen oder Objekte(Straßen, Häuser etc.) erkannt werden.

Mustererkennung wird in der

  • Spracherkennung
  • Bild-/Objekterkennung
  • Robotik (u.a. in der Industrie)
  • Biometrie (z.B. Sprech- Fingerabdruck- oder Iriserkennung)
  • Schrifterkennung
  • Etc.

eingesetzt.

Bei der Mustererkennung gibt es keine allgemeine Vorgehensweise, sondern es funktioniert je nach Anwendungsgebiet.

Es gibt 2 Phasen, die Arbeitsphase und die Lernphase.

Die Arbeitsphase beschäftigt sich mit dem eigentlichen Mustererkennungsvorgang und ist in 5 Phasen eingeteilt.
  1. Aufnahme
    1. von Signalen, zum Beispiel durch Kamera oder Mikrofon
    2. Diskretisierung
    3. Quantisierung
  2. Vorverarbeitung
    1. Beseitigung von Störungen
    2. Skalierung / Normierung
    3. Sinnvolle Aufteilung der Eingangsdaten, zum Beispiel Segmentierung
  3. Merkmalsextraktion
    1. Herausfiltern von Daten /Merkmalen
    2. Transformation in eine kompakte Form
    3. Ergebnis ist ein Merkmalsvektor in einem Merkmalsraum
  4. Merkmalsreduktion
    1. Weglassen unwichtiger Merkmale
    2. Untersuchung der Trennbarkeit von Merkmalen
    3. Ergebnis ist ein Merkmalsvektor mit niedriger Dimension
  5. Klassifikation
    1. Objekt wird einer Klasse zugeordnet
    2. Entscheidung durch Vergleich der Merkmale
    3. Welcher Klasse gehört das Objekt höchstwahrscheinlich an
    4. Realisierung häufig durch neuronale Netze

Die Lernphase liegt der Arbeitsphase zugrunde. Man gibt hier Testdaten ein, lernt von Klassifikationsvorschriften bzw. trainiert das neuronale Netz und unterscheidet dabei zwischen überwachtes und unüberwachtes Lernen.

Bei der Bilderkennung haben wir ein Bild als Ausgangspunkt. Man muss wichtige Merkmale finden und sie extrahieren und dies mit der Datenbank abgleichen.
Probleme treten auf Änderungen am Objekt vorgenommen werden, Vorwissen fehlt oder sich die Bedingungen ständig wechseln.

Die digitale Bildverarbeitung nutzt die Mittel der Signalverarbeitung zur Aufbereitung und Speicherung von visuellen Informationen.
Die Bildbearbeitung beschäftigt sich mit der Manipulation von Bildern zur anschließenden Darstellung. Die Bildverarbeitung dient als eine Zwischenstufe zu einer weitergehenden maschinellen Bearbeitung (Bildsegmentierung, Bilderkennung, Bildverstehen und Mustererkennung). Bildverarbeitung wird oft im Maschinenbau und der Medizintechnik eingesetzt. Mit Methoden der Bildverarbeitung werden in Maschinen Objekte vermessen, Objekte kontrolliert oder codierte Informationen gelesen. Röntgen- und Ultraschallgeräte liefern mit der Bildverarbeitung Bilder, die der Arzt einfacher darstellen kann. Röntgengeräte in Sicherheitszonen untersuchen Gepäck und Kleidung automatisch nach gefährlichen Objekten wie zum Beispiel Waffen.



Dienstag, 6. November 2007

Einführung Pong Spiel im Rahmen der Vorlesung Bilderkennung



Im Rahmen der Vorlesung „Bilderkennung“ wollen wir den im Jahre 1972 von Atari erschienenen „Pong“- Spiel, dass mit einem Hilfsmittel (Joysting, Paddle) gespielt wurde, so programmieren(weiter entwickeln), dass es auch ohne irgendwelche Techniken wie Fernbedienungen oder Bewegungs- und Infrarotsensoren gespielt werden kann.


Das Spielprinzip von „Pong“ ist einfach und entspricht dem des Tischtennisses.
Der Ball erscheint auf dem Bildschirm als ein Punkt und wird hin und her bewegt. Der Spieler soll den Schläger, der als ein senkrechter Strich dargestellt wird, mit der Hand auf dem Bildschirm hin und her bewegen können. Lässt man den Ball am Schläger vorbei, bekommt der Gegner einen Punkt.


Die Hand soll durch eine Webcam, die mit einem Bildschirm verbunden ist, erkannt werden.

Dabei müssen viele Kriterien beachtet werden, wie zum Beispiel:

  • Wo befindet sich die Hand?

  • Wie schnell wird die Hand bewegt?

  • Wie viele Finger hat der Spieler?

  • Was muss alles im Hinblick auf den Hintergrund berücksichtigt bzw. eliminiert werden, damit nur die Handbewegung registriert wird?

  • In welche Richtung bewegt sich die Hand? (x, y –Koordinaten die sich verändern)

Als nächstes werde ich eine Recherche über vorhandene Bibliotheken, Algorithmen verwendete Programmiersprachen und Tools machen.