Visuelles Tracking von Nagerfüßen - Computer Vision
Transcrição
Visuelles Tracking von Nagerfüßen - Computer Vision
Bachelorarbeit Visuelles Tracken von Nagerfüßen Markus Näther 13. August 2013 Albert-Ludwigs-Universität Freiburg im Breisgau Technische Fakultät Institut für Informatik Eingereichte Bachelorarbeit gemäß den Bestimmungen der Prüfungsordnung der Albert-Ludwigs-Universität Freiburg für den Studiengang Bachelor of Science (B. Sc.) Informatik 2009. Bearbeitungszeitraum 13. 05. 2013 – 13. 08. 2013 Gutachter Prof. Dr. Brox Betreuer Prof. Dr. Brox Philipp Fischer Erklärung Hiermit erkläre ich, dass ich diese Abschlussarbeit selbständig verfasst habe, keine anderen als die angegebenen Quellen/Hilfsmittel verwendet habe und alle Stellen, die wörtlich oder sinngemäß aus veröffentlichten Schriften entnommen wurden, als solche kenntlich gemacht habe. Darüber hinaus erkläre ich, dass diese Abschlussarbeit nicht, auch nicht auszugsweise, bereits für eine andere Prüfung angefertigt wurde. Inhaltsverzeichnis Zusammenfassung 1 Abstract 3 1. Einleitung 1.1. Motivation . . . . . . 1.2. Grundlagen . . . . . 1.2.1. Farbräume . . 1.3. Verwandte Arbeiten . . . . . 5 5 7 7 9 . . . . . . . . . . . . 11 11 11 12 14 15 16 16 19 21 22 22 23 . . . . 25 25 26 28 29 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Tracking Framework 2.1. Detektion . . . . . . . . . . . . . . . 2.1.1. Farbhistogramm . . . . . . . . 2.1.2. Rückprojektion . . . . . . . . 2.1.3. Morphologische Filterung . . 2.1.4. Konturen erkennen . . . . . . 2.2. Tracking . . . . . . . . . . . . . . . . 2.2.1. CamShift Tracking-Verfahren 2.2.2. Optischer Fluss . . . . . . . . 2.3. Kálmán Filter . . . . . . . . . . . . . 2.3.1. Schätzung . . . . . . . . . . . 2.3.2. Korrektur . . . . . . . . . . . 2.3.3. Kálmán Filter Algorithmus . 3. Implementierung 3.1. Verwendete Software 3.2. Architektur . . . . . 3.3. Initialisierung . . . . 3.4. Tracker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. Auswertung 31 4.1. Datensatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.2. Qualitative und Quantitative Analyse . . . . . . . . . . . . . . . . . . 33 5. Schlussfolgerung 35 Danksagung 37 i A. CD 39 Literaturverzeichnis 41 Zusammenfassung In dieser Arbeit sollen mit Farbmarkern versehene Rattenpfoten in Videos erkannt und getrackt werden. Hierfür wird im ersten Teil erläutert wie die zu detektierenden Pfoten ausgewählt werden, gefolgt von den hierbei auftretenden Problemen. Im zweiten Abschnitt wird die Detektion der eingefärbten Pfoten näher erklärt. Anschließend werden verschiedene Tracking-Verfahren vorgestellt, mit denen die detektierten Pfoten im Laufe der Videoaufzeichnungen verfolgt werden können. Da es zu Ungenauigkeiten während des Trackens kommen kann wird das Ergebnis mittels des Kálmán Filters verbessert. Der dritte Abschnitt befasst sich mit der Implementierung der vorgestellten Verfahren. Hierbei werden sowohl die Architektur des Programms, als auch der Ablauf des Trackers näher erläutert. Außerdem wird kurz darauf eingegangen wie das Programm zu verwenden ist. Im letzten Abschnitt findet eine Auswertung des vorhandenen Videomaterials, sowie eine qualitative und quantitative Analyse statt. 1 Abstract In this work rat paws, that are provided with color markers, are detected and tracked in videos. The first part explains how to select the paws that should be detect, followed by the problems that can occur. In the second part the detection of colored paws will be explained in detail. Then different tracking methods are introduced, with which the detected paws can be tracked over the video recordings. Since there may be the result of inaccuracies during the tracking it will be improved by means of the Kálmán filter. The third section deals with the implementation of the presented method. Here both, the architecture of the program, as well as the expiration of the tracker, will be explained in more detail. In addition, it is briefly discussed how the program will be used. In the last section an evaluation of the existing video material takes place, followed by a qualitate and quantitative analysis. 3 1. Einleitung 1.1. Motivation Zur Quantifizierung des Verhaltens von Tieren, ist es wichtig, genau messen zu können, wie diese sich bewegen. Die erhobenen Daten bieten sich für eine Fülle an Einsatzmöglichkeiten an. Diese reichen von neuen Erkenntnissen über die Funktionsweise des Kleinhirns, das unter anderem für die Koordination komplexer Bewegungen verantwortlich ist, bis hin zu Bewegungsabläufen von neuen Robotern, die der Natur nachempfunden sind. Datensatz Die zu untersuchenden Daten liegen in diversen verschiedenen Formaten vor. Es handelt sich sowohl m stark überbelichtetes Videomaterial wie in Abb. 1.1 und Abb. 1.2, als auch um normales, nicht überbelichtetes Material wie in Abb. 1.3. Abbildung 1.1.: Hier sieht man gut das überbelichtete Videomaterial. In Abb. 1.1 ist zu sehen, dass das überbelichtete Videomaterial auch zu Problemen führen kann, wenn hierdurch z.B. Farben überblendet werden, oder wie im Beispiel des Laufrades es zu Halos kommt. 5 Kapitel 1 Einleitung Abbildung 1.2.: Ein weiteres Beispiel des überbelichteten Videomaterials. Abbildung 1.3.: Videomaterial mit normaler Beleuchtung. In Abb. 1.4 und Abb. 1.5 kann man sehen, dass es beim Tracken zu vielerlei Problemen kommen kann, die bei der Beobachtung auftreten können. Zum einen können die Pfoten von der Ratte selbst verdeckt werden, oder auch aus dem gesamten Sichtfeld verschwinden. Eine weitere Schwierigkeit ist, dass es zu Spiegelungen kommen kann die das Ergebnis verfälschen können. 6 1.2 Grundlagen Abbildung 1.5.: Von links oben nach rechts unten: Es kommt dazu, dass Pfoten schwerer zu erkennen sind, oder in anderen Situationen ganz verdeckt sind. Abbildung 1.4.: Von links oben nach rechts unten: Es kommt zu schnellen Bewegungen, wie an der grün eingefärbten Pfote zu sehen. 1.2. Grundlagen 1.2.1. Farbräume Da es eine Vielzahl an unterschiedlichen Farbräumen gibt, mittels denen Bilder und Videos dargestellt werden können, soll hier ein kurzer Überblick über zwei Farm- 7 Kapitel 1 Einleitung räume gegeben werden, die vom Programm verwendet werden. Hierbei betrachten wir kurz den RGB Farbraum und warum dieser für unsere Zwecke ungeeignet ist, gefolgt vom besser geeigneten HSV Farbraum. 1.2.1.1. RGB Der RGB Farbraum ist der wohl bekannteste Farbraum, bietet jedoch sehr viele Nachteile wenn man direkt auf ihm arbeitet. Abbildung 1.6.: Der RGB Farbraum, visualisiert in Form eines Würfels. Das Bild wurde unter der Creative Commons Attribution-Share Alike 3.0 Unported und der GNU Free Documentation License, Version 1.2, veröffentlicht. Author: Horst Frank. Abb. 1.6 ist ein Schaubild des RGB Farbraumes, anhand dem gut zu erkennen ist, dass sich jede Farbe aus den drei unterschiedlichen Farbkomponenten rot, grün und blau zusammensetzt. Dieses Vorgehen ist aufgrund der Zusammensetzung in einer Implementation umständlich zu handhaben. Soll hier z.B. ein bestimmter Rotton erkannt werden müssen für alle drei Farbwerte Schwellwerte bestimmt werden. Für jeden Wert im Rot-Kanal, der eine unterschiedliche Farbe darstellt, müssen unterschiedliche Werte für den Grün- und Blau-Kanal beachtet werden, da hierdurch die Helligkeit der Farbe verändert wird. Für unser Vorhaben wäre es vorteilhaft, wenn die Informationen für die Sättigung der Farbe und deren Helligkeit unabhängig vom Farbwert selbst sind. 1.2.1.2. HSV Der HSV Farbraum bietet gegenüber dem RGB Farbraum den großen Vorteil, dass die Farben unabhängig von ihrer Helligkeit und Sättigung sind, wie man Abb. 1.7 8 1.3 Verwandte Arbeiten entnehmen kann. Abbildung 1.7.: Der HSV Farbraum, visualisiert in Form eines Zylinders. Das Bild wurde unter der Creative Commons Attribution-Share Alike 3.0 Unported und der GNU Free Documentation License, Version 1.2, veröffentlicht. Author: Wapcaplet. Der Farbwert ist somit invariant gegenüber diesen Werten. Hiermit haben wir um den Farbwert selbst nur einen kleinen Spielraum der die Farbe repräsentiert, und es gibt nun auch nur noch zwei Komponenten die über einen Schwellwert eingeschränkt werden müssen. Deshalb ist der HSV Farbraum besser für die spätere Implementation des geplanten Programms, da hierdurch eine stärkere Invarianz gegen Helligkeitseinflüsse der Umwelt, wie etwa wechselnde Lichtverhältnisse, gegeben ist. 1.3. Verwandte Arbeiten Eine verwandtes Einsatzgebiet ist es Menschen anhand der Hautfarbe zu erkennen, was unter anderem von Argyros et al. in [AL04] und Kuchi et al. in [KGB+ 02] gezeigt wurde. Weiterhin führt Soriano et al. [SP05] einen Vergleich verschiedener Methoden um Hautfarben unter unterschiedlichsten Beleuchtungen zu Tracken an. Rasmussen et al. haben in [RTH96] Gegenstände allein durch ihre Farbe erkannt und deren Bewegung verfolgt. Von Chen et al. in [CL01], Comaniciu D. et al. in [CRM00] und Bradski in [Bra98] wurden Farbtracker vorgestellt und auf Korrektheit untersucht. Dabei wird das Objekt auf deterministische Weise, anhand dessen Farbe, die über ein Farbhistogramm ermittelt wird, gefunden. Auch von Pérez et al. wurde in [PHVG02] ein Farbhistogramm verwendet, jedoch wird für das Tracken selbst ein Monte-Carlo Algorithmus genutzt. Für bessere Ergebnisse wird ein Partikelfilter angewendet, da dieser Ir- 9 Kapitel 1 Einleitung ritationen durch den Hintergrund verhindert und Objekte auch getracket werden können, wenn sie für einige aufeinanderfolgende Frames komplett verdeckt sind. 10 2. Tracking Framework In diesem Kapitel wird gezeigt, wie der initiale Zustand für die Detektion ermittelt wird und, darauf folgend, wie diese Daten für das Tracken mittels CamShift und optischen Flusses verwendet werden. Zum Abschluss werden die aus dem Tracken erhaltenen Daten über den Kálmán Filter evaluiert, um das Ergebnis des Trackens zu verbessern. 2.1. Detektion Um die initiale Position der zu trackenden Objekte zu ermitteln, müssen diese erst genauer spezifiert werden. Da es sich in dieser Arbeit um Farbmarkierungen an den Pfoten der Nager handelt, kann von jeder zu trackenden Pfote ein Farbhistogramm angefertigt werden, dass dann auf das Originalbild rückprojiziert wird. 2.1.1. Farbhistogramm Abbildung 2.1.: Eine Auswahl während der Initialisierung der Detektion. Vom Bildmaterial innerhalb des grünen Rechtecks wird ein Farbhistogramm angefertigt. Zu Beginn muss, wie in Abb. 2.1 zu sehen, ein Bereich des zu trackenden Objekts ausgewählt werden. Es wird nun, wie in Abb. 2.2 zu sehen, ein für diese Farbe spezifisches Histgramm erzeugt durch welches, im weiteren Verlauf, zu dieser Farbe ähnliche Objekte aus dem Bild herausgefiltert werden können. Dies wird im folgenden Kapitel besprochen. Dabei ist darauf zu achten das hier nur Bereiche mit der Markierungsfarbe selektiert werden, die später getrackt werden soll. Wenn zu viele Bereiche mit der falschen Farbe oder zu viel Farbinformation des Hintergrunds mit 11 Kapitel 2 Tracking Framework Abbildung 2.2.: links: Auswahl einer Pfote von der ein Farbhistogramm angefertigt werden soll. rechts: Das resultierende Farbhistogramm, das für die Rückprojektion verwendet wird. in die Berechnung des Farbhistogramms einbezogen werden verfälscht dies das Ergebnis ungemein, wie man an Abb. 2.3 sehen kann. Abbildung 2.3.: links: Eine zu große Fläche mit nicht zur Pfote gehörenden Pixeln wurde ausgewählt. rechts: Dies führt dazu, dass es zu einer fehlerhaften Selektion während der Detektion kommen kann. 2.1.2. Rückprojektion Nachdem das Histogramm erzeugt wurde, kann es auf jedes weitere Bild angewendet werden. Hierfür wird jeder Pixel p(x, y) des Bildes betrachtet und dessen Position innerhalb des Histogramms bestimmt hx,y . Da nun die Position im Histogramm bekannt ist, wird der Wert dieser Position im Farbhistogramm ausgelesen und in ein neues Bild, der Rückprojektion, übernommen, wie in Abb. 2.4 zu sehen. 12 2.1 Detektion Abbildung 2.4.: Rückprojektion des Farbhistogramms des Eingangs gewählten Objekts. Dieses Bild lässt sich wie folgt interpretieren: Je heller ein Pixel in der Rückprojektion ist, desto wahrscheinlicher handelt es sich um einen Farbpunkt des zu detektierenden Objektes. Wie man in Abb. 2.4 sehen kann, werden hierdurch jedoch auch fälschlicherweise Regionen als Teil des Objektes erkannt die kein Bestandteil dessen sind. Dies kann verschiedene Ursachen haben, die von Spiegelungen während der Aufnahmen, bis hin zu Rauschen des Bildmaterials reichen. Eine Maßnahme dieses Ergebnis etwas zu verbessern ist es, wie in Abb. 2.5 gezeigt, noch einmal über Schwellwerte die zu schwach klassifizierten Strukturen herauszufiltern. In manchen Situationen reicht dies jedoch nicht aus, weswegen das Ergebnis noch einmal über morphologische Filterung verbessert werden kann. Abbildung 2.5.: links: Das Bild, das aus der Rückprojektion ermittelt wird. rechts: Nach der Anwendung des Schwellwerts. 13 Kapitel 2 Tracking Framework 2.1.3. Morphologische Filterung Wie in Abb. 2.6 gezeigt wird kann durch eine gute Parameterwahl für morphologisches Öffnen und Schließen kleine Strukturen herausgefiltert werden, sodass nur noch die relevanten Konturen übrig bleiben. Diese morphologische Öffnung und Schließung eigenen sich am besten, da bei einer puren Anwendung der Erosion einige Regionen ganz verloren gehen können. Dies kann dazu führen, dass auch wichtige Elemente verschwinden. Jedoch ist es durch die Verwendung der morphologischen Öffnung und Schließung möglich die durch Erosion verloren gegangen Regionen teilweise wiederherzustellen. Abbildung 2.6.: links: Das Bild, das aus der, per Schwellwert, verbesserten Rückprojektion ermittelt wird. rechts: Nach der Anwendung morphologischer Filter. Morphologische Öffnung Bei der morphologischen Öffnung handelt es sich um eine Verkettung der Erosion mit einem Strukturelement, gefolgt von einer Dilatation des punktgespiegelten Strukturelements. γB (f ) = δB̌ εB (f ) (2.1) Bei der Öffnung handelt es sich einfach ausgedrückt um die Menge aller Strukturelemente, die in die Eingangsmenge hineinpassen, was auch in Abb. 2.8 verdeutlicht wird [Pra]. 14 2.1 Detektion Abbildung 2.7.: Veranschaulichung der morphologischen Öffnung. Das Bild wurde unter der Public Domain veröffentlicht. Author: MartinPfeiffer Morphologische Schließung Bei der morphologische Schließung handelt es sich um eine Verkettung einer Dilatation mit einem Strukturelement, gefolgt von einer Erosion mit dem punktgespiegelten Strukturelement. φB (f ) = εB̌ δB (f ) (2.2) Abbildung 2.8.: Veranschaulichung der morphologischen Schließung. Das Bild wurde unter der Public Domain veröffentlicht. Author: MartinPfeiffer Einfach ausgedrückt handelt es sich bei der Schließung um die Menge der Punkte, die beim Verschieben des Strukturelements in der zur Eingangsmenge komplementären Menge nicht überstrichen werden [Pra]. 2.1.4. Konturen erkennen Nachdem das Bildmaterial durch die Anwendung von Schwellwerten und morphologischen Filtern von Rauschen und sonstigen Irritationen befreit wurde, wird das von Suzuki et al. in [SB85] vorgestellte Verfahren verwendet, um Konturen im Bild 15 Kapitel 2 Tracking Framework aufzufinden, wie es exemplarisch in Abb. 2.9 zu sehen ist. Abbildung 2.9.: links: Binärbild nach der morphologischen Filterung. rechts: Größte gefundene Kontur. Da jede Pfote eine eindeutige Farbe hat kann davon ausgegangen werden, dass nach dem Auffinden der Konturen nur eine einzige gefundene Fläche großgenug ist um die Pfote darstellen zu können. Jedoch kann es dazu kommen, dass das Bild nach der Anwendung der morphologischen Filter auch weiterhin Rauschen aufweist, wie in Abb. 2.9 zu sehen. Das diese Objekte nicht mit detektiert werden, wird die größte zusammenhängende Fläche für die weitere Verarbeitung verwendet. 2.2. Tracking Im Folgenden werden zwei unterschiedliche Trackingverfahren betrachtet. Dies sind zum einen CamShift, der eine Erweiterung des bekannten Mean Shift Algorithmus [Bra98] darstellt und schon in vielen Bereichen des Trackens verwendet wurde [AXJ04, EBK+ 10, SBK06]. Danach wird ein Überblick über den optischen Fluss gegeben, der auch schon mehrfach beim Tracken von Gegenständen verwendet wurde [MSMK96, DM00, MKT98, Reu]. 2.2.1. CamShift Tracking-Verfahren Beim CamShift handelt es sich um eine Erweiterung des Mean Shift Algorithmus [Bra98]. Im folgenden Abschnitt wollen wir zunächst etwas auf die Theorie des Mean Shift Tracking-Verfahrens eingehen, um darauf aufbauend einen Überblick über CamShift-Tracking zu geben. 16 2.2 Tracking 2.2.1.1. Mean Shift Beim Mean Shift handelt es sich um einen vielseitig einsetzbaren, statistschen, parameterlosen, iterativen Algorithmus, der erstmalig von Fukunaga und Hostetler [FH75] eingeführt wurde, und zur Auffindung von Maxima einer gegebenen Verteilung dient [AXJ04]. Mean Shift wird in vielen Bereichen neben dem Tracking verwendet wie etwa Clustering, Segmentation oder diskontinuierliche Glättungsoperationen [CMM02, CRM03]. Der Mean Shift Algorithmus arbeitet mit einem Suchfenster, das über der zu untersuchenden Verteilung liegt. Innerhalb dieses Suchfensters wird nach der sogenannten Mean Position gesucht - der Position mit dem maximalen Wert. Jedoch müssen die Bildinformationen vor der Verwendung in das richtige Format überführt werden. Dieses Format entspricht dem, was in der Detektionsphase über die Rückprojektion ermittelt wurde: Jeder Pixel des Bildes hat einen Wahrscheinlichkeitswert p(i, j), der angibt wie wahrscheinlich dieser Pixel zum zu verfolgenden Objekt gehört. 2.2.1.2. CamShift Wie zu Beginn schon erwähnt erweiterte Bradski den Mean Shift Algorithmus und erstellte hiermit den CamShift Algorithmus [Bra98]. Da Mean Shift lediglich auf statischen Verteilungen arbeitet, ist er für die Verwendung von Videos nicht zu empfehlen, da sich hier die Daten ständig ändern. Die Größe und Position der Verteilung bleibt somit nicht gleich, da sich das Zielobjekt bewegt. Dieses Problem löst nun CamShift, indem es in jedem Frame des Videos die Größe des Suchfensters an die veränderten Verhältnisse anpasst. CamShift arbeitet exakt wie Mean Shift. Es wird innerhalb des Suchfensters das Maximum mit Hilfe statistischen Momente der nullten und ersten Ordnung bestimmt. mpq = X p(i, j) · ip · j q (2.3) (i,j)∈Ω In (2.3) wird das Moment der Ordnung p, q der Wahrscheinlichkeitsverteilung Ω bestimmt, wobei p(i, j) der Wahrscheinlichkeitswert an der Position (i, j) ist. Um nun die Position des Maximums e zu ermitteln sind die Momente der nullten, sowie die der ersten Ordnung nötig: m00 = X p(i, j) (2.4) (i,j)∈Ω 17 Kapitel 2 Tracking Framework m10 = X p(i, j) · i (2.5) p(i, j) · j (2.6) (i,j)∈Ω m01 = X (i,j)∈Ω Hieraus ergibt sich nun die Position wie folgt: ex = m01 m10 , ey = m00 m00 (2.7) Wie schon erwähnt, handelt es sich hierbei immernoch um die gleiche Verarbeitung wie beim Mean Shift Algorithmus. Im Folgenden wird der für den CamShift spezifische Teil näher erläutert. Zunächst wird die Größe des Suchfensters s ermittelt [Bra98]. s swidth = 2 · m00 , sheight = 1.2 · swidth pmax (2.8) Wobei es sich bei pmax um den höchsten Wahrscheinlichkeitswert handelt, der im Farbhistogramm vorkommt. Wie die Rotation des Zielobjektes berechnet wird, wird hier nun nicht weiter erklärt, da es für unsere weitere Arbeit nur wichtig ist das Begrenzungsrechteck des zu trackenden Objekts zu erhalten. In Abb. 2.10 folgt nun eine kurze Veranschaulichung der Funktionsweise des CamShift Tracking-Verfahrens. 18 2.2 Tracking Für jedes bereits rückprojizierte Bild des Videos Berechne Maximum des aktuellen Suchfensters Nein Verschiebe Suchfenster an die Stelle des Maximums Konvergiert das Suchfenster? Ja Berechne Breite, Höhe und Rotation des Objekts und setze Suchfenster für den nächsten Frame Abbildung 2.10.: Visualisierung des Ablaufes des CamShift Tracking-Verfahrens. 2.2.2. Optischer Fluss Beim optischen Fluss handelt es sich um ein Verfahren, dass aus zwei aufeinanderfolgenden Bildern die Bewegung jedes Bildpunkts berechnet und diese, in Form eines Geschwindigkeitsvektors, auf die Bildebene projiziert, wie in Abb. 2.11 zu sehen ist. Hierbei kann es jedoch zu einer Vielzahl an Problemen kommen, wie etwa veränderte Lichtverhältnisse, oder, dass Objekte in aufeinanderfolgenden Bildern verdeckt oder wieder aufgedeckt werden. vf xt+1 xt f ramet vb f ramet+1 Abbildung 2.11.: Visualisierung des optischen Flusses, wobei xt die Position von x zur Zeit t ist, und xt+1 die Position von x zur Zeit t + 1. Die Vektoren vf und vb beschreiben die Bewegung des Bildpunktes x. Das Verfahren aus Abb. 2.11 wird nun exemplarisch auf das uns zur Verfügung stehende Bildmaterial angewendet und ist, wie in Abb. 2.12 zu sehen. 19 Kapitel 2 Tracking Framework Abbildung 2.12.: Aus den beiden aufeinanderfolgenden Bildern resultiert das rechte Bild. Die Werte wurden hier normalisiert, so dass sie zu Demonstrationszwecken sichtbar gemacht werden können. Wie man am Ergebnisbild des optischen Flusses in Abb. 2.13 sehen kann, kommt es jedoch auch dazu, das Bewegungen von für uns nicht interessanten Objekten mit aufgezeichnet und verarbeitet werden (für uns relevante Bereiche wurden markiert). Um nur die für unser Objekt relevanten Bewegungsdaten herauszufiltern, können wir auf das zuvor vorgestellte Verfahren zurückgreifen, der Detektion über Farbhistogramme. Hierdurch wir die Region in der sich das Objekt befindet ausgegeben und es können leicht die relevanten Informationen ermittelt werden. Abbildung 2.13.: Zusammengeführtes Ergebnisbild des optischen Flusses, der sowohl den Bewegungsfluss in x-, als auch in y-Richtung veranschaulicht. 20 2.3 Kálmán Filter 2.3. Kálmán Filter In einer normalen Umgebung erhält man von verschiedensten Sensoren Daten, muss jedoch berücksichtigen, dass diese Daten aufgrund von Messungenauigkeiten oder fehlerhaften Sensoren nicht immer korrekt sein werden. Wenn wir verschiedene Sensoren besitzen deren potentielle Fehler kaum bis gar nicht korrelieren, so kann ein Framework verwenden werden, um das Ergebnis der Messungen zu verbessern. Beim Kálmán Filter handelt es sich um eben so ein Framework, das eine ständige Vorhersage gibt, und dessen Daten immer wieder mit den aktuellen Messwerten aktualisiert werden müssen [WB95]. Am einfachsten können wir uns das am Beispiel eines Autos vorstellen, das sowohl über einen GPS Sensor, als auch über Sensoren zur Weg- und Geschwindigkeitsmessung an den Reifen verfügt. Der GPS Sensor liefert direkte Daten über die aktuelle Position, wohingegen die Sensoren an den Reifen die Reifenposition ausgeben, indem die Bewegung über die Zeit integriert wird. Nun können beide Sensoren unabhängig voneinander verwendet werden, liefern jedoch grundlegend verschiedene mögliche Fehler. Der GPS Sensor kann die Position bis auf 7.8 Meter (mit RMS1 4 Meter) genau bestimmen [Def01]. Die Sensoren zur Weg- und Geschwindigkeitsmessung hingegen sind bis auf wenige Zentimeter genau, driften jedoch durch Integration von kleinen Ungenauigkeiten immer weiter vom ursprünglichen Wert ab. Nun wird die vorherige Position und eine ungenaue Schätzung der aktuellen Position des Autos herangezogen, und mit Hilfe des Kálmán Filters eine neue Position unter Zuhilfenahme der Weg- und Geschwindigkeitsmessung vorhergesagt. Da diese Schätzung jedoch von der eigentlichen Position abgedriftet sein kann wird eine Linearkombination der Vorhersage und der Messung des GPS Sensors verwendet um die Abschätzung zu verfeinern und ein besseres Ergebnis zu bekommen. Auf unsere Anwendung übertragen haben wir einen Initialzustand, an dem der Benutzer die Position, sowie die genaue Beschränkung des Objektes angeben kann. Ab dieser Position beginnt das Tracking über zwei unterschiedliche Sensoren. Zum einen wird mittels CamShift eine maximale Fläche des Farbmarkers ermittelt, zum anderen kann über den optischen Fluss die Bewegung des Objektes in der durch CamShift festgelegten Begrenzung ermittelt werden. Beide Verfahren haben verschiedene potentielle Fehlerquellen, die für Ungenauigkeit bei der Messung verantwortlich sind. Es kann sein, dass aufgrund von schlechten Lichtverhältnissen oder Verdeckung das Objekt kurze Zeit nicht sichtbar ist, somit kann keine Kontur der gewählten Farbe ermittelt werden. Deshalb fällt der Sensor über CamShift aus. Beim Sensor für den optischen Fluss gibt es sehr ähnliche Probleme die für eine gewisse Ungenauigkeit sorgen, etwa auch sich verändernde Lichtverhältnisse, als auch das Problem, dass Objekte teilweise oder ganz verdeckt sind oder wieder aufgedeckt werden. Obwohl es sich hierbei nach exakt den gleichen Problemklassen anhört handelt es sich um ganz unterschiedliche Fehler die hierdurch auftreten. Während bei CamShift 1 root mean square, im Deutschen auch quadratischer Mittelwert genannt. 21 Kapitel 2 Tracking Framework eventuell kein Objekt mehr erkannt werden kann, da die gefundenen Konturen zu klein sind, um als zusammenhängende Fläche erkannt werden zu können, wird die Bewegungsrichtung beim optischen Fluss lediglich etwas ungenauer. 2.3.1. Schätzung Die Schätzung ist der erste von zwei Schritten des Kálmán Filters. Hierbei wird der Zustandsvektor x− t berechnet, der den Zustand des Systems zum Zeitpunkt t beschreibt [WB95]. + x− t = S · xt−1 + F · jt (2.9) Dieser Wert, x− t , weicht jedoch um einen Schätzwert von tatsächlichen Wert xt ab. Um diesen Schätzfehler zu berechnen wird die Kovarianzmatrix + Et− = S · Et−1 + ST + Q (2.10) berechnet, die ebenfalls in jedem Durchgang neu berechnet und aktualisiert werden muss [WB95]. 2.3.2. Korrektur Die Korrektur ist der zweite Schritt des Kálmán Filters, bei dem es darum geht die gerade eben durchgeführte Schätzung x− t mit Hilfe der Messung zt zu verbessern, + wodurch man den Wert xt erhält. Mit Hilfe dieser Werte kann man nun den KálmánGain Kt = Et− · H T (H · Et− · H T + R)−1 (2.11) berechnen [WB95]. Hier ist zu beachten, dass es sich bei H um eine m × n Matrix handelt, die es ermöglicht die Messung zt mit dem Zustandsvektor zu vergleichen. + Durch die nun erzeugten Werte Kt , x− t und H, sowie zt kann xt berechnet werden: − − x+ t = xt + Kt (zt − H · xt ) (2.12) Falls die Kovarianzmatrix R gegen Null geht, wird die aktuelle Messung zt höher gewichtet, als die abgeschätze Messung H · x− t . Anders gesprochen wird der Messung mehr vertraut als der Schätzung. Wenn jedoch die Kovarianzmatrix Et− gegen Null tendiert geschieht genau das Gegenteilige. Hier ist nun die Schätzung höher gewichtet, und somit wird der Schätzung mehr vertraut als der eigentlichen Messung. 22 2.3 Kálmán Filter 2.3.3. Kálmán Filter Algorithmus Der Kálmán Filter Algorithmus wird für jeden Frame t durchlaufen. Abb. 2.14 zeigt einen Überblick der Konzepte, die gerade erklärt wurden. + Beim ersten Durchlauf müssen sinnvolle Werte für x+ t−1 und Et−1 gewählt werden, damit die erste Abschätzung des A-priori Zustands und der Kovarianzmatrix erfolgen kann. Dann wird mit der darauf folgenden Messung zt der Korrekturschritt durchgeführt. Hier wird zuerst der Kálmán-Gain berechnet, durch den festgelegt wird mit welcher Gewichtung der Messwert in die Schätzung einfließen wird. Darauf folgend werden der A-posteriori Zustand und die Kovarianzmatrix bestimmt und das Verfahren kann bei der nächsten Messung von vorne beginnen. Korrektur (1) Kálmán-Gain berechnen Kt = Et− · H T (H · Et− · H T + R)−1 (2) Schätzung mit Messung verbessern − − x+ t = xt + Kt (zt − H · xt ) (3) A-posteriori Fehler-Kovarianzmatrix Et+ = (I − Kt · H) · Et− Startwerte + x+ 0 und E0 Abschätzung (1) Zustandsabschätzung + x− t = S · xt−1 + F · jt (2) A-priori Fehler-Kovarianzmatrix + Et− = S · Et−1 + ST + Q Abbildung 2.14.: Ablaufdiagramm des Kálmán Filters. 23 3. Implementierung Im Rahmen dieser Arbeit wurde zusätzlich ein Programm angefertigt, das genau die oben genannten Verfahren implementiert. Hier soll ein Überblick über die Architektur dieses Programmes gegeben werden, sowie eine kurze Erklärung wie man es verwendet und bedient. Zu Beginn wird jedoch noch eine kurze Übersicht der verwendeten Software gegeben. 3.1. Verwendete Software Im Folgenden soll zunächst ein kurzer Überblick über die für die Implementation verwendete Software gegeben werden. OpenCV Bei OpenCV [Ope] handelt es sich um eine Bibliothek mit Algorithmen der Bildverarbeitung und des maschinellen Sehens. Hierdurch stellt es uns eine große Sammlung an Funktionen und Klassen aus den Bereichen der morphologischen Bildverarbeitung, die im späteren Verlauf beim CamShift Algorithmus benötigt werden, sowie der Videoanalyse, die für den optischen Fluss, als auch für den Kálmán Filter gebraucht werden, bereit. Qt Da es in OpenCV [Ope] nur sehr eingeschränkte Möglichkeiten gibt eine komplexere Gui Anwendung zu schreiben wurde hierfür aufgrund der diversen Einstellungsmöglichkeiten, wie etwa im Einstellungsdialog, das GUI Framework Qt [Qt4] verwendet. Es bietet einfach verständliche Methoden und Klassen, die weit über die Möglichkeiten von OpenCV hinausreichen. 25 Kapitel 3 Implementierung 3.2. Architektur Nachfolgend soll ein kurzer Überblick über das Programm gegeben werden, dass unter Verwendung der zuvor entwickelten Verfahren und Algorithmen entwickelt wurde. Zuerst wird auf die Architektur des Programms eingegangen, gefolgt von weiteren Informationen über bestimmte Teile der Implementation. Objektselektion Die zu trackenden Elemente auswählen Input Videomaterial Verarbeitung • Schätze neue Position • Berechne CamShift solange Video nicht zu Ende • Berechne optischen Fluss • Korrigiere Messung • Zeichne Ergebnisse Abbildung 3.1.: Ablaufdiagramm des Programms Abb. 3.1 gibt einen Überblick über die Architektur des Programmes (Im weiteren Verlauf CSOFT genannt). Hierbei handelt es sich um eine all-in-one Lösung die sowohl die Daten auswertet, als sie auch gleich zur Laufzeit anzeigt. Die gesamte Software ist in C++ unter Zuhilfenahme der Bibliotheken Qt [Qt4] und OpenCV [Ope] geschrieben. Nach diesem groben Überblick über den Aufbau des Programms, soll in Abb. 3.2 ein detailierterer Blick auf den Schritt der Verarbeitung geworfen werden. 26 3.2 Architektur Input Die Daten des aktuellen Frames auswerten Schätzung Schätze nächste Position Messung Geschätze Daten mit der Messung durch den optischen Fluss verbessern Rückprojektion Farbhistogramm auf Bild rückprojizieren Kontursuche Nach Kontur suchen Schwellwerte Schwellwerte auf Frame anwenden Morphologie Morphologische Filter auf Rückprojektion anwenden Abbildung 3.2.: Ablaufschema des Verarbeitungsschritts, im Programm Process genannt. Die Auswertung beginnt mit dem Input, in Abb. 3.2 links oben. Es wird vom Video der aktuelle und der letzte Frame kopiert. Von diesen beiden Frames wird der optischen Fluss berechnet. Alle Daten werden zu einem Paket verpackt und an den eigentlichen Objektdetektor übermittelt. Hier wird nun die nächste mögliche Position, aufbauend auf allen gesammelten Daten, geschätzt, wodurch die zur Verfügung gestellten Daten noch einmal für diesen Objektdektor aufbereitet werden. Es müssen somit nicht alle Regionen im Bild berücksichtigt werden, sondern die Suche kann auf einen kleinen Bereich um die geschätze Position eingeschränkt werden. Im nächsten Schritt kann auf die ausgewählte Region die Rückprojektion angewendet werden und darauf folgend auf die Rückprojektion die Schwellwerte mit einbezogen werden. Nachdem alle weiteren Schritte abgearbeitet wurden, die für CamShift wichtig sind, kann die Messung verbessert werden, indem eine Bewegungsabschätzung durch den optischen Fluss mit hinzugezogen wird. Abschließend werden die ermittelten Daten in das Ausgabebild eingezeichnet und der Prozess fährt mit dem nächsten Bild fort. 27 Kapitel 3 Implementierung 3.3. Initialisierung Zu Beginn muss das Programm über die Konsole gestartet werden. Hierbei muss ein einziger Parameter, die Videodatei, übergeben werden. Nun beginnt die Initialisierungsphase in der vom Benutzer die Objekte markiert werden, die im weiteren Verlauf der Ausführung detektiert und getrackt werden sollen. Abbildung 3.3.: Die Selektion eines Objekts, dass im weiteren Verlauf getrackt werden soll. In Abb. 3.3 ist zu sehen, wie Objekte markiert werden, die in der weiteren Ausführung vom Programm getrackt werden sollen. Nachdem die Auswahl bestätigt wurde kommt der Nutzer zum nächsten Dialog, in dem er die Schwellwerte für das Auffinden der Kontur anpassen kann, wie in Abb. 3.4 zu sehen ist. Hierbei kann er die Werte für die Helligkeit sowie für die Sättigung einstellen. Außerdem kann die Größe des morphologischen Filters bestimmt werden, mittels dem das rückprojizierte Histogramm noch einmal gefiltert werden kann. Die hierfür erstellte Gui kann Abb. 3.5 entnommen werden. Abbildung 3.4.: Die verschiedenen Einstellungsmöglichkeiten, nachdem das Objekt innerhalb des Bildes ausgewählt wurde. 28 3.4 Tracker Abbildung 3.5.: Dialog um die Schwellwerte für jedes Objekt individuell einzustellen. 3.4. Tracker Da im ersten Frame des Videos die Startwerte vorgegeben werden findet das Tracken erst ab dem zweiten Frame statt. Hierbei wird im aktuellen Frame, auf Basis des vorherigen Frames, die mögliche Position des Objektes bestimmt und in diesem Bereich nach entsprechenden Konturen des Objektes gesucht. Im nächsten Schritt wird, ebenfalls in diesem Bereich, die mögliche Bewegung des Objektes über den optischen Fluss bestimmt um dies in der späteren Auswertung in die Bestimmung der Position mit einfließen zu lassen. Falls die Konturen kein Ergebnis liefern wird hier über die vorherigen Daten ein möglicher Aufenthaltsort mitsamt Begrenzungsrechteck bestimmt, die im weiteren Verlauf verwendet werden. Nun werden die berechneten Daten der Kontur verwendet um über einen Kálmán Filter eine mögliche neue Position abzuschätzen Diese Position wird dann mit den Bewegungsdaten des optischen Flusses verbessert. 29 Kapitel 3 Implementierung Abbildung 3.6.: Beispiele der Ergebnisse des entwickelten Programms. In Abb. 3.6 sind zwei Beispiele zu sehen, in denen mehrere Pfoten gleichzeitig getrackt werden. 30 4. Auswertung In diesem Kapitel soll eine Auswertung des erstellten Programms (CSOFT) stattfinden in der dessen Robustheit und Zuverlässigkeit getestet wird. Zu Beginn wird der Datensatz vorgestellt, auf dem die Auswertung basiert und die Schwierigkeiten erläutert die hierbei auftreten können. Im zweiten Teil wird sowohl eine qualitative als auch eine quantitative Auswertung aufgeführt. 4.1. Datensatz Nachfolgend verwenden wir die Teilmenge des zur Verfügung stehenden Videomaterials, in der die Rattenpfoten im Sichtfeld sind. Hierbei wurden verschiedene Testfälle untersucht, in denen sich die zu trackenden Pfoten schnell bewegten, schwer zu erkennen, oder kurzzeitig verdeckt waren. Wir stellen einen Vergleich zwischen dem entwickelten Programm (CSOFT) und einer Implementation die versucht über CamShift allein zu Tracken (CS) auf. Abbildung 4.1.: Beispiele des vorhandenen Videomaterials. 31 Kapitel 4 Auswertung Abbildung 4.2.: Weitere Beispiele des vorhandenen Videomaterials. Abb. 4.1 und Abb. 4.2 zeige die normale Beschaffenheit des vorhandenen Videomaterials. Abbildung 4.3.: Von links oben nach rechts unten auf die grün eingefärbte Pfote achten. Videomaterial mit schnellen, recht willkürlichen Bewegungen. Abb. 4.3 zeigt die vorkommenden schnellen und teils auch willkürlichen Bewegungen, die nur schwer vorhersagbar sind. Eine weitere Schwierigkeit, die partielle Verdeckung, kann man in der Bilderreihe in Abb. 4.4 sehen. 32 4.2 Qualitative und Quantitative Analyse Abbildung 4.4.: Von links oben nach rechts unten. Beispiel für partielle Verdeckung. Im folgenden Kapitel wird die durchgeführte Vergleichsanalyse der Programme CSoft und CS am eben vorgestellten Videomaterial dargestellt. 4.2. Qualitative und Quantitative Analyse Für die Analyse des Verfahrens verwenden wir eine einfache dreigliedrige Bewertung. Hierbei kann die Erkennung einer Pfote korrekt sein, es kann fälschlicherweise eine Pfote detektiert werden, obwohl keine vorhanden ist, oder es werden Pfoten nicht erkannt, obwohl sie in der Szene vorhanden sind. Wie weiter oben bereits erwähnt, beschränken wir uns hier auf die Ausschnitte der Videos in denen die Pfoten auch tatsächlich im Bild sichtbar sind. Des Weiteren ist hier zu beachten, dass die Pfoten einzeln ausgewertet wurden und somit auch separat in die Bewertung einfließen. Für die verwendeten Programme stellt es jedoch kein Problem dar auch mehrere Pfoten gleichzeitig zu tracken. 33 Kapitel 4 Auswertung 92.97 % 1.6 · 100 % 105 80 % 72.16 % 1.2 · 105 60 % 26.28 % 45,299.0 40 % 20 % 1.79 % 5.24 % 3,049.0 8,927.0 1.55 % 2,678.0 0% CSOFT CS Abbildung 4.5.: In diesem Diagramm ist die Auswertung von insgesamt 172354 verarbeiteten Datensätzen des Videomaterials durch CSOFT und CS zu sehen. Hierbei steht blau für eine korrekte Detektion, rot für eine falsch negative und braun für falsch positive Detektion. Wie in Abb. 4.5 zu sehen ist, arbeitet CSOFT qualitativ besser als das Referenzprogramm CS, da mehr vorkommende Pfoten erkannt und auch getrackt wurden. In Abb. 4.5 ist des Weiteren zu erkennen, dass der hier vorgestellte Ansatz quantitativ bessere Ergebnisse liefert, als würde nur ein CamShift-Tracker verwendet werden. Hierbei erreicht das CSOFT Verfahren bei fälschlicherweise als Pfote erkannten Objekten eine höhere Robustheit gegebenüber dem CS Verfahren. Des Weiteren werden auch mehr in der Szene wirklich existierende Pfoten erkannt und getrackt. Das in dieser Arbeit vorgestellte Verfahren ist, wie bereits angesprochen wurde, gegen falsch negative Ergebnisse stabiler, da durch die Verwendung des optischen Flusses und des Kálmán Filter eine relativ gute Vorhersage gemacht werden kann, wo sich die zu trackende Pfote im nächsten Frame befinden wird. Es sollte hier erwähnt werden, dass die Auswahl des zu trackenden Bereichs zu Beginn einen Einfluss auf das Verhalten beider Verfahren hat. Es wurde während der Tests darauf geachtet diese Auswahl für beide Verfahren in gleich hoher Qualität zu durchzuführen. 34 5. Schlussfolgerung Obwohl das hier implementierte Verfahren bei nicht sichtbaren Pfoten lediglich die Funktionalität eines CamShift-Trackers inne hat, liefert es in allen anderen Fällen bessere Ergebnisse als würde nur ein CamShift Tracking-Verfahren verwendet werden. Des Weiteren ist es wesentlich robuster, da durch die zusätzliche Verwendung des optischen Flusses eine Vorhersage über die nächste Position der Pfoten gemacht werden kann. Dies ist bei purem Verwenden von CamShift nur bedingt möglich. Weiterführende Arbeiten In fortführenden Arbeiten kann das Tracking, aufbauend auf dieser Arbeit, über ein multiples Kamerasystem auf den dreidimensionalen Raum ausgeweitet werden, was den Vorteil bietet, dass zusätzlich Tiefeninformationen aus den Daten extrapoliert werden können. Eine weitere Möglichkeit ist, ganz auf CamShift zu verzichten und eine Cascade Klassifizierung zu nutzen, wie sie von Paul Viola in [VJ01] vorgeschlagen, und von Rainer Lienhart in [LM02] weiter verbessert wurde. 35 Danksagung An dieser Stelle möchte ich meinen Betreuern, Herrn Prof. Dr. Brox und Philipp Fischer für die freundliche Unterstützung bei Fragen und Problemen, sowie der Versorgung mit Videomaterial danken. Ganz besonderer Dank geht an meine Eltern, die mir das Studium erst ermöglicht und mich jederzeit dabei unterstützt haben. Weiterer Dank geht an meine Kommilitonen Jan Donath, Johannes Güttler und Heinke Hihn, die mir bei Fragen und Denkansätzen für diese Arbeit immer hilfreich zur Seite standen, und an meine Lebensgefährtin, Laura Wächter, für die viele Geduld und das ständige Korrekturlesen. 37 A. CD Der Arbeit liegt eine CD mit dem entwickelten Programm CSOFT bei. Hierbei enthält die CD den vollständigen Source Code des Programms, als auch Makefiles und eine bereits kompilierte Version für Linux. Falls es für andere Plattformen kompiliert werden soll benötigt man CMake1 , um Projektdateien für die entsprechende Plattform zu generieren. Es kann jedoch nicht dafür garantiert werden, dass das Programm unter anderen Plattformen kompiliert, da dies nicht Teil der Aufgabenstellung war. 1 http://www.cmake.org 39 Literaturverzeichnis [AL04] Argyros, Antonis A. ; Lourakis, Manolis I. A.: Real-Time Tracking of Multiple Skin-Colored Objects with a Possibly Moving Camera. In: In: ECCV, 2004, S. 368–379 [AXJ04] Allen, John G. ; Xu, Richard Y. D. ; Jin, Jesse S.: Object tracking using CamShift algorithm and multiple quantized feature spaces. In: Proceedings of the Pan-Sydney area workshop on Visual information processing. Darlinghurst, Australia, Australia : Australian Computer Society, Inc., 2004 (VIP ’05). – ISBN 1–920682–18–X, S. 3–7 [Bra98] Bradski, Gary R. Computer Vision Face Tracking For Use in a Perceptual User Interface. 1998 [CL01] tzong Chen, Hwann ; luh Liu, Tyng. Trust-Region Methods for RealTime Tracking. 2001 [CMM02] Comaniciu, Dorin ; Meer, Peter ; Member, Senior: Mean shift: A robust approach toward feature space analysis. In: IEEE Transactions on Pattern Analysis and Machine Intelligence 24 (2002), S. 603–619 [CRM00] Comaniciu, D. ; Ramesh, V. ; Meer, P.: Real-time tracking of nonrigid objects using mean shift. In: Computer Vision and Pattern Recognition, 2000. Proceedings. IEEE Conference on Bd. 2, 2000. – ISSN 1063–6919, S. 142–149 vol.2 [CRM03] Comaniciu, Dorin ; Ramesh, Visvanathan ; Meer, Peter: KernelBased Object Tracking. In: IEEE Trans. Pattern Anal. Mach. Intell. 25 (2003), Mai, Nr. 5, S. 564–575. – ISSN 0162–8828 [Def01] Defence, department O. GLOBAL POSITIONING SYSTEM STANDARD POSITIONING SERVICE PERFORMANCE STANDARD. Oktober 2001 [DM00] Decarlo, Douglas ; Metaxas, Dimitris: Optical flow constraints on deformable models with applications to face tracking. In: International Journal of Computer Vision 38 (2000), S. 99–127 [EBK+ 10] Exner, D. ; Bruns, E. ; Kurz, D. ; Grundhofer, A. ; Bimber, O.: Fast and robust CAMShift tracking. In: Computer Vision and Pattern Recognition Workshops (CVPRW), 2010 IEEE Computer Society Conference on IEEE, 2010, S. 9–16 41 Literaturverzeichnis [FH75] Fukunaga, K. ; Hostetler, L.: The estimation of the gradient of a density function, with applications in pattern recognition. In: Information Theory, IEEE Transactions on 21 (1975), Nr. 1, S. 32–40. – ISSN 0018–9448 [KGB+ 02] Kuchi, Prem ; Gabbur, Prasad ; Bhat, P. S. ; S., Sumam D. ; Smieee, S. Human Face Detection and Tracking using Skin Color Modeling and Connected Component Operators. 2002 [LM02] Lienhart, Rainer ; Maydt, Jochen: An Extended Set of Haar-Like Features for Rapid Object Detection. In: IEEE ICIP 2002, 2002, S. 900–903 [MKT98] Mikic, I. ; Krucinski, S. ; Thomas, J.D.: Segmentation and tracking in echocardiographic sequences: active contours guided by optical flow estimates. In: Medical Imaging, IEEE Transactions on 17 (1998), Nr. 2, S. 274–284. – ISSN 0278–0062 [MSMK96] Mae, Y. ; Shirai, Y. ; Miura, J. ; Kuno, Y.: Object tracking in cluttered background based on optical flow and edges. In: Pattern Recognition, 1996., Proceedings of the 13th International Conference on Bd. 1, 1996. – ISSN 1051–4651, S. 196–200 vol.1 [Ope] OpenCV: Open Source Computer Vision Library [PHVG02] Pérez, P. ; Hue, C. ; Vermaak, J. ; Gangnet, M.: Color-based probabilistic tracking. In: In Proc. ECCV, 2002, S. 661–675 [Pra] Lehrstuhl für Mustererkennung und Bildverarbeitung, Bildverarbeitungspraktikum 2 [Qt4] Qt4 GUI Framework [Reu] Reuter, P. Nutzung des Optischen Flusses bei der modellgestützten Verfolgung von Fußgängern in Videobildfolgen. Diplomarbeit, Institut für Algorithmen und Kognitive Systeme, Fakultät für Informatik der Universität Karlsruhe (TH), Oktober [RTH96] Rasmussen, Christopher ; Toyama, Kentaro ; Hager, Gregory D.: Tracking Objects By Color Alone. 1996. – Forschungsbericht [SB85] Suzuki, S. ; Be, K.: Topological structural analysis of digitized binary images by border following. In: Computer Vision, Graphics, and Image Processing 30 (1985), April, Nr. 1, S. 32–46. – ISSN 0734189X [SBK06] See, Alex ; Bin, Kok ; Kang, Liaw Y. FACE DETECTION AND TRACKING UTILIZING ENHANCED CAMSHIFT MODEL. 2006 [SP05] Soriano, Maricor ; Pietikäinen, Matti: Comparison of skin color detection and tracking methods under varying illumination. In: Journal of Electronic Imaging 14 (2005), S. 1–19 42 Literaturverzeichnis [VJ01] Viola, Paul ; Jones, Michael: Rapid object detection using a boosted cascade of simple features, 2001, S. 511–518 [WB95] Welch, Greg ; Bishop, Gary: An Introduction to the Kalman Filter. Chapel Hill, NC, USA : University of North Carolina at Chapel Hill, 1995. – Forschungsbericht 43