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