Diplomarbeit Motion Tracking mit Webcams
Transcrição
Diplomarbeit Motion Tracking mit Webcams
STUDENTEN Stephan Graf, Sascha Hofer, Martin Schindler BETREUENDER DOZENT Marcus Hudritsch EXPERTE Dr. Peter Fornaro AUFTRAGGEBER Marcus Hudritsch DA09_0405 Muttenz, Dezember 2004 Diplomarbeit Motion Tracking Vorwort An dieser Stelle soll ein Danke an all diejenigen ausgesprochen werden, die das Zustandekommen dieser Diplomarbeit ermöglicht haben. Ganz besonders danken möchten wir uns bei Herrn Marcus Hudritsch für die hervorragende Zusammenarbeit und die tatkräftige Unterstützung in allen Angelegenheiten, sowie seinen kritischen Fragen und guten Ratschlägen, die uns sicher zum Ziel geführt haben. Des weiteren einen speziellen Dank an Herrn Knobel und seinen Mitarbeitern der Firma IFE in Laufen, sowie Herrn Thomas Scheidegger alias NETMaster für ihre hilfreichen Tipps. Zu guter Letzt danken wir unseren Eltern, die durch ihre finanzielle und sonstige Unterstützung, das Studium erst möglich machten. Muttenz, Dezember 2004 Seite 2 von 107 Diplomarbeit Motion Tracking Abstract Das digitale Erkennen und Erfassen von Bewegung im Raum gehört sicherlich zu den faszinierendsten Gebieten der Informatik. Mitunter gehört es aber auch zu den komplexeren Problemen. Die Diplomarbeit Motion Tracking mit Webcams wurde von Herrn Hudritsch, Dozent an der Fachhochschule beider Basel, im Anschluss an die gleichnamige Projektarbeit initiiert. Die grundsätzliche Machbarkeit eines Motiontrackings auf der Basis von Webcams wurde im Rahmen der Projektarbeit erwiesen und in einer ersten Form umgesetzt. Zu Beginn der Diplomarbeit wurde als Ziel vereinbart, die Benutzeroberfläche der vorangegangenen Projektarbeit als Client-Server Architektur umzusetzen, welche unabhängig von der Anzahl Kameras sein soll. Ein weiterer Punkt war die weitgehende Automatisierung der Kalibrierung. Die Diplomarbeit zeichnete sich durch ein breites Spektrum an verwendeten Technologien, wie COM, DirectShow unter .NET, C++, C-Sharp und Multithreading aus. Aber auch Fachwissen in Elektronik und handwerkliches Geschick sowie die praktische Umsetzung der Kenntnisse in Bildverarbeitung und verteilten Anwendung waren gefragt. Im Rahmen einer weiterführenden Arbeit könnte eine Umsetzung der 3D-Daten in einem Robotersystem, 3D-Animationssoftware oder Spieleanwendung ein Thema sein. Muttenz, Dezember 2004 Seite 3 von 107 Diplomarbeit Motion Tracking Inhaltsverzeichnis 1. Einleitung..................................................................................................................7 1.1. Umfang der Diplomarbeit ........................................................................................8 1.1.1. Hauptziele ........................................................................................................8 1.1.2. Erweiterte Ziele ................................................................................................8 1.1.3. Erreichte Ziele ..................................................................................................8 2. Erarbeitete Grundlagen ...........................................................................................9 2.1. Grundlagen Motion Tracking ..................................................................................9 2.2. Auswahl Kameras...................................................................................................9 2.3. Kalibrierung ..........................................................................................................10 2.4. Featurepunkt Extraktion........................................................................................11 2.4.1. Evaluation der kontrastreichen Punkte...........................................................11 2.4.2. LED von Umgebung unterscheiden ...............................................................12 2.4.3. LED von anderem LED unterscheiden...........................................................12 2.4.4. LED erfassen und Position berechnen...........................................................13 2.4.5. LED Identifikation mittels Tracking und Farbe................................................13 2.5. Synchronisation der Kameras...............................................................................14 3. DirectShow .............................................................................................................15 3.1. COM - The Component Object Model ..................................................................16 3.2. DirectShow Filter ..................................................................................................17 3.3. DirectShow Interfaces...........................................................................................18 3.3.1. ICaptureGraphBuilder2 ..................................................................................18 3.3.2. IGraphBuilder .................................................................................................18 3.3.3. IBaseFilter ......................................................................................................18 3.3.4. IMediaFilter ....................................................................................................18 3.3.5. IMediaControl.................................................................................................19 3.3.6. IMediaEventEx ...............................................................................................19 3.3.7. IMediaSeeking ...............................................................................................19 3.3.8. IMediaPosition................................................................................................19 3.3.9. IMediaEvent ...................................................................................................19 3.3.10. Implementation in C# .....................................................................................19 3.4. DirectShow Filter Graph Manager ........................................................................21 3.5. Erstellen eines Filter Graphen ..............................................................................22 3.6. Capturing mit DirectShow .....................................................................................24 3.7. Steuerung der Eigenschaften in den Code implementieren..................................25 4. Softwarekonzept ....................................................................................................27 4.1. Der Client..............................................................................................................28 4.1.1. Filter-Server ...................................................................................................28 Muttenz, Dezember 2004 Seite 4 von 107 Diplomarbeit Motion Tracking 4.1.2. 2D-Tracker (IPAN) .........................................................................................29 4.1.3. Client Netzwerkmodul ....................................................................................29 4.1.4. Kalibrierung ....................................................................................................29 4.1.5. TSAI-Converter ..............................................................................................29 4.1.6. DirectShow Graph..........................................................................................30 4.1.7. Klassenstruktur des Clients............................................................................31 4.2. Der Server ............................................................................................................32 4.2.1. Server Netzwerkmodul...................................................................................32 4.2.2. Auto Assoziation ............................................................................................33 4.2.3. 3D-Tracker .....................................................................................................33 4.2.4. OpenGL .........................................................................................................33 4.2.5. Klassenstruktur des Servers ..........................................................................33 5. Interprozesskommunikation (IPC) ........................................................................34 5.1. Einleitung ..............................................................................................................34 5.2. Anforderungen ......................................................................................................34 5.3. Protokoll................................................................................................................35 5.3.1. Verbindungsrelevante Informationseinheiten .................................................35 5.3.2. Datentransport bezogene Informationseinheiten............................................35 5.3.3. Verbindungsaufbau und Abbau......................................................................36 5.3.4. Heartbeat .......................................................................................................37 6. Datenstruktur .........................................................................................................38 6.1. FPFrame/Color .....................................................................................................39 6.2. FPFrameArray/Container......................................................................................40 7. 2D-Tracker ..............................................................................................................41 7.1. Einleitung ..............................................................................................................41 7.2. Das Featurepoint Tracking Problem .....................................................................42 7.3. Definition Featurepoint Tracking Problem.............................................................43 7.4. Anforderungen ......................................................................................................43 7.5. Evaluation .............................................................................................................44 7.6. Tracking Algorithmus ............................................................................................45 7.6.1. Beschreibung .................................................................................................45 7.6.2. Initialisierung ..................................................................................................46 7.6.3. Fortführendes Tracking ..................................................................................47 7.6.4. Postprocessing...............................................................................................47 7.6.5. Kostenfunktion ...............................................................................................48 7.6.6. Typische Trackerparameter ...........................................................................51 8. 3D-Tracker ..............................................................................................................53 8.1. Synchronisation ....................................................................................................53 8.2. Berechnung der 3D-Position.................................................................................54 8.3. Schnitt zweier windschiefen Geraden...................................................................55 Muttenz, Dezember 2004 Seite 5 von 107 Diplomarbeit Motion Tracking 8.4. 8.5. 8.6. Töpfe und Kugeln .................................................................................................56 Bone-Model (Knochenmodell) ..............................................................................58 Epipolarlinie ..........................................................................................................59 9. Transformfilter .......................................................................................................60 10. Kalibrierung............................................................................................................62 11. Featurepunkt-Bodypunkt-Assoziation .................................................................71 12. Hardware.................................................................................................................73 12.1. Computer ..............................................................................................................73 12.2. Client-Rechner:.....................................................................................................73 12.3. Server-Rechner: ...................................................................................................73 12.4. Installierte Software ..............................................................................................73 12.5. Webcam ...............................................................................................................74 12.6. Kalibrierungswürfel ...............................................................................................75 12.7. LED Exoskelett .....................................................................................................76 12.7.1. Schema Stromversorgung LED-Exoskelett ....................................................77 12.7.2. Bestückungsplan Stromversorgung LED Exoskelett ......................................78 12.7.3. Stückliste Stromversorgung LED Exoskelett ..................................................78 12.7.4. Technische Daten LEDs ................................................................................79 13. Ausblick ..................................................................................................................80 14. Quellenverzeichnis ................................................................................................81 14.1. Literatur ................................................................................................................81 14.2. Internet .................................................................................................................82 15. Anhang....................................................................................................................83 15.1. Testreihen.............................................................................................................83 15.2. Protokolle..............................................................................................................90 15.3. Wochenrapporte ...................................................................................................99 15.4. Abbildungen........................................................................................................105 15.5. Ehrlichkeitserklärung ..........................................................................................106 15.6. Diplomarbeits CD-ROM ......................................................................................107 Muttenz, Dezember 2004 Seite 6 von 107 Diplomarbeit Motion Tracking 1. Einleitung Motion Tracking ist ein Verfahren, um die Koordinaten eines Raumpunktes in Echtzeit zu bestimmen und zu verfolgen. Einerseits müssen im Raum die interessanten Punkte vom restlichen Bild unterschieden werden (Featurepunkt Extraktion) - und das von mehreren Kameras gleichzeitig (Synchronisation) - andererseits müssen die Punkte auch identifiziert und über einen Zeitraum hinweg zuverlässig verfolgt werden können (Featurepoint Tracking) und schliesslich müssen Beziehungen zwischen den unterschiedlichen Kamerabildern hergestellt werden, so das identische Bildpunkte auch richtig in den 3-Dimensionalen Raum zurückgerechnet werden können (3D-Tracking). Damit bei diesen Umrechnungen die korrekten Resultate herauskommen, müssen alle Kameras optimal zueinander positioniert sein (Kamera-Setup) und es muss eine Beziehung zwischen aufgenommenem Bild und der Realität hergestellt werden (Kalibrierung). Erst wenn all diese Dinge - jedes für sich und alle miteinander - korrekt funktionieren, ist ein korrektes Tracking überhaupt möglich. (GUI-Applikation/Engine) Ziel dieser Diplomarbeit war es, ein funktionierendes Motiontracking System aufzubauen, das aus kostengünstigen und allgemein erhältlichen Komponenten zusammengesetzt ist und trotzdem brauchbare Resultate liefert. Muttenz, Dezember 2004 Seite 7 von 107 Diplomarbeit Motion Tracking 1.1. Umfang der Diplomarbeit Es wurden 6 Hauptziele und einige erweiterte Ziele definiert. Mit dem Erreichen der Hauptziele sind die Anforderungen des Auftraggebers erfüllt. Die Nebenziele werden je nach Verlauf der Diplomarbeit realisiert. 1.1.1. Hauptziele • Kalibrierung automatisieren • Applikation überarbeiten Æ Integration aller Bauteile der Projektarbeit Æ GUI erweitern Æ Client-Server Architektur Æ Remote Control wichtiger Funktionen des Clients über den Server • Übertragung von 2D-Daten aus DirectShow in die Applikation • Speicherformate für 2D- und 3D Daten definieren • Gespeicherte Videos laden und verarbeiten • 3D Tracker anpassen und optimieren 1.1.2. Erweiterte Ziele • FP zu BP Assoziation automatisieren (z.B. durch Standardschemas abhängig von der Kameraperspektive) • Kontrolle des Clients aus der Serverapplikation aus • Realtime Tracking • Exoskelett verbessern: Aufhängung / Farben: mehr unterschiedlich farbige LEDs • Verbesserung des Setups: Ortsunabhängigkeit/Lichtunabhängigkeit -> erhöhtes Budget erforderlich (z.B. Vorhänge/Zelt/Abgedunkelter Raum etc.) • Bewegungsglättung 1.1.3. Erreichte Ziele Die Hauptziele der Diplomarbeit wurden vollumfänglich erreicht. Die automatische Assoziation konnte ebenfalls realisiert werden. Auch das Realtime Tracking konnte erfolgreich in die Praxis umgesetzt werden. Muttenz, Dezember 2004 Seite 8 von 107 Diplomarbeit Motion Tracking 2. Erarbeitete Grundlagen 2.1. Grundlagen Motion Tracking Der Einsatzbereich von Motion Tracking reicht von Überwachungssystemen über Robotik bis zur Unterhaltungsindustrie. Neben teuren elektromagnetischen Techniken bieten sich Lösungen mit Echtzeit-Videobildanalyse an, insbesondere seit so genannte Webcams schon für 100-200 Fr. erhältlich sind. Um die Koordinaten eines Raumpunktes eindeutig zu bestimmen, braucht es im Minimum 2 Videobilder desselben Punktes aus zwei verschiedenen Blickrichtungen. Eine Schwierigkeit bei mehreren Videobildern ist deren Synchronisation. Gelingt es nicht, mehr als eine Webcam an einem PC anzuschliessen, so müssen mehrere PCs mit je einer Webcam über ein Netzwerk synchronisiert werden. 2.2. Auswahl Kameras Folgende Webcams standen zu Beginn zur Auswahl: Logitech QuickCam Logitech QuickCam Philips ToUcam Sony Ezee Kit Pro USB (Dark Pro 4000 Pro PCVC 730K CMR PC-4 Focus Ring) Nach einer umfassenden Analyse der Bildqualität und Eigenschaften der vier Kameras, entschieden wir uns für die Logitech QuickCam Pro 4000, welche am wenigsten rauscht bei Dunkelheit, ausserdem werden die Treiber von Logitech immer noch weiterentwickelt, was man z.B. von Philips nicht behaupten kann. Muttenz, Dezember 2004 Seite 9 von 107 Diplomarbeit Motion Tracking 2.3. Kalibrierung Punkte in einem Bild oder einem Video müssen später in einem 3D Raum dargestellt werden. Dazu wird das Tsai Camera Calibration Tool, kurz Tsai, verwendet. Dieses Programm kann durch einfache Übergabe einer Liste mit X, Y, Z (Weltkoordinaten) und U, V (Bildkoordinaten) von Punkten eine Kalibrierungsdatei erstellen, welche die nötigen Parameter für die weiteren Berechnungen beinhaltet. Weitere Berechnungen, welche verwendet werden, sind Umwandlungen von Bild- zu Weltkoordinaten und umgekehrt. Bildkoordinaten sind einfach zu ermitteln, zur Verfügung stehen Photoshop oder ein ähnliches Produkt. Der Arbeitsplatz auf einer Fläche von 7,2m x 3,6m wurde anhand eines Rasters auf dem Boden markiert. Bei den Schnittpunkten des Rasters wurden an der Decke Fäden montiert, an welchen in einem Abstand von 70 cm Holzkugeln aufgehängt sind, welche uns als zusätzliche Kalibrierungspunkte dienen. So stehen im Idealfall insgesamt 52 Kalibrierungspunkte zur Verfügung. Abb. 2-1 Testraum Motion Tracking Bei der Umwandlung von Welt- zu Bildkoordinaten wurde eine Genauigkeit von +/- 3 Pixel erreicht. Umgekehrt wurde eine Genauigkeit von +/- 5 cm pro Punkt erreicht. Diese Werte sind abhängig von der Kamera (Auflösung, Qualität der Bilder) und deren Kalibrierung. Muttenz, Dezember 2004 Seite 10 von 107 Diplomarbeit Motion Tracking 2.4. Featurepunkt Extraktion Die Aufnahme und Detektion von kontrastreichen Punkten ist ein nicht ganz einfaches Unterfangen und es gibt ganze Bücher über Wege, wie man dies umsetzen kann. Um aber den Umfang der Projektarbeit nicht zu sprengen, wurden im Setup die Umgebungsbedingungen optimiert, um innert der zur Verfügung stehenden Zeit brauchbare Resultate liefern zu können. Die wichtigste davon, ist das Abdunkeln der Umgebung, um störende Hintergrundeffekte zu unterdrücken. Um so kontrastreiche Punkte zu erzeugen, ist damit eine Lichtquelle praktisch vorgeschrieben. 2.4.1. Evaluation der kontrastreichen Punkte Zu Beginn der Testreihe standen folgende Objekte zur Auswahl: Tannenbaumbeleuchtung LED Zuerst wurde mit Glühbirnen und danach mit LEDs experimentiert. Wobei die Glühbirnen zwar besser sichtbar waren als die LEDs, aber leider vor allem vom Stromverbrauch her problematisch waren(Man hätte Stromkabel gebraucht). Die LEDs wiederum leuchteten zwar in Batteriebetrieb, waren dafür aber sehr stark richtungsabhängig und damit nicht aus allen Richtungen genügend stark sichtbar. Ausserdem waren sie zu klein, um mit typischen Webcam Auflösungen gut detektiert werden zu können. Diesen Problemen konnten wir mit Hilfe von Pingpongbällen Herr werden. Wir steckten die ungleichmässig leuchtenden LEDs in weisse Pingpongbälle. Diese diffundierten einerseits Muttenz, Dezember 2004 Seite 11 von 107 Diplomarbeit Motion Tracking die Lichtabstrahlung genügend stark, so dass die Richtungsabhängigkeit keine Rolle mehr spielte und andererseits wurde dadurch, das nun nicht mehr der relativ kleine LED Leuchtkörper, sondern der gesamte Pingpongball leuchtete, die Detektion erheblich verbessert. 2.4.2. LED von Umgebung unterscheiden Erkennung anhand von Farbton, bzw. Helligkeitsschwellwert der überschritten wird. • Implementation eines Transformfilters, der alle Pixel eines Frames welche einen Helligkeitswert unterhalb des Schwellwerts haben auf Schwarz setzt. 2.4.3. LED von anderem LED unterscheiden Im Normalfall lassen sich LEDs klar wegen der räumlichen Trennung von anderen LEDs unterscheiden. Allerdings entstehen Probleme, wenn die räumliche Trennung nicht gewährleistet ist (Überlappungen). Durch verschiedene Farben liesse sich da Abhilfe schaffen, allerdings ist dies möglicherweise problematisch, da die Raumbeleuchtung und die Ausrichtung der LEDs zur Kamera in die Farbtöne einfliesst. • Implementation eines weiteren Transformfilters, der von den verbleibenden hellen Pixeln Vergleiche mit vorgegebenen Grundfarbtönen vornimmt und sie in die jeweils am besten passende Grundfarbe umwandelt. Nach der Farbkonvertierung erhalten wir für jeden Frame ein Bild aus Farbflecken, aus der man auch überlappende LEDs, anhand der Farbe klar unterscheiden kann. Abb. 2-2 Anordnung der LEDs Muttenz, Dezember 2004 Seite 12 von 107 Diplomarbeit Motion Tracking 2.4.4. LED erfassen und Position berechnen Benachbarte helle Pixel desselben Farbtons müssen nun zu Gruppen zusammengefasst werden. Aus jeder Gruppe wird der Positionsschwerpunkt berechnet, der der Position eines LEDs entspricht. Mögliche Probleme sind durch Spiegeleffekte entstandene Zerteilung der hellen Pixelregion in mehrere Einzelteile und dadurch überschüssige fehlerhaft erkannte LEDs. • Implementation eines Detektoralgorithmus, der uns zusammengehörende Pixelregionen in LED Zonenobjekten zusammenfasst. • Implementation eines LED Zonenobjektes mit Methode zur Berechnung von Pixelschwerpunkt und Methode zur Kalkulation der Punktmenge, die der Zone angehören. • Evt. Implementation eines Detektors, der fehlerhafte oder ungültige Zonen entdeckt bzw. geteilte Zonen zusammenfasst. 2.4.5. LED Identifikation mittels Tracking und Farbe Die vorherigen Schritte reduzieren die Trackingaufgabe auf das so genannte Featurepunkt Tracking Problem, welches sich mit Punktmengen in einer Sequenz von Frames befasst. Aufgabe ist es, einen geeigneten Algorithmus zu finden bzw. zu implementieren, der die Trajektorien der Punkte erfasst. Was die Identifikation der LEDs betrifft, so werden diese zu Beginn der Sequenz manuell identifiziert. Danach müssen sie anhand von Bewegungstracking mit Feature Point Algorithmen erfasst bleiben. Farbkennung von potentiell verwechslungsträchtigen LEDs ermöglicht eine verbesserte Identifikation und dient als Unterstützung für den Feature Point Algorithmus. • Analyse und Evaluation existierender Feature Point Algorithmen • Wahl und Implementation eines geeigneten Algorithmus, der uns schliesslich einen Array von detektierten Punkten samt Identifikation liefert. An dieser Stelle ist das Tracking auf 2-Dimensionaler Ebene abgeschlossen und die Daten werden zwecks Entzerrung und Transformation in Weltkoordinaten weitergegeben. Muttenz, Dezember 2004 Seite 13 von 107 Diplomarbeit Motion Tracking 2.5. Synchronisation der Kameras Damit alle Kameras zeitgleich mit dem Tracking beginnen, haben wir unseren Transformfilter so erweitert, dass er bei einer plötzlichen Verdunkelung des Raums ausgelöst wird. Die Aufnahme startet, wenn zu Beginn der Aufnahme das Licht eingeschaltet ist, und nach einigen Sekunden der Aufnahme ausgeschaltet wird. Genau zu diesem Zeitpunkt beginnen dann alle Kameras mit der Detektion und die Synchronisation ist so während des Starts gewährleistet. Muttenz, Dezember 2004 Seite 14 von 107 Diplomarbeit Motion Tracking 3. DirectShow DirectShow (früher ActiveMovie) ist eine Multimedia Architektur welche von Microsoft entwickelt wurde. Sie wird von Microsoft frei zur Verfügung gestellt, als ein Teil von DirektX. DirectShow teilt die Verarbeitung von verschiedenen Multimedia Tasks wie Video Playback in verschiedene Sets von Schritten auf, bekannt als Filter. Filter haben eine gewisse Anzahl von Input und Output Pins welche man zusammen verbinden kann. Das generische Design von diesem Verbindungsmechanismus ermöglicht es, dass Filter auf unterschiedlichste Weisen verbunden werden können. Dies ermöglicht dem Entwickler das eigene Filter und Effekte in den Filter Graph eingebaut werden können, weshalb wir uns dann auch für DirectShow entschieden haben. DirectShow Filter Graphen werden vor allem für das abspielen von Videos benutzt (in welchem der Filter verschiedene Funktionen liefert wie File Parsing, Video und Audio De-Multiplexing, sowie Dekompression und Rendering) und sie werden häufig eingesetzt für Video-, Audio recording und editing. Interaktive Tasks wie DVD Navigation sind auch erfolgreich eingebunden in DirectShow. Abb. 3-1 Aufbau einer DirectShow Applikation Muttenz, Dezember 2004 Seite 15 von 107 Diplomarbeit Motion Tracking 3.1. COM - The Component Object Model Dies ist ein Mechanismus zur Identifizierung und Kommunikation zwischen ApplikationsKomponenten in einer generischen Art und Weise. Die COM Kommunikation findet über Interfaces oder Gruppen von Funktionen statt. ActiveX basiert z.B. auf COM. Eine Gruppe von Funktionen ist fest definiert (beinhaltet alle Parameter und Rückgabe Werte) und identifiziert sich über eine einmalige 128-bit Interface ID (globally-unique id oder GUID). Ein COM Objekt wird durch einen Aufruf an die WIN32 API erstellt und gibt einen Pointer zu einem spezifischen Interface zurück. Das Model basiert auf einer abstrakten C++ Klasse. Wie eine abstrakte Basis Klasse, kann ein Objekt verschiedene Interfaces implementieren: jedes Interface besitzt dabei QueryInterface Methoden welche es erlauben ein anderes Interface im selben Objekt zu finden. Applikation DirectShow Control COM Interfaces MCI DirectShow Filter Graph Manager Source Filter Media Source Tranform Filter Renderer Filter Media Destination Abb. 3-2 Kommunikation über COM Interfaces Muttenz, Dezember 2004 Seite 16 von 107 Diplomarbeit Motion Tracking 3.2. DirectShow Filter DirectShow Applikationen benutzen einen Graph von Filtern um Multimedia Daten zu verarbeiten. Typischerweise fliessen Multimedia Daten durch den Graph von einem Source File aus zu einem Zielgerät oder Fenster mit welchem die Applikation die Operation kontrolliert, aber in gewissen fällen will die Applikation die Daten selber verwalten oder empfangen also bedeutet dies nur bereitgestellte Kontrolle. Ein typischer Graph welcher eine Video Datei wiedergibt, zeigt • einen Source Filter, verantwortlich Daten von einem File ( oder URL) zu lesen. • ein Parser Filter welcher die Ausgabe von Audio und Video Daten separiert und sie zum passenden Decoder weitergibt. • einen Decoder für die Dekompression der Video Daten. • ein Rendering Filter für Audio und Video welche die dekomprimierten Daten nimmt und sie abspielt oder zeichnet. Abb. 3-3 Typischer DirectShow-Filtergraph Filter sind COM Objekte welche ein Set von COM Interfaces bieten, prinzipiell IBaseFilter. Sie können eine beliebige Anzahl von Input und Output Pins aufweisen (Objekte werden durch IBaseFilter::EnumPins entnommen) welche ein Set von Pin Interfaces (IPin) beinhalten. Wenn Pins von zwei Filtern miteinander verbunden werden, erhalten die Pins einen übereinstimmenden Media Type welcher den Austausch von Daten definiert. Der Media Type wird dann auf jedem anderen Interface zur Verfügung gestellt, welcher benutzt wird um Daten auszutauschen. Muttenz, Dezember 2004 Seite 17 von 107 Diplomarbeit Motion Tracking Um ein File abzuspielen wird DirectShow verwendet, eine Applikation kreiert einen Filter Graph Manager, dieser fragt das Objekt an einen Graphen zu erstellen, der für das File verwendet wird. Die Applikation kann dann auch, für das abspielen und anhalten des Files, das IMediaControl Interface verwenden. DirectShow Filter sind alle User Mode Code. Für equivalente Funktionalität im Kernel Mode, sollte man WDM Streaming benutzen. 3.3. DirectShow Interfaces 3.3.1. ICaptureGraphBuilder2 ICaptureGraphBuilder ist ein Interface welches einen allein stehenden Filter benutzen kann der mehr als ein Pin von jeder Kategorie besitzt. z.B. können gewisse Devices Video und Audio aufnehmen. 3.3.2. IGraphBuilder IGraphBuilder ist abgeleitet von IFilterGraph, dieses Interface besitzt einen intelligenten Verbindungsaufbau der einzelnen Filter. Es unterstützt das erstellen von Graphen durch automatische Selektion und Verbindung von geeigneten Filtern. 3.3.3. IBaseFilter Alle Multimedia Komponenten können dieses Interface benutzen. Dieses Interface abstrahiert ein Objekt welches Input und Output Verbindungen herausschreibt und dynamisch aggregiert werden kann. 3.3.4. IMediaFilter Unterstützt die Synchronisation und einen Aktivitäts-Status: IBaseFilter ist abgeleitet von diesem Interface, alle Filter unterstützen IMediaFilter. Ausser ein paar Objekten (wie z.B. Plug-In Control Verteiler) unterstützen IMediaFilter aber nicht IBaseFilter. IMediaFilter ist wiederum abgeleitet von IPersist, so dass alle Filter die Funktion GetClassID() unterstützen. Muttenz, Dezember 2004 Seite 18 von 107 Diplomarbeit Motion Tracking 3.3.5. IMediaControl Steuerung eines Videostreams mittels Funktionen wie abspielen, anhalten, pause, usw. 3.3.6. IMediaEventEx Gibt an wenn ein Mediastream zu ende ist. 3.3.7. IMediaSeeking Sucht oder ruft die angegebene Position des Mediastreams auf. 3.3.8. IMediaPosition Ähnlich zu IMediaSeeking auch hier kann die Position des Mediastreams angegeben werden. 3.3.9. IMediaEvent Unterstützt ein Event Anzeigeschema, asynchron zu der Applikation. Dieses Interface verhält sich so als wenn Events in einem Queue gehalten werden. Ein Aufruf von IMediaEventSink::Notify ersetzt den Event in diesem Queue. Beim Aufruf GetEvent wird das erste Element des Queues entfernt und kehrt zurück. Elemente kehren zurück in der Reihenfolge in welcher sie anstehen (es gibt kein Prioritäts Schema). Der Handle Event ist ein Signalstatus für den Fall das der Queue nicht leer ist. 3.3.10. Implementation in C# Wenn einmal alle Interfaces in C# definiert wurden, können sie ähnlich aufgerufen werden, wie es in C++ der Fall wäre: // ======== C++ code to create the COM instance of Filter Graph ======== JIF(CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&pGB)); // Have the graph builder construct its the appropriate graph automatically JIF(pGB->RenderFile(wFile, NULL)); // QueryInterface for DirectShow interfaces JIF(pGB->QueryInterface(IID_IMediaControl, (void **)&pMC)); .... Muttenz, Dezember 2004 Seite 19 von 107 Diplomarbeit Motion Tracking ... CoCreateInstance wird mit Activator.CreateInstance ersetzt, und QueryInterface ist ein einfacher cast in C#: // ======== C# code to create the COM instance of Filter Graph ======== Type comtype = null; object comobj = null; try { comtype = Type.GetTypeFromCLSID( Clsid.FilterGraph ); if( comtype == null ) throw new NotSupportedException( "DirectX (8.1 or higher) not installed?" ); comobj = Activator.CreateInstance( comtype ); graphBuilder = (IGraphBuilder) comobj; comobj = null; int hr = graphBuilder.RenderFile( clipFile, null ); if( hr < 0 ) Marshal.ThrowExceptionForHR( hr ); mediaCtrl = (IMediaControl) graphBuilder; Im Projekt DShowNET sind die wichtigsten DirectShow Interfaces nach C# umgeschrieben worden. Die Library wurde von NETMaster erstellt und kann unter http://www.codeproject.com/cs/media/directshownet.asp heruntergeladen werden \DirectShow\ \DShowNET\ \DsBugWO.cs \DsControl.cs \DsCore.cs \DsDevice.cs \DsDVD.cs \DsExtend.cs \DsUtils.cs \DsUuids.cs \QEdit.cs Muttenz, Dezember 2004 // the DirectShow interface definitions : // workaround for a bug // ported from control.odl // ported from axcore.idl // device enumerator, helper functions // DVD interfaces from dvdif.idl // ported from axextend.idl // utility classes, SDK Common sources // UUIDs and CLSIDs from uuids.h // grabber interfaces from qedit.idl Seite 20 von 107 Diplomarbeit Motion Tracking 3.4. DirectShow Filter Graph Manager Eine DirectShow Applikation interagiert mit einem Filter Graph Manager. Dieser spielt eine zentrale Rolle für die Kontrolle der Applikation und ist verantwortlich für das erstellen und kontrollieren des Graphs, dabei verändert der Verteilungsstatus die Information der Filter. Der Filter Graph Manager ist ein COM Objekt welches mit CoCreateInstance erstellt wird. Um einen Graph zu erstellen, wird das Interface IGraphBuilder verwendet, entweder vorübergehend in einer Datei oder direkt durch einfügen und verbinden von Filtern. Filter können indirekt verbunden werden, in diesem Fall verwendet der Filter Graph Manager so genannte Transform Filter, welche notwendig sind um Data Types zu transformieren, so dass eine Verbinden erstellt werden kann. Zusätzlich zu den Grundlegenden Graph-Building Services, kann der Filter Graph Manager als "single point of control" agieren. Die Applikations-Rückfragen für die Kontrolle und den Status des Interfaces vom Filter Graph Manager, implementieren die Interfaces beim Aufruf des Graphs. Z.B., ist IMediaControl::Run beim Aufruf der Run Methode von jedem Filter implementiert (in einer gewählten Reihenfolge: Die Threading Regeln von DirectShow sind so gestaltet, dass man sicher sein kann, dass keine Filter ihren eigenen ThreadBenutzungsstatus ändern müssen. Ohne diese Regeln könnte z.B. ein Deadlock ausgelöst werden: Grund weshalb der Filter Graph Manager für diese Aufgabe zuständig ist). Dieser Mechanismus ist erweiterbar via plug-in distributors. Man kann ein COM Objekt als Distributor für jedes Interface welches momentan vom Filter Graph nicht unterstützt wird registrieren. D.h. wenn die Applikation für dieses Interface auf dem Filter Graph Manager rückfragt, schaut die Applikation in der Registry nach einem Distributor Key und wird dann das Objekt laden. Der Distributor ist beim Aufruf der Filter im Graphen verantwortlich für die Implementation des Interfaces. Dies liefert einen Erweiterungsmechanismus, so dass der Filter benutzerdefinierte Interfaces implementieren kann welche ungeschützt geradewegs zur Applikation gehen, sobald es eine Visual Basic Applikation ist. All diese Standard Control Interfaces sind implementiert als plug-in Distributors in DirectShow. In der Theorie sind diese ersetzbar, da sie sie aber miteinander verwoben sind, ist die Ersetzbarkeit in der Praxis schwierig umzusetzen. Muttenz, Dezember 2004 Seite 21 von 107 Diplomarbeit Motion Tracking 3.5. Erstellen eines Filter Graphen Wenn man in einer Applikation ein Video oder Media File wiedergeben möchte, so muss man eine Kopie des Filter Graph Managers erstellen, es wird dann mit „RenderFile“ ein Graph erstellt welcher eine angegebene Datei oder URL wiedergibt. Der Graph Manager wird erstellt als ein Graph von Filtern um die angegebene Datei abzuspielen. Die Applikation kann auch selber Graphen bilden, modifizieren oder einen Capture Graph Builder verwenden um Graphen für spezifische Tasks zu verwenden. Es gibt auch ein visuelles Tool namens Graph Editor, welches mit DirectX installiert wird, in welchem man verschiedene Filter einfügen und zu einem Graphen verbinden kann. Wenn man RenderFile anspricht, startet der Filter Graph Manager mit der Auswahl eines Source Filters für die Datei die angegeben wurde. Es wird eine Tabelle in der Registry verwendet welche ein Set von Offsets enthält, sowie Masken und Test Bytes um das File zu überprüfen. Diese gibt eine CLSID des Filters zurück welche für den Source Filter verwenden wird. Weiteres in der DirectShow Dokumentation unter „Registering a custom file type“. Es wird dann jeder Output Pin des Souce Filters gerendert. Dies geschieht indem der Filter Graph Manager versucht mit jedem möglichen Filter zu verbinden. Wenn ein neuer Filter verbunden ist, versucht der Filter Graph Manager mit demselben Prozess den Output Pin beim aktuellen Filter zu rendern. Ein Limit der Tiefe verhindert, dass er einen undefinierten Bereich erreicht. Nach etwa 5 Schritten ohne dass der Pin gerendert wurde gibt er auf, geht einen Schritt zurück und versucht es mit einem anderen Filter. Nur der „Merit Valaue“ schützt jeden Graph davor mit endlosen Null Filtern gefüllt zu werden. Wenn ein Filter versucht eine Verbindung aufzubauen, verwendet er QueryInternalConnections um herauszufinden welcher Output Pin es nun braucht um zu rendern. Filter mit denen versucht wird eine Verbindung aufzubauen: Alle Filter welche im Graph freie Input Pins besitzen, sowie alle die in der Registry vorhanden sind. Es wird zuerst mit jedem Filter im Graph versucht eine Verbindung aufzubauen, bevor neue Filter instanziert werden. Das macht es einfach eigene Filter hinzuzufügen (einfach in den Graph einfügen bevor der Befehl RenderFile aufgerufen wird. Merke das Media Typen spezifisch genug sind, so dass der Graph nur den Platz auswählt in dem der Filter gebraucht wird). Wenn Muttenz, Dezember 2004 Seite 22 von 107 Diplomarbeit Motion Tracking man einen Filter hat welcher Audio und Video rendert, so wird der Filter einmal zu einem Video Stream verbunden und der Graph versucht dann auch den Filter für den Audio Stream zu verbinden. Es wird nur dann versucht einen Filter von der Registry zu holen, wenn er mit dem richtigen Media Type und Subtype registriert ist. Jeder Filter in der Registry besitzt einen Mertit Value, diese werden für die Reihenfolge gebraucht. Man kann einen Filter als Wild-Card Input registrieren (GUID_NULL als Media Type oder als Subtype). Der Filter kann auch seine Output Pins registrieren: Für das rendering ist dies aber nicht wichtig, aber es wird dazu benutzt um eine „Verbindungs“-Operation mit einem Filter zu bewerkstelligen. Auch zu bedenken ist, dass die Information in der Registry uns davor bewahrt unnötig Filter zu laden. Wenn ein Filter einmal geladen ist, wird die Media Type Information immer vom Pin entnommen und nicht von der Registry. RenderFile wird nur einen return true liefern wenn alle Output Pins von dem ausgewählten Source Filter komplett gerendert wurden (zu vergleichen mit QueryInternalConnections). Wenn dies fehlschlägt, aber trotzdem ein paar Outputs gerendert werden können, so werden sie zurückgehen zu dem „best-so-far“ Graph. Dieser gibt zurück, dass die Aktion nicht erfolgreich war. Der best-so-far ist derjenige Graph welcher der höchste Anteil von Output Pins mit dem am wenigsten Filtern rendert. Muttenz, Dezember 2004 Seite 23 von 107 Diplomarbeit Motion Tracking 3.6. Capturing mit DirectShow Um in DirectShow mit einem Video Device wie einer Webcam zu kommunizieren, muss man einen CaptureGraph aufbauen. Dieser wird in verschiedenen Schritten aufgebaut • Zuerst muss eine Instanz des ICaptureGraphBuilder2 erstellt werden, welche ähnlich funktioniert wie IGraphBuilder. • Danach wird eine AVI Mux-Filter erstellt welcher direkt mit dem File Writer-Filter verbunden wird. Um den File Writer zu erzeugen, muss auch der Dateipfad übergeben werden. • Jetzt muss nur noch der CaptureGraph gerendert werden. Dies geschieht über den Smart Tee-Filter welcher über mehrere Output Pins verfügt. • Mit Hilfe des Smart Tees kann danach auch noch ein "Preview Window" erzeugt werden. Instanz ICaptureGraphBuilder2 Guid clsid = Clsid.CaptureGraphBuilder2; Guid riid = typeof(ICaptureGraphBuilder2).GUID; comobj = DsBugWO.CreateDsInstance( ref clsid, ref riid ); Console.WriteLine("Capture Graph wurde erzeugt"); capGraph = (ICaptureGraphBuilder2) comobj; comobj = null; AVI Mux und File Writer werden erstellt: Guid sub = MediaSubType.Avi; hr = capGraph.SetOutputFileName( ref sub, fileName, out mux, out sink ); Avi Mux File Writer Capture Graph wird erstellt: Guid cat = PinCategory.Capture; Guid med = MediaType.Video; hr = capGraph.RenderStream( ref cat, ref med, capFilter, null, mux ); // stream to file Capture Capture Avi Mux File Writer Logitech Quickcam Pro 4000 Smart Tee Source Filter Capture Graph wird mit dem Kompressor SampleGrabber erweitert und als Preview ausgegeben: cat = PinCategory.Preview; med = MediaType.Video; hr = capGraph.RenderStream( ref cat, ref med, capFilter, baseGrabFlt, null ); // preview window Capture Capture Avi Mux File Writer SampleGrabber Video Renderer Logitech Quickcam Pro 4000 Smart Tee Source Filter Preview Muttenz, Dezember 2004 Seite 24 von 107 Diplomarbeit Motion Tracking 3.7. Steuerung der Eigenschaften in den Code implementieren Wenn die Pin-Eigenschaften des Capture Devices angewählt werden erscheint folgendes Eigenschaftsfenster: Abb. 3-4 Pin-Eigenschaftsfenster Logitechwebcam Gewisse Funktionen wie Einzelbildrate, Farbspektrum oder Ausgabegrösse können automatisch gesteuert werden. Dazu muss Device-Filter alleine dastehen, darf also nicht gerendert sein IAMStreamConfig streamConfig=null; streamConfig=comObj as IAMStreamConfig; if(streamConfig == null) { Console.WriteLine("IAMStreamConfig not present"); return false; } AMMediaType media = new AMMediaType(); streamConfig.GetFormat(out media); VideoInfoHeader videoInfoHeader = (VideoInfoHeader) Marshal.PtrToStructure( media.formatPtr, typeof(VideoInfoHeader) ); videoInfoHeader.BitRate=10; videoInfoHeader.BmiHeader.Width=640; videoInfoHeader.BmiHeader.Height=480; videoInfoHeader.BmiHeader.ImageSize=1327104; videoInfoHeader.AvgTimePerFrame = 30; Marshal.StructureToPtr(videoInfoHeader, media.formatPtr, false); streamConfig.SetFormat(media); return true; Muttenz, Dezember 2004 Seite 25 von 107 Diplomarbeit Motion Tracking Wenn die Eigenschaften des Capture Devices im Falle einer WebCam angewählt werden erscheint folgendes Eigenschaftsfenster: Abb. 3-5 Eigenschaftsfenster der Logitech Webcam Auch hier können gewisse Funktionen wie Helligkeit, Kontrast oder Sättigung automatisch im Code gesteuert werden. IAMVideoProcAmp videoProc=null; videoProc=comObj as IAMVideoProcAmp; if(videoProc == null) { Console.WriteLine("IAMVideoProcAmp not present"); return false; } VideoProcAmpFlags flag int pvalue; = new VideoProcAmpFlags(); videoProc.Get(VideoProcAmpProperty.Brightness, out pvalue, out flag); pvalue = 34; videoProc.Set(VideoProcAmpProperty.Brightness, pvalue, flag); return true; Muttenz, Dezember 2004 Seite 26 von 107 Diplomarbeit Motion Tracking 4. Softwarekonzept Die Applikation wurde anhand einer Client-Server Architektur aufgebaut. Dabei können beliebig viele Clients mit dem Server Verbunden werden, so dass der Benutzer unabhängig von der Anzahl der Kameras ist. Die Berechnung und Darstellung der 3D-Daten sind beide auf dem Server verankert, dies ermöglicht eine robuste und schnelle Verarbeitung der 3D-Daten. Abb. 4-1 Client-Server Architektur Muttenz, Dezember 2004 Seite 27 von 107 Diplomarbeit Motion Tracking 4.1. Der Client Bei der Konzipierung der Client-Applikation wurde darauf geachtet, dass der Client modular aufgebaut ist. Somit ist der Client unabhängig von dem verwendeten Gerät, d.h. es kann eine Logitech Webcam oder aber auch eine DV-Kamera benutzt werden. Weiter ist es dem Benutzer auch erlaubt auf Videodateien zurückzugreifen was z.B. für eine Demonstration ohne Kamerageräte von grossem Nutzen sein kann. Es ist vorgesehen, dass an jeder Client Maschine nur 1 Client mit entsprechender Webcam gestartet wird. Es ist aber durchaus möglich, dass bei einem entsprechend leistungsstarken Rechner auch mehrere Clients gleichzeitig gestartet werden können. Dies ermöglicht dem Benutzer eine höchstmögliche Flexibilität mit dem Umgang des Clients. Client 2D-Tracker (IPAN) Filter-Server DirectShow Graph Snapshot Kalibrierung Client Netzwerkmodul Kalib Parameter TSAI-Converter Abb. 4-2 Datenfluss des Clients Der Client verfügt über verschiedene Module wie Kalibrierung, IPAN-Tracker, Client Netzwerkmodul, DirectShow Graph, Filter-Server und TSAI-Converter. 4.1.1. Filter-Server Die 2D-Daten welche aus dem DirectShow Modul herausgelesen werden, werden hier gebuffert und dann an das 2D-Trackermodul übergeben. Muttenz, Dezember 2004 Seite 28 von 107 Diplomarbeit Motion Tracking 4.1.2. 2D-Tracker (IPAN) Das Trackermodul bereitet die 2D-Daten auf und verbindet diese zu so genannten Trajektorien. Die getrackten 2D-Daten werden an das Client Netzwerkmodul gesendet. 4.1.3. Client Netzwerkmodul Das Client Netzwerkmodul ist für die Kommunikation zwischen Server und Client zuständig. 2D-Daten und die TSAI Daten werden mittels Serialisierung an den Server gesendet. Auch ist es möglich Informationen vom Server zu empfangen, da dieses Modul bidirektional aufgebaut ist. 4.1.4. Kalibrierung Das Kalibrierungsmodul erhält die Bildinformationen (Bitmap) aus dem DirectShow Graph. Anhand von diesem Bitmap werden dann verschiedene Punkte im Bild herausgelesen um diese dann unter Zuhilfenahme von TSAI in Kalibparameter umzuwandeln. 4.1.5. TSAI-Converter Der TSAI-Converter erhält die Kalibparameter von dem Kalibrierungsmodul die Daten werden konvertiert und anschliessend an das Client Netzwerkmodul gesendet. Muttenz, Dezember 2004 Seite 29 von 107 Diplomarbeit Motion Tracking 4.1.6. DirectShow Graph Der DirectShow Graph wurde so aufgebaut, dass er möglichst viel Funktionalität beinhaltet. Dies erleichterte den Aufbau des Clients erheblich, denn es braucht dazu die Instanzen der einzelnen Filter nur einmal zu erzeugen und somit können mit diesem Filter alle Aufgaben bewältigt werden, ohne dass der Filter komplett neu aufgebaut werden muss. SWFilter (Transformfilter) Null Renderer SampleGrabber Null Renderer Logitech Quickcam Pro 4000 Infinite Pin Tee Filter Source Filter Feature des Graphen: - Video Einstellungen - Video Vorschau - Grabbing - Aufnahme - Motiontracking Video Renderer AVI Mux File Writer Abb. 4-3 Aufbau des DirectShow Filtergraph Dieser DirectShow Graph ist fähig: • ein Video als Vorschau anzuzeigen • einzelne Bilder aus dem Video herauszuschreiben (grabben) • Videos aufzunehmen und im gewünschten Format abzuspeichern • anhand eines eigens dafür geschriebenen Transformfilters die einzelnen Bilder zu analisieren und die FeaturePoints aus dem 2D-Bild herauszulesen Muttenz, Dezember 2004 Seite 30 von 107 Diplomarbeit Motion Tracking 4.1.7. Klassenstruktur des Clients Main 1 DeviceSelector clsClientController frmClient 1 1 uscTracker clsCalibration clsVideo uscVideo clsCapture uscCapture uscCalibration clsTracker clsNetworkClient 1 Filters IPictureGrabber FilterGraphController clsFilterServer clsIPANTracker 1 IFPsink 1 1 SampleGrabber IFPsource VideoGrabber FPDetector ISWFilter clsFPnetReceiver clsFPnetSink Abb. 4-4 Klassendiagramm Client Muttenz, Dezember 2004 Seite 31 von 107 Diplomarbeit Motion Tracking 4.2. Der Server Bei der Konzipierung der Server-Applikation wurde darauf geachtet, dass der Verbindungsaufbau möglichst stabil ist. Auch hier wurde ein modulares Design verwendet, welches beliebig viele Clients ermöglicht, die mit einem Server eine Verbindung aufnehmen können. Abb. 4-5 Datenfluss der Serverapplikation Der Server verfügt über verschiedene Module wie Server Netzwerkmodul, 3D-Tracker, Auto Assoziation und ein OpenGL-Modul 4.2.1. Server Netzwerkmodul Hier kommen alle Daten zusammen welche von den Clients gesendet werden, diese bleiben in diesem Modul erhalten solange der Server am laufen ist. Muttenz, Dezember 2004 Seite 32 von 107 Diplomarbeit Motion Tracking 4.2.2. Auto Assoziation Dieses Modul ist für das Assoziieren der Daten zuständig, die von den Clients gesendet wurden. D.h. es werden hier Featurepoints zu den entsprechenden Bodypoints zugeordnet und dies anhand eines vorgegebenen Assoziierungs-Modells. 4.2.3. 3D-Tracker Hier werden mittels Informationen aus Assoziation und Netzwerkmodul die Daten so zusammengefügt das daraus 3D-Daten entstehen. 4.2.4. OpenGL Die 3D-Daten werden hier 3-dimensional Dargestellt und in einem OpenGL Fenster ausgegeben. 4.2.5. Klassenstruktur des Servers Abb. 4-6 Klassendiagramm Server Muttenz, Dezember 2004 Seite 33 von 107 Diplomarbeit Motion Tracking 5. Interprozesskommunikation (IPC) 5.1. Einleitung Unser Softwarekonzept sieht vor, alle Teile, die pro Kamera einzeln betrieben werden müssen, in eine Client Applikation aufzuspalten, und diejenigen Teile, die alle Kameras gleichermassen betreffen in einer Serverapplikation zu halten. Damit diese beiden Applikationen zusammenarbeiten können, muss zwischen Ihnen eine Verbindung zum Informationsaustausch aufgebaut werden. Es existieren verschiedenste Möglichkeiten der Interprozesskommunikation, wie z.B. Pipes, Message Queues, RPC, Shared Memory, etc. - Nachfolgend wurden die gegebenen Anforderungen des Motiontrackingprojektes an IPCs definiert um eine Auswahl treffen zu können. 5.2. Anforderungen • Bidirektionale Kommunikation: Die Natur des Motiontrackings macht es nötig, eine bidirektionale Kommunikation zu implementieren. Die Clients müssen pro aufgenommenes Frame Informationen an den Server senden. Der Server wiederum muss den Clients Synchronisationsdaten und Kontrolldaten senden. • Stehende Verbindung: Jede Sekunde müssen von allen Clients 30 Datenpackete gesendet werden. Zusammen würden sich so bei 5 Kameras 150 Verbindungsanfragen pro Sekunde anstauen. Daher ist eine stehende Verbindung für den Datentransport Pflicht. • Maschinen übergreifende Kommunikation: Zwar ist ein leistungsstarker PC durchaus in der Lage, Daten von mehr als einer Kamera gleichzeitig zu verarbeiten, aber für fünf Kameras reicht es dann doch nicht, sei es aus Gründen der Performanz oder fehlender USB Anschlüsse. Es müssen also auch Verbindungen zwischen mehreren PCs möglich sein. Aufgrund der oben genannten Anforderungen wurde entschieden, eine stehende TCP/IP Verbindung mit Sockets zu realisieren. Muttenz, Dezember 2004 Seite 34 von 107 Diplomarbeit Motion Tracking 5.3. Protokoll In diesem Kapitel wird das Client-Server Kommunikationsprotokoll definiert. Dies umfasst die Definition der vorkommenden Informationseinheiten, sowie die Art ihrer Verwendung bei Verbindungsauf- und abbau und bei der Datenübertragung. 5.3.1. Verbindungsrelevante Informationseinheiten NewConnection: Ein NewConnection enthält ein String mit einer ConnectionID und optional einen String mit dem Hostnamen des Clients. CloseConnection: CloseConnection wird jeweils dann gesendet, wenn eine Seite den Abbruch der Verbindung wünscht. Error: Eine Errornachricht enthält einen String mit einer Fehlermeldung und einen Integer mit Fehlernummer. Sie dient zum Mitteilen von aufgetretenen Fehlern sowohl Client- wie auch Serverseitig. 5.3.2. Datentransport bezogene Informationseinheiten Message: Eine Message enthält einen String mit einer Nachricht. MessageObject: MessageObjects sind alle Informationseinheiten, die eine zu einem String serialisierbare Instanz einer bestimmten Klasse enthalten. Beim Datentransfer wandelt das MessageObject die Datenklasse vorübergehend in einen String um, aus dem beim Empfang wieder eine Objektinstanz mit denselben Eigenschaften erzeugt werden kann. Folgende Datenobjekte können von MessageObjects transportiert werden: • FeaturePointFrames: Enthält alle Trackingrelevanten Daten eines einzelnen von der Kamera aufgenommenen Frames. Dieses Packet ist das am meisten verwendete, da jeder Client bei Standardeinstellungen mit der Wiederholrate der WebCam solche Packete abschickt. • TsaiConverter: Diese Datenstruktur, enthält alle Kalibrierungsdaten und wird vom Client zum Server transportiert. Muttenz, Dezember 2004 Seite 35 von 107 Diplomarbeit Motion Tracking • SyncSignal: Enthält Synchronisationsmerkmale - wird in regelmässigen Intervallen vom Server and den Client gesendet. • Play: Enthält Anweisungen des Servers zum Abspielen eines Videos auf den Clients. • Record: Enthält Anweisungen des Servers zur Aufnahme eines Videos auf den Clients. 5.3.3. Verbindungsaufbau und Abbau Ein Verbindungsaufbau wird per Definition von der Seite des Clients aufgebaut. Der Server öffnet zu Beginn einen Port und wartet auf eingehende Verbindungen. Client Server Ein Client initiiert eine Verbindung, in dem er ein NewConnection Packet mit seinem gewünschten NewConnection AnfragePrüfung NewConnection ………… Verbindung etabliert CloseConnection Identifikationsnamen sendet. Der Server prüft diese Information und entscheidet letztendlich, ob die Verbindung gültig ist. In diesem Fall sendet er als Bestätigung das NewConnection Packet an den Client zurück. Gegebenenfalls wurde darin die ConnectionID angepasst, um Kollisionen mit gleichnamigen Clients Client Server NewConnection zu vermeiden. Clients müssen dies berücksichtigen. Ist aus irgendeinem Grunde keine Verbindung möglich, sendet der Server ein Errorpacket mit der Angabe, warum die Verbindung gescheitert ist. Muttenz, Dezember 2004 Seite 36 von 107 Diplomarbeit Motion Tracking 5.3.4. Heartbeat Da relativ viele Clients zu einem einzigen Server verbunden werden müssen, wurde der Verbindungsaufbau weitgehend automatisiert: Sobald ein Server gestartet wird, beginnt er auf einem vereinbarten Multicast Kanal in regelmässigen Intervallen ein Heartbeatsignal mit seinen Verbindungsdaten auszusenden. Dadurch kann jeder Client die benötigten Daten jederzeit aus dem Netz empfangen und eine Verbindung aufbauen. Vollautomatischer Client: Wird ein Client gestartet, wartet er auf den Empfang eines Heartbeats und verbindet in der vollautomatischen Variante automatisch auf den ersten Server, dessen Signal er empfängt. Halbautomatischer Client: Während der Testphase, als mehrere Server gleichzeitig liefen, stellte sich der vollautomatische Verbindungsaufbau als problematisch heraus: Es konnte kein Einfluss darauf genommen werden, auf welchen Server sich ein Client verbinden soll, da er sich automatisch auf den erstbesten Server verband, dessen Signal er empfing. Daher wurde eine Halbautomatische Variante entwickelt, die dem User erlaubt, den Server aus den empfangenen Verbindungsdaten zu manuell auszuwählen. Muttenz, Dezember 2004 Seite 37 von 107 Diplomarbeit Motion Tracking 6. Datenstruktur Die Featurepunkte welche zu jedem Frame aus einem Videostream extrahiert werden, gelangen in eine Datenstruktur "FeaturePoint". Diese werden dann als eine Menge von Punkten, samt Farbinformation in der Datenstruktur "FPFrame" abgelegt. clsFPFrameArrayColor clsFPFrameColor 1 * * clsFPFrame * * 1 1 1 clsFPFrameArray FeaturePointData * clsFeaturePoint 1 * 1 * 1 clsFPFrameArrayContainer Muttenz, Dezember 2004 Seite 38 von 107 Diplomarbeit Motion Tracking 6.1. FPFrame/Color In FPFrame sind die Punkte als Menge von Punkten abgelegt. Die Farbinformation wird hier verwendet um die einzelnen Punkte nach Farbe zu sortieren und sie einem entsprechenden Farbtopf zu zuteilen. Diese Aufgabe übernimmt FPFrameColor welche 3 Töpfe enthält, die Töpfe unterscheiden die Farben rot, grün und blau. Diese Unterteilung nach Farbe ist für den Tracker notwendig. Da die Farben helfen, die Anzahl potentieller Zuweisungskandidaten zu reduzieren. FPFrame FPFrameColor R G Muttenz, Dezember 2004 B Seite 39 von 107 Diplomarbeit Motion Tracking 6.2. FPFrameArray/Container Die einzelnen FPFrames werden für das 3D-Tracking in ein Array von FPFrames geschrieben, zudem wird anhand des FPFrameArrays direkt die Synchronisation durchgeführt. In jedem FPFrame wird auch ein Sync-Wert übergeben welcher die Synchronisation erst möglich macht. Zusätzlich werden diese Arrays von FPFrames noch in einen so genannten FPFrameArrayContainer geschrieben, damit später eine evtl. Rekonstruktion des ganzen Trackings möglich ist. FPFrameArrayContainer stellt eine Art History dar welche während des ganzen Trackings erhalten bleibt. FPFrame clsCamera clsCamera clsCamera clsCamera Frame 1 1 1 1 1 2 1 1 1 1 3 1 2 1 1 4 2 2 2 2 5 2 2 2 2 6 2 2 2 2 7 3 3 2 2 8 3 3 3 3 9 3 3 3 3 10 3 4 3 4 11 4 4 4 4 12 5 4 4 5 FPData FPData FPData FPData Zeit Kameras FPFrameArray FPFrameArray Container Abb. 6-1 Darstellung eines Featurepoint Framearray Containers Muttenz, Dezember 2004 Seite 40 von 107 Diplomarbeit Motion Tracking 7. 2D-Tracker 7.1. Einleitung Nach der Extraktion der Featurepunkte aus dem Videostream existiert nun zu jedem Frame eine Menge von Punkten, samt Farbinformation. Was diesen Punkten aber fehlt, ist die Beziehung von einem Frame zum nächsten. Es muss also die Frage gestellt werden, welcher Punkt aus Frame f zu welchem Punkt im darauf folgenden Frame gehört. (Abb. 7-1) Zwar bietet die Farbe eine Hilfe – ein roter Punkt erscheint auch in jedem anderen Frame als roter Punkt. Mit dieser Randbedingung wird das Problem des Findens zusammengehöriger Punkte bereits auf ein Drittel der ursprünglichen Menge reduziert(Abb. 7-2) - letztendlich führt die ungenügende Unterscheidbarkeit zwischen den Featurepunkten aber immer wieder dazu, dass man zum Grundproblem zurückkehrt (Abb. 7-3): Gegeben seien zwei Punktemengen von welchen die Punkte aus der ersten Menge mit maximal je einem Punkt der zweiten Menge verbunden werden müssen. Abbildung 7-1: Abbildung 7-2: Abbildung 7-3: Welche Punkte von Frame f ent- Farben helfen, die Anzahl potentieller Das Grundproblem sprechen welchen Punkten von Zuweisungskandidaten zu reduzieren. bleibt aber erhalten. Frame f+1? Muttenz, Dezember 2004 Seite 41 von 107 Diplomarbeit Motion Tracking 7.2. Das Featurepoint Tracking Problem Um nun doch noch eine Korrespondenz zu erzeugen, verbleibt über ein Frame hinweg gesehen nur noch die Ortsinformation der jeweiligen Punkte. Mit einer „Nearest Neighbour“ Methode könnten so Verbindungen geschaffen werden. Dabei besteht aber die Gefahr, dass Punkte falsch verbunden werden (Abb. 7-4 u. 7-5), wenn sich zwei nicht zusammen gehörige, gleichfarbige Punkte überkreuzen. Bei der Verteilung der Lichtpunkte am Körper wurde berücksichtigt, dass solche Situationen nicht übermässig auftreten. Aufgrund der vielfältigen Kameraperspektiven können Überkreuzungen nicht ausgeschlossen werden, es muss sogar davon ausgegangen werden, dass sie regelmässig auftreten. Abbildung 7-4: Abbildung 7-5: Eine Überkreuzung wie sie in der Reali- Eine falsche Verbindung, wie sie mit der „Nearest Neighbour“ Methode berechnet wird. Es stellt sich nun die Frage, wie trotzdem eine robuste Assoziation der Featurepunkte von Frame zu Frame ermöglicht werden kann. Als Lösung bietet sich hier die Idee an, Punkte nicht nur allein von ihrer Ortsinformation abhängig zu verbinden, sondern darüber hinaus physikalische Rahmenbedingungen der Bewegung als Entscheidungskriterium einfliessen zu lassen. 1. Trägheit Æ Weiche Bewegung Ein Featurepunkt ist letztendlich eine Aufnahme einer realen Masse und seine Bewegung unterliegt deshalb der Trägheit. Daher wird ein Featurepunkt nicht von einem Frame auf das nächste den Geschwindigkeitsvektor abrupt, sondern allmählich in einer fliessenden Bewegung verändern. 2. Limitierte Geschwindigkeit Eine weitere Einschränkung betrifft die Geschwindigkeit, welche abhängig vom aufMuttenz, Dezember 2004 Seite 42 von 107 Diplomarbeit Motion Tracking genommenen Sichtbereich und Aufnahmeobjekt ist. Daraus lässt sich immer eine maximale Geschwindigkeit bestimmen. Diese Einschränkungen bilden zusammen mit der gegebenen Problemstellung das Featurepoint Tracking Problem. 7.3. Definition Featurepoint Tracking Problem Das Featurepoint Tracking Problem ist ein Bewegungskorrespondenzproblem unter folgenden Annahmen: 1. Ununterscheidbare Punkte 2. Weiche Bewegungen 3. Limitierte Geschwindigkeiten 4. Kurze Überdeckungen Hierzu existieren bereits verschiedene Algorithmen [6]. Jeder dieser Algorithmen hat spezifische Vor- und Nachteile. Daher werden nachfolgend die Anforderungen an einen solchen Algorithmus im Rahmen der Diplomarbeit bestimmt, um Auswahlkriterien für einen Kandidaten zu definieren. 7.4. Anforderungen Ein Tracking Algorithmus wie er für das Motiontracking Projekt benötigt wurde, muss verschiedenen Anforderungen genügen. • Performanz: Um Echtzeitaufnahmen an den Grenzwerten der Hardware zu ermöglichen, muss das System den Algorithmus mindestens 30 Mal pro Sekunde ausführen können. • Robustheit bei hoher Geschwindigkeit: Da konkret menschliche Motorik erfasst werden soll und die Kameras maximal 30 Frames pro Sekunde aufnehmen können, bewegen sich die Featurepunkte bei hastigen Bewegungen schnell um 30 bis 40 Pixel pro Frame. Eine hohe Geschwindigkeit für solche Algorithmen. • Robustheit bei Zittern: Das Grundrauschen einer Webcam, führt zu leichtem zittern der erfassten Punkte. Dieser Effekt fällt bei raschen Bewegungen nicht ins Muttenz, Dezember 2004 Seite 43 von 107 Diplomarbeit Motion Tracking Gewicht, wird aber zum Problem, wenn sehr langsame bzw. stehende Punkte getrackt werden sollen. • Automatische Initialisierung: Der Algorithmus muss in der Lage sein, seine Trajektorien selbständig zu initialisieren, ohne dass Eingriffe von aussen nötig sind, da ansonsten aufwändige Initialisierungsschritte durch den Bediener von Nöten wären. • Teiltrajektorien ausreichend: Es ist nicht zwingend nötig, einen bestimmten Featurepunkt konstant auch über Unterbrüche hinweg zu detektieren, da diese Information durch die Redundanz mehrerer Kameras in der 3D Berechnung einfacher und sicherer gewonnen werden kann. Nichtsdestotrotz wäre natürlich auch hier eine gute Leistung für die Qualität des Trackings von Vorteil, sie ist aber kein muss. Letztendlich ist es eine Frage des Zusammenspiels der teilweise gegensätzlichen Anforderungen, inwiefern ein Tracker geeignet oder nicht geeignet ist. Was nützt ein perfekt arbeitender Algorithmus, wenn er maximal 5 Bilder pro Sekunde verarbeiten kann? 7.5. Evaluation Eine Evaluation existierender Algorithmen, und die damit verbundene Implementation aller interessanten Tracker, hätte den zeitlichen Rahmen der Projekt- und Diplomarbeit gesprengt. Aus diesem Grund wurde als Entscheidungshilfe die umfassenden Tests der „Image and Pattern Analysis Group“ der ungarischen technischen Hochschule verwendet.[6] Diese Gruppe analysierte im Rahmen ihrer Tätigkeit verschiedene Featurepunkt Tracking Algorithmen auf Ihre Effizienz und Fehleranfälligkeit. Unter anderem auch eine Eigenentwicklung, den IP97 Algorithmus, welcher in den Bereichen Performanz und Robustheit bei hohen Geschwindigkeiten Bestwerte erreichte. Ausserdem erfüllte er auch die Selbstinitialisierungs-Bedingung. Alleinig die Robustheit bei zitternden Punkten ist nicht gewährleistet, weil der Algorithmus Richtungsänderungen auf maximal 90° einschränkt – also ungeeignet für schnelle Richtungswechsel bei langsamen Geschwindigkeiten, wie sie typisch für zitternde Bewegungen sind. Muttenz, Dezember 2004 Seite 44 von 107 Diplomarbeit Motion Tracking Alle getesteten Algorithmen hatten aber entweder eine ähnliche Einschränkung oder wiesen Nachteile in anderen Anforderungsbereichen auf, die kritischer eingestuft wurden – z.B. fehlende Selbstinitialisierung. Aus diesen Gründen wurde entschlossen, einen Algorithmus auf Basis des IP97 Trackers zu implementieren, der an die Anforderungen des Motiontracking Projektes angepasst wurde. 7.6. Tracking Algorithmus 7.6.1. Beschreibung Abgeleitet vom IP97 Algorithmus basiert der im Rahmen der Diplomarbeit erstellte Tracker auf dem Prinzip konkurrierender Trajektorien. Betrachtet werden in jeder Iteration jeweils die Punkte von drei aufeinander folgenden Frames. Erfüllt ein solches Tripel von Punkten bestimmte, nachfolgend beschriebene Bedingungen, wird aus Ihnen eine so genannte x y y Frame fx-1 fx fx+1 Frame fx-1 fx fx+1 Hypothese gebildet. Eine Hypothese ist ein Kandidat für einen potentiellen Trajektorienverlauf, der in einem weiteren Schritt mit einer so genannten Kostenfunktion bewertet wird. Ist diese Bewertung für jede Hypothese erfolgt, werden anhand ihrer Kosten die billigsten (=besten) Hypothesen als definitive Trajektorien weiterverwendet. In einem „Postprocessing“ Schritt können noch beliebige Ergänzungen vorgenommen werden, welche das Tracking verbessern. Muttenz, Dezember 2004 Seite 45 von 107 Diplomarbeit Motion Tracking 7.6.2. Initialisierung f1 f2 f3 Abbildung 7-8: Die drei ersten Frames eines typischen Trackingprozesses. Die gestrichelten Kreise markieren die Suchbereiche für Punkte, die eine Hypothese mit dem Ausgangspunkt in f2 bilden dürfen. Bei der Initialisierung beginnt der Tracker für jeden Punkt in Frame 2 eine Suche im vorhergehenden und nachfolgenden Frame. Die Grenze des Suchbereichs ist durch die festgesetzte, maximal erlaubte Geschwindigkeit vorgegeben. Das heisst je höher die erlaubte Geschwindigkeit, desto geringer die Performanz des Trackers, weil er mehr potentielle Hypothesen analysieren muss. Im typischen Fall findet der Tracker pro Punkt in f2 mehrere sich konkurrierender Hypothesen. In einem zweiten Schritt werden für alle gefundenen Hypothesen mittels einer Kostenfunktion eine Wertigkeit zwischen 0 und 1 berechnet. Je besser die Hypothese, desto kleiner sind die resultierenden Kosten für die Hypothese. An diesem Punkt werden bereits Hypothesen verworfen, deren Kosten einen bestimmten Schwellwert überschreiten. Der Schwellwert liegt typischerweise im Bereich zwischen 0.6 bis 0.8. Je niedriger der Wert, desto schneller der Tracker, dafür werden möglicherweise korrekte Korrespondenzen nicht erkannt. Umgekehrt besteht bei höheren Werten wiederum eine erhöhte Fehleranfälligkeit für falsch erkannte Verbindungen. Im dritten Schritt wird dann anhand der Kosten eine Auswahl an nicht kollidierenden Hypothesen getroffen, aus denen die endgültigen Trajektorien gebildet werden. Muttenz, Dezember 2004 Seite 46 von 107 Diplomarbeit Motion Tracking 7.6.3. Fortführendes Tracking In jedem Frame kann ein Punkt maximal 2 Verbindungen haben, eine Vorwärts- und eine Rückwärtsverbindung. Ein Link zeigt an, dass ein Punkt zu einem Nachbar verbunden wurde und enthält einen Verschiebungsvektor, der zur Berechnung der Hypothesenkosten verwendet wird. fx-1 fx fx+1 Abbildung 7-9: Fortführendes Tracking (fx, x>2) – die schwarzen Linien zeigen symbolische Vorwärts- und Rückwärtsverknüpfungen. Nur die rot markierten Punkte bilden komplett neue Hypothesen. Gelbe erweitern einen bestehenden Trajektor und grüne Punkte wurden bereits im Iterationsschritt des vorhergehenden Frames verknüpft und müssen daher nicht mehr berücksichtigt werden. Im Unterschied zum Initialisierungsschritt bestehen im fortführenden Tracking bereits solche Verbindungen. Der Trackingschritt geht vom Prinzip her gleich vor, wie die Initialisierung. Der einzige Unterschied ist die Verwendung dieser gegebenen Verbindungen aus vorhergehenden Iterationen. Dadurch kann die Anzahl zu prüfender Hypothesen bereits im Vorfeld reduziert und damit die Performanz des Trackers verbessert werden. 7.6.4. Postprocessing Postprocessing beschreibt den Arbeitsschritt nach jeder Trackingiteration. In diesem Schritt kann die Qualität des Trackings unter Betrachtung von mehr als 3 Frames noch verbessert werden. Muttenz, Dezember 2004 Seite 47 von 107 Diplomarbeit Motion Tracking In Frage kämen Trajektorglättungen oder das Verbinden unterbrochener Trajektorien über mehrere Frames hinweg. Beide Schritte wurden aber im Rahmen der Diplomarbeit an dieser Stelle ausgelassen. Zur Begründung: • Trajektorglättungen verändern Daten - da die Daten später noch einem 3D Tracking Prozess als Grundlage dienen sollen, ist dies zu diesem Zeitpunkt noch nicht erwünscht. • Um Teiltrajektorien über mehrere Frames hinweg zu verbinden, ist ein grosser Suchbereich nötig. Bei hohen Bewegungsgeschwindigkeiten vergrössert sich der Suchbereich nach ein paar Frames sehr schnell auf das ganze Bild. Dadurch wird der Algorithmus sehr fehleranfällig und verbraucht viel Rechenzeit bei zweifelhaftem Gewinn. Ausserdem kann der 3D Tracker diese Bindungen immer noch nachträglich und erst noch zuverlässiger herstellen, da er, im Gegensatz zum 2D Tracker, die Informationen anderer Kameras zur Verfügung hat und dank dieser Redundanz mit grösserer Sicherheit arbeiten kann. 7.6.5. Kostenfunktion r a r a r b r b fx-1, fx, fx+1 Die Kostenfunktion stellt das eigentliche Herzstück des Trackers dar. Sie entscheidet, ob eine Hypothese gut oder schlecht ist. Anhand der 3 an einer Hypothese beteiligten Featurepunkte wird ein Wert zwischen Null und Eins berechnet. Je besser die Bewertung der Hypothese, desto niedriger ist der Wert der Funktion. Die Basis der Kostenfunktion wie sie hier verwendet wurde, stammt von Sethi and Jain und bewertet Änderungen im Betrag und der Richtung der Geschwindigkeit. Anhand von Muttenz, Dezember 2004 Seite 48 von 107 Diplomarbeit Motion Tracking Gewichtungsfaktoren bestimmen sie, welche dieser beiden Eigenschaften wie stark bewertet wird. Richtungsänderung: Die Cosinusfunktion ist bereits eine optimale Kostenfunktion für Richtungsänderungen, da sie für Winkel zwischen 0° und 90° Werte zwischen Null und Eins annimmt. Mit Hilfe des Skalarproduktes lässt sie sich leicht aus den beiden Vektoren a und b berechnen. f (ϕ ) 1 f (ϕ ) = cos(ϕ ) r r a ⋅b ϕ r = cos( ϕ ) f (ϕ ) = r | a |*|b | 180° Das Problem ist hierbei, dass die Funktion so nur Richtungsänderungen von maximal 90° erlaubt. Daher wurde die Funktion so angepasst, dass sie Winkel bis 180° verträgt. f (ϕ ) 1 f (ϕ ) = r r 1 1 a ⋅b 1 1 r = + cos(ϕ ) f (ϕ ) + r 2 2 | a |*| b | 2 2 1 1 + cos(ϕ ) 2 2 ϕ 180° Geschwindigkeitsänderung: Das Quadrat ist das optimale Viereck, um mit minimalem Umfang eine gegebene Fläche einzuschliessen. Diese Eigenschaft wurde ausgenutzt, um die Kostenteilfunktion für Geschwindigkeitsänderungen herzuleiten. Aus den Beträgen der beiden Geschwindigkeitsvektoren errechnet sich der Flächeninhalt eines Rechteckes: r r F =| a | * | b | Muttenz, Dezember 2004 Seite 49 von 107 Diplomarbeit Motion Tracking Aus diesem wiederum berechnet sich die Seitenlänge des flächengleichen Quadrates: a = Quadrat F = r r | a | * | b | Bildet man nun das Verhältnis der Umfänge, beider Figuren, erhält man eine gaussähnliche Glockenfunktion, die abhängig vom Verhältnis der Vektorlängen eine Zahl zwischen Null und Eins bildet. Je ähnlicher die Seitenlängen, desto näher bei Eins liegt diese Zahl. Abbildung 7-10 Die gaussähnliche Glockenkurve wurde anhand 1 von Geschwindigkeiten mit 2er Potenzen berechnet. Das heisst, ein Wert von 10 bedeutet eine Geschwindigkeitsänderung um den Faktor 1024 zur Ausgangsgeschwindigkeit. Ein Wert von 2 0 -10 entspricht dem Faktor 4 -6 -2 2 6 10 Gewichtete Kostenfunktion: Aus den beiden Teilfunktionen berechnet sich die effektive Kostenfunktion. Da beide Funktionen ihr Maximum bei optimalen Trajektorien erreichen, subtrahiert man ihre Funktionswerte von 1. So erhält man eine Kostenfunktion, die bei optimalen Trajektorien ein Minimum aufweist. Die beiden Teilwerte wiederum werden mit je einem eigenen Gewichtungskoeffizienten (ω a , ω b ) versehen, die zusammenaddiert 1 ergeben. Daraus erfolgt die komplette Kostenfunktion, wie sie im Tracker zum tragen kommt: r r r r ⎛ ⎞ ⎛ 2 * | a | * | b | ⎞⎟ a ⋅b ⎜ r r ⎟⎟ + ω b 1 − δ = ω a ⎜⎜1 − r r ⎜ + | a | * | b | a b | | | | ⎟⎠ ⎠ ⎝ ⎝ Dynamisch gewichtete Kostenfunktion: Wie bereits erwähnt, funktioniert diese Kostenfunktion sehr effizient bei sich bewegenden Featurepunkten, da hier das durch Bildrauschen verursachte Flimmern nicht zum tragen kommt. Bei langsamen Geschwindigkeiten oder gar bei stehenden Featurepunkten, dominiert das Zittern, und die Kostenfunktion versagt. Muttenz, Dezember 2004 Seite 50 von 107 Diplomarbeit Motion Tracking Aus diesem Grund werden die Gewichtungsfaktoren (ω a , ω b ) dynamisch abhängig vom Betrag der Geschwindigkeit der Verschiebungsvektoren berechnet. Ab unterschreiten einer bestimmten Normgeschwindigkeit v nrm wird der Koeffizient für Richtungsänderungen ω a graduell verkleinert, bis er schliesslich bei erreichen einer Minimalgeschwindigkeit auf Null gesetzt wird, so das Richtungsänderungen komplett ignoriert werden. Auch der Geschwindigkeitsbetrag ist bei niedrigen Geschwindigkeiten sehr volatil, daher wird auch sein Koeffizient ab unterschreiten von v nrm graduell verkleinert. Er darf aber nie Null werden, da sonst keine Vergleichsbasis mit konkurrierenden Hypothesen mehr besteht. Mit diesen Anpassungen ist ein robustes Tracking auch bei rauschendem Videobild problemlos möglich. 7.6.6. Typische Trackerparameter Der 2D Tracker verfügt über verschiedene Parameter, die die Trackingleistung massgeblich beeinflussen. • Geschwindigkeitslimit v max : 40 Durch das Limit wird der Suchbereich des Trackers vergrössert oder verkleinert, was die Anzahl gefundener Hypothesen, und damit die Performanz, massgeblich beeinflusst. • Kostenlimit δ max : 0.7 Durch das Kostenlimit werden sehr schlechte Hypothesen bereits vor den detaillierten Tests ausgeschlossen und die Anzahl zu testender Hypothesen damit verringert. • Normgeschwindigkeit v nrm : 10 Ab Geschwindigkeiten > v nrm werden die Gewichtungskoeffizienten mit ihren Standardwerten verwendet, darunter werden sie graduell verkleinert bis v min erreicht wird. • Minimalgeschwindigkeit v min : 2 Unterhalb dieser Geschwindigkeit wird der Gewichtungskoeffizienten für Richtungs- Muttenz, Dezember 2004 Seite 51 von 107 Diplomarbeit Motion Tracking änderungen ω a auf Null gesetzt und auch der Koeffizient für ω b Geschwindigkeitsänderungen wird auf kleinere Werte gesetzt. • Gewichtungskoeffizient für Richtungswechsel ω a : 0.9 Richtungswechsel sind besonders bei hohen Geschwindigkeiten aufgrund der Trägheit sehr schwierig zu vollziehen. • Gewichtungskoeffizient für Geschwindigkeit ω b : 0.1 Geschwindigkeitsänderungen spielen hauptsächlich dann eine Rolle, wenn es darum geht, Hypothesen mit ähnlichen Richtungswechseln zu klassifizieren, oder aber wenn die Gesamtgeschwindigkeit recht niedrig ist (v < v nrm ) . Muttenz, Dezember 2004 Seite 52 von 107 Diplomarbeit Motion Tracking 8. 3D-Tracker Nachdem die 2D-Daten von jedem Client beim Server angekommen sind, wird der 3DTracker aktiv. Die Aufgabe des 3D-Trackers ist es, aus mehreren getrackten 2D-Daten die 3D-Position zu berechnen. Abb. 8-1 Aus mehreren 2D-Daten werden 3D-Daten berechnet 8.1. Synchronisation Als erstes muss das Problem der Synchronisation gelöst werden. Das heisst, es muss sichergestellt werden, dass der 3D-Tracker bei jedem Frame zeitgleiche Daten von den Clients erhält. Dazu werden die einzelnen Frames mit einem Zeitsignal vom Server markiert, welches jede Sekunde erhöht wird. Der Server synchronisiert sich nun auf den Client, welcher zuerst ein höheres Zeitsignal zurückschickt und verwirft diejenigen Frames der anderen Clients, die noch das alte Zeitsignal senden. Muttenz, Dezember 2004 Seite 53 von 107 Diplomarbeit Motion Tracking 8.2. Berechnung der 3D-Position Ein 2D-Punkt eines Kamerabildes wird in einem dreidimensionalen Raum als Gerade dargestellt. Z ? ? V U X Y Abb. 8-2 Projektion einer Geraden auf einen Punkt Eine solche Gerade ist definiert mit zwei Raumpunkten. Der eine Punkt entspricht genau der Kameraposition. Der andere Punkt wird mit Hilfe des Tsai Algorithmus berechnet. Die Funktion "Image_coord_to_world_coord" berechnet aus den 2D-Bildkoordinaten und einem festen dritten Koordinatenwert einen weiteren Punkt im Raum. Muttenz, Dezember 2004 Seite 54 von 107 Diplomarbeit Motion Tracking 8.3. Schnitt zweier windschiefen Geraden Damit ein Punkt in einem dreidimensionalen Raum lokalisiert werden kann braucht es die 2D-Daten von mindestens 2 Kameras. Z V V U X Y U Abb. 8-3 Eindeutige Bestimmung des 3D-Punktes mit 2 Kameras Im Idealfall schneiden sich die beiden Geraden. Aufgrund der begrenzten Auflösung der Webcams, sowie der Berechnung des Schwerpunktes eines Featurepunktes werden sich diese Geraden nie genau schneiden. Muttenz, Dezember 2004 Seite 55 von 107 Diplomarbeit Motion Tracking Deshalb braucht es hier eine Berechnung des kleinsten Abstandes zweier windschiefen Geraden. Der Mittelpunkt M des kürzesten Abstandes der Geraden G1 und G2 bildet das Zentrum des Punktes im Raum. z G2 d G1 M x y Abb. 8-4 Abstand zweier windschiefen Geraden Die Anzahl der möglichen Schnittpunkte A berechnet sich so: A = n ⋅ (n − 1) , wobei n die 2 Anzahl Kameras ist, die den Featurepunkt sehen. Bei 5 Kameras ergeben sich also 10 Schnittpunkte. Der Mittelwert aller Schnittpunkte ist das Zentrum des Bodypunktes. Bei Messungen ergab sich bei einem korrekten Tracking ein typischer Abstand d von 0 bis 5mm. Werte die darüber liegen, lassen auf eine falsche Assoziation schliessen. Diese Distanz kann also als Entscheidung dienen, eine falsche Verbindung zu lösen. 8.4. Töpfe und Kugeln Pro Farbe gibt es einen 3D-Tracker. Jeder Featurepunkt hat eine eindeutige ID, die nach der automatischen Assoziation einem Bodypunkt zugeordnet wird. Die Zuordnung erfolgt nach dem Prinzip "Töpfe und Kugeln". Ein Bodypunkt entspricht einem Topf der gefüllt werden muss. Jeder Bodypunkt erwartet gleich viele Featurepunkte wie die Anzahl Kameras. Die Featurepunkte entsprechen den Kugeln. Solange die Trajektor-ID dieselbe ist, wie nach der Assoziation, ist die Zuordnung eindeutig. Muttenz, Dezember 2004 Seite 56 von 107 Diplomarbeit Motion Tracking 2 1 3 Kamera 1 1 1 2 Kamera 2 4 2 2 3 1 3 Kamera 4 2 3 1 Kamera 5 Kamera 3 Fuss rechts Knie links Ellbogen links Schulter rechts Abb. 8-5 Featurepoints vor der Zuordnung 1 1 1 2 4 Fuss rechts 3 2 2 Knie links 1 2 2 3 Ellbogen links 3 3 1 Schulter rechts Abb. 8-6 Zugeordnete Featurepoints Muttenz, Dezember 2004 Seite 57 von 107 Diplomarbeit Motion Tracking Wenn nun eine Kamera, welche alle Featurepunkte gesehen hat, nur einen Featurepunkt verliert, und diesen später wieder findet, so ist die Zuordnung immer noch eindeutig. Nun gibt es verschiedene Fälle, bei denen auf Anhieb keine eindeutige Zuordnung möglich ist. Es verschwindet zum Beispiel bei einer Kamera, welche nur 3 von 4 blauen Featurepunkten sieht, ein weiterer blauer Featurepunkt. Tauchen nun einer oder beide fehlenden blauen Featurepunkte wieder auf, so ist die Zuteilung nicht klar. Damit diese Punkte trotzdem wieder zugeordnet werden können, muss mit Hilfe der 3D-Information aus den anderen Kameras, der richtige Featurepunkt geschätzt werden. 8.5. Bone-Model (Knochenmodell) Ein weiteres Hilfsmittel zur korrekten Zuordnung oder zum lösen von falschen Verbindungen ist die Verwendung eines Bonemodels. Das bedeutet, dass jede Verbindung zweier Bodypunkte eine bestimmte Elastizität besitzt. Eine Verbindung von der Schulter zum Ellbogen hat eine kleinere Elastizität als eine Verbindung zwischen der Schulter und der Hüfte. Falls der 2D-Tracker zum Beispiel die Featurepunkte der rechten Hand und der rechten Hüfte vertauscht, bemerkt dies der 3D-Tracker im ersten Moment noch nicht. Erst wenn sich die beiden Featurepunkte wieder voneinander entfernen, werden die Verbindungen vom rechten Ellbogen zur rechten Hand immer länger. Dann muss diese falsche Assoziation gelöst und wieder korrekt verbunden werden. Muttenz, Dezember 2004 Seite 58 von 107 Diplomarbeit Motion Tracking 8.6. Epipolarlinie Falls keine 3D-Information vorhanden ist, das heisst ein Bodypunkt wird nur noch von einer Kamera gesehen, so kann zumindest der Suchbereich mit Hilfe der Epipolarlinie auf eine Gerade im Kamerabild beschränkt werden. Kamera 1 sieht den Punkt P als Projektion P' Es wird eine Ebene aufgespannt mit den Stützpunkten O1, O2 und P. Wobei O1 und O2 die optischen Zentren der beiden Kameras sind und P der Raumpunkt ist. Diese so genannte Epipolarebene wird mit den beiden Kamerabildern geschnitten. Die Schnittgeraden der Epipolarebene und der Kamerabildebene heissen Epipolarlinien. Daraus folgt, dass sich der Punkt P' auf der Epipolarlinie der Kamera 2 befinden muss. Somit muss P'' der richtige Punkt sein und P''' der falsche. Epipolarebene P Kamerabild 1 P' Kamerabild 2 Epipolarlinien P''' P'' O1 O2 Abb. 8-7 Epipolarebene mit den zwei Epipolarlinien Muttenz, Dezember 2004 Seite 59 von 107 Diplomarbeit Motion Tracking 9. Transformfilter Funktionsweise: 1. Zonen suchen (rekursiv) 2. kleine Zonen löschen 3. benachbarte Zonen mit gleicher Farbe zusammenfassen 4. Schwerpunkt berechnen 5. Parameter via Netzwerk der Clientapplikation senden Die Funktion transform() des Transformfilters wird pro Frame einmal aufgerufen. Das Frame wird zeilenweise von unten links nach oben rechts abgearbeitet. Sobald ein Pixel gefunden wird, der über einem einstellbaren Schwellwert liegt, wird die rekursive Funktion „suche“ aufgerufen. Der gefundene Pixel wird in eine Liste eingetragen. Muttenz, Dezember 2004 Seite 60 von 107 Diplomarbeit Motion Tracking Im Videoframe wird der Pixel auf schwarz gesetzt. Für jeden der 8 Nachbarpixel wird die Funktion ebenfalls aufgerufen bis die ganze Zone erfasst wurde. Es gibt 3 Bedingungen, damit ein Pixel in die Zone aufgenommen wird. 1. Der Pixel muss über dem Schwellwert liegen. 2. Der Pixel muss auf der gleichen Zeile sein, wie die Maske zeigt. Damit wird verhindert, dass sich Zonen am linken und rechten Bildrand zu einer Zone verschmelzen. 3. Der neue Pixel muss die gleiche Farbe haben wie der vorhergehende Pixel der Zone. Falls die Zone weniger als eine einstellbare Anzahl Pixel beinhaltet, wird sie aus der Zonenliste gelöscht. Ansonsten wird der Mittelpunkt und die Farbe der Zone berechnet. Danach geht die Suche weiter und zwar dort wo das erste Pixel der Zone gefunden wurde. Sobald das ganze Frame durchsucht wurde, werden Zonen, welche die selbe Farbe haben und näher als 10 Pixel in x- oder in y-Richtung zueinander sind, zusammengefasst. Ein neuer Mittelpunkt wird berechnet. Als letztes werden die X-Y-Parameter und die Farbe via Netzwerk der Clientapplikation geschickt. Muttenz, Dezember 2004 Seite 61 von 107 Diplomarbeit Motion Tracking 10. Kalibrierung Ein wichtiger Bestandteil eines Motion Tracking Systems ist die Kalibrierung der Kameras. Diese ist erforderlich damit ein Zusammenhang zwischen dem Weltkoordinatensystem und dem Bildkoordinatensystem hergestellt werden kann. Eine weit verbreitete Möglichkeit der Kamerakalibrierung ist die Methode von Roger Tsai. Durch Angabe einer Menge von Punkten (xw, yw, zw) im Weltkoordinatensystem und dem messen der zugehörigen Punkte (xi, yi) auf dem Kamerabild kann eine Kamera kalibriert werden. Wir verwenden zur Kalibrierung einen Würfel mit einem schachbrettähnlichen Muster. Der Würfel hat auf jeder Seite 36 Quadrate, welche uns 36 Referenzpunkte liefern. Somit können pro Kamera maximal 108 Punkte detektiert werden. Abb. 10-1 Originalkamerabild des Würfels Abb. 10-2 Gefundene Schwerpunkte einer Würfelseite Muttenz, Dezember 2004 Seite 62 von 107 Diplomarbeit Motion Tracking Bei der Kalibrierung werden folgende Parameter ermittelt: Die 5 inneren (intrinsischen) Parameter definieren die Abbildung zwischen den 3DWeltkoordinaten in mm und den 2D-Bildkoordinaten in Pixeln. Dazu gehören: - f Abstand zwischen der Bildebene und dem optischem Zentrum (Brennweite) - kappa1 Koeffizient der radialen Linsenverzerrung - Cx, Cy Koordinaten des Ursprungs der Bildebene - sx Horizontaler Skalierungsfaktor Die 6 äusseren (extrinsischen) Parameter definieren den Zusammenhang zwischen dem Weltkoordinatensystem und dem Kamerakoordinatensystem. Dazu gehören: - Rx,Ry,Rz Rotationswinkel für die Transformation zwischen den Weltkoordinaten und den Kamerakoordinaten - Tx,Ty,Tz Translationsvektor für die Transformation zwischen den Weltkoordinaten und den Kamerakoordinaten Zusätzlich zu diesen 11 variablen Parametern gibt es 6 feste von der Kamera abhängige intrinsische Parameter: - Ncx Anzahl der Sensorelemente des CCD in horizontaler Richtung - Nfx Anzahl der Pixel in horizontaler Richtung des FrameGrabberbildes - dx Horizontaler Abstand zwischen den CCD-Sensorpixeln - dx Vertikaler Abstand zwischen den CCD-Sensorpixeln - dpx Effektive Breite eines Pixels im FrameGrabberbild - dpy Effektive Höhe eines Pixels im FrameGrabberbild Muttenz, Dezember 2004 Seite 63 von 107 Diplomarbeit Motion Tracking yw xc zw Φ vi Ψ zc Θ yc ui xw Abb. 10-3 Bezeichnungen Kamera- Bild- und Weltkoordinatensystem Damit der Algorithmus von Tsai funktioniert müssen folgende Punkte eingehalten werden: • Es werden mindestens 7 und maximal 500 Referenzpunkte benötigt. • Der Abstand zwischen dem nächsten und dem am weitesten entfernten Referenzpunkt sollte möglichst gleich gross sein wie der Abstand zwischen der Kamera und dem nächsten Referenzpunkt. yw zw x x xw Abb. 10-4 Distanz Kamera-Würfel entspricht Länge des Würfels Muttenz, Dezember 2004 Seite 64 von 107 Diplomarbeit Motion Tracking • Der Weltursprung darf nicht in der Nähe des Zentrums vom Kamerablickfeld sein. • Der Weltursprung darf nicht in der Nähe der Y-Achse des Kamerakoordinatensystems sein. • Die Referenzpunkte sollten möglichst den Teil des Bildes umfassen, in der sich später die zu trackende Person bewegt. • Eine nicht coplanare Kalibrierung ist genauer als eine coplanare. Dieses Verfahren wurde bereits in der Projektarbeit angewandt. Jedoch mussten die Koordinaten der einzelnen Referenzpunkte aus einem Screenshot sehr mühsam von Hand ausgelesen werden. Dies dauerte bis zu einer Stunde pro Kamera. Ein Hauptziel dieser Diplomarbeit war es, die Kalibrierung der Kameras zu automatisieren und damit den Zeitaufwand um ein vielfaches zu reduzieren. Damit dies möglich ist, müssen die Kalibrierungspunkte mit Hilfe der Bildverarbeitung erkannt werden. Also bauten wir einen Kalibrierungswürfel, der auf jeder Seite ein Schachbrettmuster besitzt. Der Würfel hat eine Kantenlänge von 120cm und dessen Seiten bestehen aus einem Muster mit Quadraten von 10cm Kantenlänge. Dies ergibt pro Würfelseite 36 Quadrate. Eine Detektion der Quadrateckpunkte ist aufgrund der schlechten Qualität der Webcambilder schwierig. Deshalb werden statt der Eckpunkte die Schwerpunkte detektiert. Wegen Beleuchtungseffekten erscheint der Abstand zwischen zwei blauen Quadraten grösser als das Quadrat selbst, obwohl beide in Wirklichkeit gleich gross sind. Deshalb würde eine solche Detektion der Eckpunkte zu falschen Referenzpunkten führen. Muttenz, Dezember 2004 Seite 65 von 107 Diplomarbeit Motion Tracking Damit die Schwerpunkte berechnet werden können muss man den Suchbereich einschränken. Da bekannt ist, wo sich die Quadrate ungefähr befinden, wird, ausgehend von den Eckpunkten des Würfels, ein lineares Gitter berechnet. Die Schnittpunkte dieses Gitters bilden den Startpunkt für die Suche nach dem Schwerpunkt. Zuerst wird das Webcambild respektive eine Würfelseite in ein Binärbild umgewandelt. Dazu wird ein Schwellwert berechnet, damit sich die Quadrate vom weissen Hintergrund besser abheben. Wegen den digitalen Effekten muss das Histogramm geglättet werden, um einen zuverlässigen Schwellwert zu finden. Histogramm einer Würfelseite Häufigkeit 900 800 700 600 500 400 Original Geglättet 300 200 100 0 Grauwert Abb. 10-5 Histogramm einer Würfelseite vor und nach der Glättung Muttenz, Dezember 2004 Seite 66 von 107 Diplomarbeit Motion Tracking // Histogramm glätten for (i=5;i<251;i++) { histogramm2[i] = ( Die Glättung des Histogramms histogramm[i-5]+ histogramm[i-4]+ histogramm[i-3]+ histogramm[i-2]+ histogramm[i-1]+ histogramm[i+0]+ histogramm[i+1]+ histogramm[i+2]+ histogramm[i+3]+ histogramm[i+4]+ histogramm[i+5])/11; } geschieht durch eine Mittelwertbildung von 11 benachbarten Histogrammwerten. Nach viermaligem durchlaufen der Schlaufe ist das Histogramm soweit geglättet, dass die beiden lokalen Maximas detektiert werden können. Dann wird das lokale Minimum dazwischen berechnet, welches den eigentlichen Schwellwert für die Binärisierung darstellt. Bereich für Histogramm berechnen Histogramm bilden Histogramm glätten Lokales Minimum zwischen den beiden Maxima suchen Binärbild erstellen Abb. 10-6 Schematischer Ablauf zum Finden des Schwellwerts Muttenz, Dezember 2004 Seite 67 von 107 Diplomarbeit Motion Tracking Ausgehend von diesem Binärbild wird nun der Schwerpunkt gesucht. Entweder ist der Startpunkt ein weisser Pixel (S1), dann wird spiralförmig der nächstgelegene schwarze Pixel geS2 sucht. Oder der Startpunkt ist schon schwarz (S2), dann wird der nächstgelegene Randpixel gesucht. S1 Falls der Randpixel zu weit vom Startpunkt entfernt ist, wird kein Schwerpunkt berechnet. Es muss davon ausgegangen werden, dass der Startpunkt an einem falschen Ort war. Ist der Randpixel gefunden, wird nach dem Freemancode S1 der Rand der Figur im Gegenuhrzeigersinn abgesucht. Solange bis man wieder beim ersten Randpixel angekommen ist, werden nun jeweils die X-Koordinaten und YKoordinaten der Randpixel aufsummiert und durch die Anzahl Randpixel geteilt. Man erhält so den Schwerpunkt. Muttenz, Dezember 2004 Seite 68 von 107 Diplomarbeit Motion Tracking Dies ist das Resultat einer Schwerpunktberechnung einer Würfelseite. Damit die Kamera kalibriert werden kann, müssen mindestens zwei Seiten berechnet werden. Diese gemessenen 2D-Bildkoordinaten werden zusammen mit den zugehörigen 3DWeltkoordinaten dem Tsai-Programm übergeben. Dort werden dann die extrinsischen und intrinsischen Kameraparameter berechnet. Auszug aus der Liste mit den Kalibrierungspunkten. Pro Zeile ein Punkt mit xw, yw, zw in mm und xi, yi in Pixeln Mit einer erfolgreichen Kalibrierung ist es nun möglich Umrechnungen zwischen 3D-Weltkoordinaten und 2DBildkoordinaten zu machen. Ebenso kann die genaue Position der Kamera in Bezug auf das Weltkoordinatensystem berechnet werden. Die rote Umrandung des Würfels ist die berechnete Position des Würfels, also eine Transformation von 3D-Punkten ins 2-dimensionale Kamerabild. Muttenz, Dezember 2004 Seite 69 von 107 Diplomarbeit Motion Tracking Schematischer Ablauf einer Kalibrierung Bild laden Würfelseite wählen Eckpunkt anklicken Nein Ja 4 Punkte? Ja Raster OK? Nein Raster löschen Nein Würfelseite wählen Ja Neue Seite? Nein Kameratyp wählen Kalibrieren Kalibrierung OK? Ja Fertig Muttenz, Dezember 2004 Seite 70 von 107 Diplomarbeit Motion Tracking 11. Featurepunkt-Bodypunkt-Assoziation Bevor man mit einem Tracking der einzelnen Bodypoints anfangen kann, müssen diese zuerst assoziiert werden. Das heisst bei jedem Kamerabild muss definiert werden, welcher Featurepoint zum entsprechenden Bodypoint gehört. Bei einer manuellen Assoziation wird jeder Featurepoint mit der Maus ausgewählt und der zugehörende Bodypoint ebenfalls. Das bedeutet bei 13 Bodypoints pro Kamera 26 Mausklicks. Bei 5 Kameras sind dies schon 130 Klicks. Ein Ziel dieser Diplomarbeit bestand darin, diese Assoziation zu automatisieren. Damit dies möglich ist, muss die zu trackende Person am Anfang eine Grundposition einnehmen. Zum Beispiel mit ausgestreckten Armen in Richtung negative X-Achse schauend und auf dem Weltkoordinatenpunkt (600, 600, 0) stehend. Danach wird ein 3D-Modell auf jedes Kamerabild projiziert und mit den aktuellen Featurepoints verglichen. Mit einem Leastsquare-Verfahren werden dann die Featurepoints den Bodypoints zugeordnet. 2D-Modell 3D-Modell Projektion Kamera 1 Vergleich 2D-Modell Kamera 2 Vergleich 2D-Modell Kamera n Vergleich Abb. 11-1 Idee der automatischen Assoziation Muttenz, Dezember 2004 Seite 71 von 107 Diplomarbeit Motion Tracking Zur Überprüfung des Ergebnisses einer automatischen Assoziation werden die gefundenen Verbindungen eingezeichnet. Es kann vorkommen, dass eine Assoziation fehlschlägt, wenn sich die Person nicht in der Grundposition befindet, oder aber falsche Featurepoints gefunden werden. Letzteres tritt auf, wenn die Lichtverhältnisse ungünstig sind und andere Gegenstände als die LED-Pingpongbälle als Featurepoints erkannt werden. Abb. 11-2 Korrekt assoziiertes Modell Muttenz, Dezember 2004 Seite 72 von 107 Diplomarbeit Motion Tracking 12. Hardware 12.1. Computer Es wurden gesamthaft 6 Rechner verwendet, auf 5 Rechnern wurde der Client installiert mit je 1 Webcam und auf einem Rechner wurde der Server installiert. 12.2. Client-Rechner: • 2 Desktop Computer HP Vectra (2.0 GHz) • 2 Desktop Computer HP Compaq (3.0 GHz) • 1 Desktop Computer HP x2100 (2.0 GHz) 12.3. Server-Rechner: • 1 Desktop Computer HP Compaq (3.0 GHz) 12.4. Installierte Software • Windows XP • Visual Studio .NET 2003 • DirektX 9.0 SDK Muttenz, Dezember 2004 Seite 73 von 107 Diplomarbeit Motion Tracking 12.5. Webcam 5 Stück des Typs Logitech Quickcam Pro 4000 wurden für das Tracking verwendet. Sensortyp ICX098BQ von Sony oder LZ24BP von Sharp Grösse 1/4" VGA CCD Progressive Scan Video Auflösung 640 (H) x 480 (V) Effektive Pixel 659 (H) x 494 (V) Pixel Pitch 5.6um (H) x 5.6um (V) Sensorgrösse 4.6mm (H) x 3.97mm (V) Bildwiederholrate Maximal 30 Bilder pro Sekunde Das USB-Anschlusskabel der Webcam darf mit einem maximal 4.5 Meter langen USBKabel verlängert werden. Muttenz, Dezember 2004 Seite 74 von 107 Diplomarbeit Motion Tracking 12.6. Kalibrierungswürfel Der Kalibrierungswürfel besteht aus 3mm Pavadex einseitig weiss beschichtet. Die Kanten sind innen verstärkt mit Holzleisten 18mm x 18mm. Das Schachbrettmuster besteht aus farbiger selbstklebender Folie. Der Würfel ist auf 4 Rollen montiert und somit einfach verschiebbar. 120 120 5 10 5 10 10 10 120 6 Masse in cm Abb. 12-1 Massangaben des Kalibrierungswürfels Abb. 12-2 Kalibrierungswürfel Muttenz, Dezember 2004 Seite 75 von 107 Diplomarbeit Motion Tracking 12.7. LED Exoskelett Das Exoskelett besteht aus 13 Leuchtdioden, welche in Pingpongbälle eingelassen sind. Das ganze wird von einer Elektronik gesteuert, welche von 4 Akkus vom Typ Mignon gespiesen wird. Da die LEDs einen relativ schmalen Abstrahlwinkel von 8° respektive 15° haben, wird durch die diffuse Oberfläche der Pingpongbälle eine relativ gleichmässige Ausleuchtung erreicht. Die Pingpongbälle werden mit Klettverschluss an der Person befestigt. LED Pingpongball Abb. 12-3 Aufbau LED-Pingpongball Muttenz, Dezember 2004 Seite 76 von 107 Diplomarbeit Motion Tracking 12.7.1. Schema Stromversorgung LED-Exoskelett Muttenz, Dezember 2004 Seite 77 von 107 Diplomarbeit Motion Tracking 12.7.2. Bestückungsplan Stromversorgung LED Exoskelett 12.7.3. Stückliste Stromversorgung LED Exoskelett Typ Wert D1 – D26 Diode BAV18 Q1 – Q13 Transistor BC546 R1 – R13 Widerstand 10kΩ R14 – R17 Widerstand 12Ω R18 – R26 Widerstand 15Ω Muttenz, Dezember 2004 Seite 78 von 107 Diplomarbeit Motion Tracking 12.7.4. Typ Technische Daten LEDs Grenzwerte Kennwerte URV IVmcd Wellen- UFV Abstrahl- Leucht- Gehäuse- Preis bei länge bei winkel farbe farbe CHF 20mA nm 20mA +/- φ IFmA Beschreibung L5-B91G 5 30 2000 470 3.6 15° Blau Glasklar 4.60 L5-G81N 5 30 6000 525 3.5 15° Grün Glasklar 4.60 L5-R91H 5 50 8000 615 1.9 8° Rot Glasklar 1.70 Muttenz, Dezember 2004 Seite 79 von 107 Diplomarbeit Motion Tracking 13. Ausblick Im Rahmen einer weiterführenden Arbeit könnte eine Umsetzung der 3D-Daten in einem Robotersystem, 3D-Animationssoftware oder Spieleanwendung ein Thema sein. Damit dies möglich ist, müssen die 3D-Daten in ein bekanntes 3D-Speicherformat umgewandelt werden. Diese Diplomarbeit befasst sich mit dem Verfolgen kontrastreicher Punkte. Mit einer Erweiterung des Trackers könnten auch allgemeine Formen oder Objekte verfolgt und dargestellt werden. Die Realisierung eines Trackings mit stereoskopischer Anordnung der Kameras wäre ein denkbarer Ansatz, um z.B. einem Roboter die Fähigkeit zu geben, sein Umfeld dreidimensional zu erfassen und sich so zu orientieren. Entwickeln einer Featurepointextraktion, die auch unter allgemeinen Umgebungsbedingungen zuverlässig funktioniert. Denkbar wäre auch eine Erweiterung, die es ermöglichen würde eine ganze Szenerie dreidimensional zu erfassen und darzustellen. Alternative Methoden der Kalibrierung erarbeiten, welche z.B. ohne aufwändige, sperrige Hardware (Würfel) realisiert werden kann. Muttenz, Dezember 2004 Seite 80 von 107 Diplomarbeit Motion Tracking 14. Quellenverzeichnis 14.1. Literatur [1] Girola, Rolf: Mathematik, Vorlesungsskript (2003) [2] Hudritsch, Marcus: Computergrafik II, Vorlesungsskript (2004) [3] D. Pesce, Mark: Programming Microsoft® DirectShow® for Digital Video and Television (2003) ISBN 0-7356-1821-6 [4] Rogerson, Dale: Inside COM (1996) ISBN 1-57231-349-8 [5] Sethi, I. K. and Jain, R.: Finding trajectories of feature points in a monocular image sequence (1987) IEEE Trans. Pattern Analysis and Machine Intelligence, 9:56-73 Muttenz, Dezember 2004 Seite 81 von 107 Diplomarbeit Motion Tracking 14.2. Internet [6] Chetverikov, Dmitry & Verestóy, Judit: Featurepoint Tracking Algorithms (1998) http://visual.ipan.sztaki.hu/psmweb/psmweb.html [7] Datenblätter zum Sensor (LZ24BP und ICX098BQ) http://www.datasheetarchive.com [8] DirectShow Transform Filter AppWizard: http://www.ifp.uiuc.edu/~chenyq/research/Utils/DShowFilterWiz/DShowFilterWiz.html [9] Fahey, Colin C# OpenGL Wrapper: http://www.colinfahey.com/opengl/csharp.htm [10] Geraint Davies Consulting Ltd – DirectShow http://www.gdcl.co.uk/dshow.htm [11] Low, Brian DirectX Capture: http://www.codeproject.com/cs/media/directxcapture.asp [12] NETMaster DShowNET: http://www.codeproject.com/cs/media/directshownet.asp [13] Tsai Camera Calibration Software: http://www-cgi.cs.cmu.edu/afs/cs.cmu.edu/user/rgw/www/TsaiCode.html Muttenz, Dezember 2004 Seite 82 von 107 Diplomarbeit Motion Tracking 15. Anhang 15.1. Testreihen Ein massgeblicher Indikator für die Qualität des Trackings, ist der Fehler zwischen gemessenen und wirklichen Längen. Um die Genauigkeit des Tracking Systems zu evaluieren, wurde eine Testreihe mit einem 1m langen Holzstab durchgeführt. Dabei war entscheidend, dass sich die Länge des Stabes von 1m in der virtuellen Realität im Idealfall gar nicht verändert. Der Stab wurde im Raum verschiedentlich positioniert, um anschliessend eine Messung vorzunehmen. Dabei wurden erstaunlich gute Resultate erreicht, welche einen maximalen relativen Fehler von 1.5% bis -1.6% aufzeigte. Z [cm] Y [cm] 240 360 120 240 Länge: 0 120 rel. Fehler: 1.0% -120 -120 X [cm] 0 120 240 Testresultat 0 -120 X [cm] 0 120 1010mm abs. Fehler: 10mm 240 Z [cm] Y [cm] 240 360 120 240 Länge: 0 120 rel. Fehler: 1.5% -120 -120 X [cm] 0 120 240 Muttenz, Dezember 2004 0 -120 Testresultat X [cm] 120 1015mm abs. Fehler: 15mm 240 Seite 83 von 107 Diplomarbeit Motion Tracking Z [cm] Y [cm] 240 360 120 240 Länge: 0 120 rel. Fehler: 0.9% -120 -120 X [cm] 0 120 240 Testresultat 0 -120 X [cm] 0 120 1009mm abs. Fehler: 9mm 240 Z [cm] Y [cm] 240 360 120 240 Länge: 0 120 rel. Fehler: 0.7% -120 -120 X [cm] 0 120 240 Testresultat 0 -120 X [cm] 0 120 1007mm abs. Fehler: 7mm 240 Z [cm] Y [cm] 240 360 120 240 Länge: 0 120 rel. Fehler: 0.7% -120 -120 X [cm] 0 120 240 Muttenz, Dezember 2004 0 -120 Testresultat X [cm] 0 120 1007mm abs. Fehler: 7mm 240 Seite 84 von 107 Diplomarbeit Motion Tracking Z [cm] Y [cm] 240 360 120 240 Länge: 0 120 rel. Fehler: 0.6% -120 -120 X [cm] 0 120 240 Testresultat 0 -120 X [cm] 0 120 1006mm abs. Fehler: 6mm 240 Z [cm] Y [cm] 240 360 120 240 Länge: 0 120 rel. Fehler: 0.5% -120 -120 X [cm] 0 120 240 Testresultat 0 -120 X [cm] 0 120 1005mm abs. Fehler: 5mm 240 Z [cm] Y [cm] 240 360 120 240 Länge: 0 120 rel. Fehler: 0.7% -120 -120 X [cm] 0 120 240 Muttenz, Dezember 2004 0 -120 Testresultat X [cm] 0 120 1007mm abs. Fehler: 7mm 240 Seite 85 von 107 Diplomarbeit Motion Tracking Z [cm] Y [cm] 240 360 120 240 Länge: 0 120 rel. Fehler: 0.4% -120 -120 X [cm] 0 120 240 Testresultat 0 -120 X [cm] 0 120 1004mm abs. Fehler: 4mm 240 Z [cm] Y [cm] 240 360 120 240 Länge: 0 120 rel. Fehler: 0.6% -120 -120 X [cm] 0 120 240 Testresultat 0 -120 X [cm] 0 120 1006mm abs. Fehler: 6mm 240 Z [cm] Y [cm] 240 360 120 240 Länge: 0 120 rel. Fehler: 0.6% -120 -120 X [cm] 0 120 240 Muttenz, Dezember 2004 0 -120 Testresultat X [cm] 0 120 1006mm abs. Fehler: 6mm 240 Seite 86 von 107 Diplomarbeit Motion Tracking Z [cm] Y [cm] 240 360 120 240 Länge: 0 120 rel. Fehler: 0.4% -120 -120 X [cm] 0 120 240 Testresultat 0 -120 X [cm] 0 120 1004mm abs. Fehler: 4mm 240 Z [cm] Y [cm] 240 360 120 240 Länge: 0 120 rel. Fehler: 1.4% -120 -120 X [cm] 0 120 240 Testresultat 0 -120 X [cm] 0 120 1014mm abs. Fehler: 14mm 240 Z [cm] Y [cm] 240 360 120 240 Länge: 0 120 rel. Fehler: 1.1% -120 -120 X [cm] 0 120 240 Muttenz, Dezember 2004 0 -120 Testresultat X [cm] 0 120 1011mm abs. Fehler: 11mm 240 Seite 87 von 107 Diplomarbeit Motion Tracking Z [cm] Y [cm] 240 360 120 240 Länge: 0 120 rel. Fehler: 1.2% -120 -120 X [cm] 0 120 240 Testresultat 0 -120 X [cm] 0 120 1011mm abs. Fehler: 12mm 240 Z [cm] Y [cm] 240 360 120 240 Länge: 0 120 rel. Fehler: 0.0% -120 -120 X [cm] 0 120 240 Testresultat 0 -120 X [cm] 0 120 1000mm abs. Fehler: 0mm 240 Z [cm] Y [cm] 240 360 120 240 Länge: 0 120 rel. Fehler: -1.6% -120 -120 X [cm] 0 120 240 Muttenz, Dezember 2004 0 -120 Testresultat X [cm] 0 120 984mm abs. Fehler: -16mm 240 Seite 88 von 107 Diplomarbeit Motion Tracking Z [cm] Y [cm] 240 360 120 240 Länge: 0 120 rel. Fehler: -0.2% -120 -120 X [cm] 0 120 240 Muttenz, Dezember 2004 0 -120 Testresultat X [cm] 0 120 998mm abs. Fehler: -2mm 240 Seite 89 von 107 Diplomarbeit Motion Tracking 15.2. Protokolle Vorbereitung Kickoff-Meeting Diplomarbeit Motion Tracking Datum: 20. Okt. 2004 Ort: Diplomarbeitsplatz im 2. Stock im AI Planungsziele für 1. Woche - Fixierung der Zielliste - Budgetplanung - Schulerfordernisse evaluieren und Angehensweise planen - Arbeitsaufteilung - Milestoneplanung - Planung der Dokumentationsstruktur - Tagesplanung -> 8:30 -> 17:00 z.B. 16:00-17:00 Doku bzw. Tagebuch Hauptziele - Kalibrierung automatisieren - GUI überarbeiten -> Integration aller Bauteile -> Client Server Architektur -> Remote Control des Clients über den Server - Übertragung von 2D Daten von Directshow auf Software über Netz Muttenz, Dezember 2004 Seite 90 von 107 Diplomarbeit Motion Tracking - Speicherformate definieren für 2D und 3D Daten - Applikation die gespeicherte Videos lädt und verarbeitet (Anstatt Realtime Daten) - Bodypointtracker -> 3D Tracker perfektionieren Erweiterte Ziele - Mehr als RGB detektieren -> CMY - Exoskelett verbessern: Aufhängung / Farben: mehr unterschiedliche LEDs - FP zu BP Assoziation automatisieren. Zum Beispiel durch Standardschemas abhängig von der Kameraperspektive - Verbesserung des Setups: Ortsunabhängigkeit/Lichtunabhängigkeit -> erhöhtes Budget erforderlich z.B. Vorhänge/Zelt/Abgedunkelter Raum etc. - Bewegungsglättung - ServerClient Kameraansteuerung: Automatisierung/ Komplette Kontrolle vom Server aus Nice to have CD mit installier und brauchbarer Softwareversion des Motiontracking Projekts. Dokumentation Klare Hard- und Softwarerequirements (z.B. Kalibrierwürfel/Kameras/Kabel/Pc’s und Software) Muttenz, Dezember 2004 Seite 91 von 107 Diplomarbeit Motion Tracking Hardwareliste Hardware der FHBB: - 3 x HP Workstation x2100 mit 17“ Flachbildschirm, Tastatur, Maus - 2 x HP Vectra ohne Bildschirm - 1 x Switch Zyxel - 1 x Hub - 10 x Netzwerkkabel - 4 x Logitech Quickcam Pro 4000 - 4 x USB Verlängerung 4.5m Sonstige Hardware: 1 Exoskelett mit 13 LED mit Klettverschlussbefestigung 4 einzelne LED Muttenz, Dezember 2004 Seite 92 von 107 Diplomarbeit Motion Tracking Protokoll: Diplomarbeit Motion Tracking mit Webcams Datum Arbeitsplatz Projektmitglieder 20.10.04 2.Stock AI S. Graf, S. Hofer, M. Schindler Anwesende Marcus Hudritsch (Betreuender Dozent) Sascha Hofer Martin Schindler (Projektleiter, Protokollführer) Stephan Graf Abwesende Ablauf Es wurden die Punkte besprochen gemäss der beiliegenden Vorbereitungsliste fürs Kickoffmeeting. Für die Kommunikation der Serversoftware stehen zwei Varianten zur Auswahl: COM-Objekte und Netzwerkkommunikation. Wir haben uns für das Netzwerk entschieden. Es wird ein Tagebuch geführt, welches jeweils vor den wöchentlichen Treffen abgegeben wird. Herr Hudritsch wird ein neues Bewertungsraster erstellen und dies mit Herr Fornaro (Experte) besprechen und anschliessend uns mitteilen. Zusätzlich zur Dokumentation wird eine Internetseite erstellt, wo die Diplomarbeit erklärt wird. Æ sehr wichtig Logitech Kameratreiber aus dem 40MB grossen Installationspaket extrahieren. 3 zusätzliche Webcams wurden bestellt (Komplette Hardwareliste im Anhang) Ziele auf nächstes Treffen - Stephan wird sich um ein neues GUI kümmern - Sascha kümmert sich um die Netzwerkkommunikation - Martin baut einen Kalibrierungswürfel und den Kalibrierungsalgorithmus Nächste Sitzung Mittwoch 27.10.2004, 13:00 Uhr, Projektplatz 2. Stock AI Muttenz, Dezember 2004 Seite 93 von 107 Diplomarbeit Motion Tracking Protokoll: Diplomarbeit Motion Tracking mit Webcams Datum Arbeitsplatz Projektmitglieder 28.10.04 2.Stock AI S. Graf, S. Hofer, M. Schindler Anwesende Marcus Hudritsch (Betreuender Dozent) Sascha Hofer Martin Schindler (Projektleiter) Stephan Graf (Protokollführer) Abwesende Ablauf Martin hat angefangen das Kalibrierungstool TurboCalib zu entwickeln. Dabei gab es Probleme mit der Auflösung der Webcam, da die Bilder Komprimierungsartefakte aufweisen und dies für das bestimmen der Eckpunkte nicht optimal ist. Stephan hat ein erstes Konzept für die Client Applikation aufgebaut und angefangen die Client Applikation zu entwickeln es wurden neue DirectShow Interfaces eingebunden um Eigenschaften in der Applikation zu steuern. Sascha hat sich mit der Serialisierbarkeit der Featurepoint Daten beschäftigt, sowie einer Kommunikation mehrerer Kameras über das Netzwerk, dabei gab es anfangs Probleme mit der CPU Auslastung welche inzwischen behoben werden konnte. Ziele auf nächstes Treffen - Martin wird versuchen mit einer evtl. Segmentierung oder Würfel Extraktion (Klick auf Fläche, Template Matching, Bilinear verdoppelte Auflösung) eine voll automatische Kalibrierung zu entwickeln, damit keine Eckpunkte mehr ausgewählt werden müssen. Anhand von einem Raster sollen erste Kalibrierungen mit TSAI getestet und verbessert werden. - Stephan schaut sich VirtualDub an und schaut ob man gewisse Capturing Features daraus in die Client Applikation übernehmen kann. Auch sollten verschiedene Kompressionsfilter für die Applikation zur Verfügung stehen. Evtl. Hardware Kompression testen ob mit USB 2.0 nicht mehr vorhanden. Herausfinden warum Artefakte bei Kanten entstehen. - Sascha wird sich weiter mit der Netzwerkkommunikation der Filter und der Serialisierbarkeit von Daten beschäftigen, sowie anfangen den IPAN-Tracker zu implementieren. Nächste Sitzung Mittwoch 03.11.2004, 11:00 Uhr, Projektplatz 2. Stock AI Muttenz, Dezember 2004 Seite 94 von 107 Diplomarbeit Motion Tracking Protokoll: Diplomarbeit Motion Tracking mit Webcams Datum Arbeitsplatz Projektmitglieder 3.11.04 2.Stock AI S. Graf, S. Hofer, M. Schindler Anwesende Marcus Hudritsch (Betreuender Dozent) Martin Schindler (Projektleiter, Protokollführer) Stephan Graf Abwesende Sascha Hofer (Zivilschutz) Ablauf Aufgrund des Treffens mit Herrn Krummen hat Martin eine Schwerpunktdetektion statt einer Eckpunktdetektion (zu ungenau) implementiert. Die Anzahl Kalibpunkte reduziert sich zwar auf 1/4, reicht aber trotzdem noch um eine genaue Kalibrierung zu erzielen. Der „Normalized Calibration Error“ ist bei ca. 3 bis 5 (Webcam). Ein Test mit einer DV-Kamera führte zu einer unbrauchbaren Kalibrierung. Der Grund ist noch unbekannt. Stephan hat UserControls erstellt für die Clientapplikation und eine Klassenstruktur Graphcontroller erstellt. Diverse Interfaces aus IDL’s nach C# portiert. Strukturaufbau der Clientapplikation überarbeitet. UserControl Capture erstellt und in Clientapplikation eingebaut. Ziele auf nächstes Treffen - Stephan wird die Klassenstruktur des Graphcontrollers in die Clientapplikation einbinden. - Martin wird herausfinden wieso es Unterschiede bei der Kalibrierung zwischen der DV-Kamera und der Webcam gibt. Applikation muss unabhängig von der Auflösung und des Kameramodells sein. Automatischen Schwellwert pro Würfelseite berechnen (Histogramm). Nächste Sitzung Mittwoch 10.11.2004, 11:00 Uhr, Projektplatz 2. Stock AI Muttenz, Dezember 2004 Seite 95 von 107 Diplomarbeit Motion Tracking Protokoll: Diplomarbeit Motion Tracking mit Webcams Datum Arbeitsplatz Projektmitglieder 10.11.04 2.Stock AI S. Graf, S. Hofer, M. Schindler Anwesende Marcus Hudritsch (Betreuender Dozent) Martin Schindler (Projektleiter) Stephan Graf Sascha Hofer (Protokollführer) Abwesende Ablauf Martin hat das Kalibrierungssystem fertiggestellt und demonstriert die exzellenten Resultate, welche dank korrekten intrinsischen Kameraparametern nun möglich sind. Mit dem System lässt sich nun auch die Kameraposition auf wenige cm genau bestimmen. Stephan hat die Einbindung des Graphcontrollers in den Client abgeschlossen. Es lassen sich nun auch Einzelbilder aus dem Videostrom herausgrabben. Sascha hat den 2D Tracker soweit in den Client eingebunden, das nun ein Realtime 2D Tracking ablaufen kann. Ziele auf nächstes Treffen - Martin wird die verschiedenen Fälle im 3D Tracking analysieren. Implementation eines Autoassoziationsystems zur Initialisierung des 3D Trackers. - Stephan wird den Client auch auf DV Kameras anwendbar machen. - Sascha wird die Netzwerkkommunikation soweit verbessern, dass eine realistischere Bandbreite benötigt wird. - Alle: Den Client fertig implementieren und mit der Serverseite beginnen. Nächste Sitzung Mittwoch 17.11.2004, 11:00 Uhr, Projektplatz 2. Stock AI Muttenz, Dezember 2004 Seite 96 von 107 Diplomarbeit Motion Tracking Protokoll: Diplomarbeit Motion Tracking mit Webcams Datum Arbeitsplatz Projektmitglieder 17.11.04 2.Stock AI S. Graf, S. Hofer, M. Schindler Anwesende Marcus Hudritsch (Betreuender Dozent) Martin Schindler (Projektleiter) Stephan Graf (Protokollführer) Sascha Hofer Abwesende Ablauf Sascha hat die Netzwerkübertragung fertig gestellt und die Datenrate wurde auf 20% reduziert. Er hat die Clientstruktur aufgeräumt. Ein Treffen mit Herrn Knobel von der Firma IFE wurde auf den 24.11.04 vereinbart. Martin hat die FP-BP Assoziation auf der Client Seite funktionstauglich implementiert, basierend auf dem LeastSquare verfahren. Hat den Fehler bei der Kalibrierung gefunden der wegen Binarisierung in der Histogrammanalyse aufgetreten ist. 3D Tracker wurde angepasst und umgeschrieben (unabhängig von den Kameras). Auch die Problemfälle FP-BP wurden analysiert und eine Tabelle nach Worst Case erstellt. Stephan hat die Einbindung FPDetectors in den Client abgeschlossen. Es lassen sich mittels herausgelesener Bilder die FeaturePoints ohne SWFilter detektieren. Nun ist eine Auswahl zwischen FPDetector und SWFilter ist möglich. Ziele auf nächstes Treffen - Martin wird die automatische FP-BP-Assoziation auf dem Server integrieren. - Stephan wird ein DV Video aufnehmen und in VirtualDub testen wie viele Frames aufgenommen worden sind und ob es beim abspielen eine konstante Framerate ergibt. Im Client sollte zusätzlich noch eine ViedoSource angegeben werden können. Mit dem Server GUI beginnen. - Sascha wird den Netzwerkcode verbessern um eine weitere Reduktion der Datenrate zu erreichen und wird versuchen den Tracker zu verbessern. Nächste Sitzung Mittwoch 24.11.2004, 11:00 Uhr, Projektplatz 2. Stock AI Muttenz, Dezember 2004 Seite 97 von 107 Diplomarbeit Motion Tracking Protokoll: Diplomarbeit Motion Tracking mit Webcams Datum Arbeitsplatz Projektmitglieder 24.11.04 2.Stock AI S. Graf, S. Hofer, M. Schindler Anwesende Marcus Hudritsch (Betreuender Dozent) Martin Schindler (Projektleiter) Stephan Graf (Protokollführer) Sascha Hofer Abwesende Ablauf Sascha hat die Netzwerkmodule überarbeitet. Die Serialisierung wurde verbessert und eine Reduktion der Datenrate von 50 auf 15kB/sec. wurde erreicht. Probleme des 2D-Trackers wurden analysiert und Lösungsansätze erarbeitet. Martin hat die LED's umgestellt auf Netzbetrieb, die Puppe wurde eingekleidet. FP-BP-Assozitation wurde auf dem Server implementiert. Stephan hat auf dem Server GUI eine dynamische Client Anzeige implementiert, welche nur die verbundenen Clients anzeigt. Der Client wurde erweitert damit auch Video Daten getrackt werden können Ziele auf nächstes Treffen - Martin wird den TUK-Controller in den Server implementieren. - Stephan wird die Anzeigeparameter der Clients im Server implementieren. Das 3D Fenster im Server implementieren. - Sascha wird die Lösungsansätze für den 2D-Tracker implementieren und testen, dadurch sollte die Qualität der vom Client gelieferten Daten optimiert werden. Nächste Sitzung Mittwoch 01.12.2004, 11:00 Uhr, Projektplatz 2. Stock AI Muttenz, Dezember 2004 Seite 98 von 107 Diplomarbeit Motion Tracking 15.3. Wochenrapporte Diplomarbeit Motion Tracking Wöchentlicher Raport Woche 1 Die ersten drei Tage waren wir beschäftigt mit Arbeitsplatz einrichten, Material bestellen, Projektarbeit aufarbeiten. Am Mittwoch fand das Kickoff-Meeting statt. Die Ziele wurden klar definiert, und die Arbeit wurde aufgeteilt. Ausserdem wurde auf allen PC’s Sourcesafe und Remotecontrol eingerichtet. Die Maschine mit der Sourcesafedatenbank wird täglich gespiegelt. Ein Laserdrucker wurde noch installiert. Am 21.10 haben wir ein erstes Client-Server Konzept aufgestellt. Schema hängt an der Pinwand. Material für Würfel bestellt (Kosten ca. 130.-) Probleme unter .NET beim Kompilieren von Strmbase.lib. 22.10 Analyse vom MT3Force. Problem mit Absturz des Programms herausgefunden. Erste Tests mit Clientapplikation und Filtergraphen. Filter mit Netzwerkcode erweitert und erfolgreich mit Server verbunden. Probleme mit CPU-Auslastung wegen Netzwerkkommunikation. Kalibrierungstool TurboCalib. Umwandlung in Binärbild. Zeichnen und Berechnen der Schnittpunkte des Schachbrettmusters. 25.10 Multifunktionaler Graph in .NET. Unabhängige Reihenfolge beim Anklicken der 4 Eckpunkte. Ursache der hohen CPU-Auslastung gefunden (Übermässig viele Datenübertragungen über 10’000 pro Sekunde) Problem durch Bufferung behoben. Treffen mit Andreas Krummen am 1.11.04 (Muster- und Schachbrettdetektion) 26.10 Konzept zur Verschmelzung Filtereigenschaftsfenster mit der Clientapplikation erfolgreich getestet. Würfel zusammengebaut. Brainstorming zum Clientklassenkonzept. Ideen zu Ablauf und den Datenflüssen im Trackermodul erarbeitet. Martin Schindler Sascha Hofer Stefan Graph Muttenz, Dezember 2004 Seite 99 von 107 Diplomarbeit Motion Tracking Diplomarbeit Motion Tracking Wöchentlicher Raport Woche 2 Sascha hat sich mit Remoting und Serialisierung beschäftigt und hat einen Belastungstest mit Featurepoints laufen lassen, der zu einer Auslastung 500KByte/sec führt. Weiterer Test mit eigener Serialisierung durchgeführt -> keine Verbesserung in der Performanz. Man muss sich also Gedanken machen um eine LowLevel Implementierung oder aber eine Verbesserung des Datenmodels (Nicht jeder Featurepoint einzeln senden sondern ein ganzes Frame. Tests hierzu stehen noch aus). Implementation Filterserver und Parser für Filterserver. Anpassung der IPAN-Datenstruktur und IPAN-Tracker für die neuen Bedürfnisse. Nächstes Ziel: 2D-Tracker lauffähig im Client. Stephan hat UserControls erstellt für die Clientapplikation. Klassenstruktur Graphcontroller erstellt. Diverse Interfaces aus IDL’s nach C# portiert. Strukturaufbau der Clientapplikation überarbeitet. UserControl Capture erstellt und in Clientapplikation eingebaut. Nächstes Ziel: Klassenstruktur Graphcontroller in Clientapplikation einbinden. Martin hat eine Berechnung des Schwerpunkts eines Vierecks implementiert. Eine Detektion der Eckpunkte ist mit dem Webcambild zu ungenau und kommt deshalb nicht in Frage. Darum Schwerpunktdetektion. Nachteil: 36 statt 144 Punkte pro Seite. Erste Tests zeigen, dass 36 Punkte ausreichen. Nächstes Ziel: Berechnung der Kameraposition mit Hilfe der TSAI-Parameter (evtl. Matrixklasse implementieren). Zuverlässigkeit verbessern. Martin Schindler Sascha Hofer Stephan Graf Muttenz, Dezember 2004 Seite 100 von 107 Diplomarbeit Motion Tracking Diplomarbeit Motion Tracking Wöchentlicher Raport Woche 3 Martin hat die Berechnung der Kameraposition sowie einen automatischen Schwellwert implementiert. Tests mit einer anderen DV-Kamera zeigten, dass die intrinsischen Parameter der beiden Kameras unterschiedlich sind und diese einen wesentlichen Einfluss auf die Kalibrierung haben. Die Darstellung ist jetzt unabhängig von der Auflösung des Kamerabildes. Implementation von TurboCalib in Clientapplikation. Nächste Ziele: Automatische FP-BP-Assoziation Sascha hat den Tracker lauffähig implementiert. Ca. 60% Auslastung auf dem 2GHz Rechner bei 30fps. Nächsten Ziele: Interface fertig machen damit Tracker im Client konfigurierbar ist. Netzwerkservermodul im Client implementieren. Stephan hat die Klassenstruktur des Graphcontrollers in die Clientapplikation eingebunden. Grabber so implementiert, dass es möglich ist smooth ein Video abzuspielen bei welchem jedes Bild einzeln als Bitmap ausgelesen und angezeigt wird mit 30fps. Nächsten Ziele: FP-Detektor nach C# umschreiben, über die einzelnen Bitmap laufen lassen und Performanztest machen. Martin Schindler Sascha Hofer Stephan Graf Muttenz, Dezember 2004 Seite 101 von 107 Diplomarbeit Motion Tracking Diplomarbeit Motion Tracking Wöchentlicher Raport Woche 4 Martin: Automatische FP-BP-Assoziation fertig implementiert. Fehler in der Kalibrierung korrigiert. Dokumentation zur Kalibrierung erstellt. TUK-Algorithmus analysiert und angepasst (unabhängig von der Anzahl Kameras) Verschiedene Problemfälle des Trackings aufgezeichnet. Nächste Ziele: Integrieren der automatischen FP-BP-Assoziation in den Server. Sascha Netzwerk Clientseitig und Serverseitig fertig implementiert. Datenrate auf 20% reduziert. Weitere Reduktion möglich. Clientstruktur aufgeräumt. Treffen mit Herrn Knobel von der Firma IFE vereinbart. Basisstruktur des Servers erstellt. Nächste Ziele: Tracker verbessern Stephan SW-Filter nach C# portiert und zum laufen gebracht. Auswahl möglich zwischen SWFilter und FP-Detector. Dokumentation angefangen über Directshow. Nächste Ziele: Server-GUI Martin Schindler Sascha Hofer Stephan Graf Muttenz, Dezember 2004 Seite 102 von 107 Diplomarbeit Motion Tracking Diplomarbeit Motion Tracking Wöchentlicher Raport Woche 5 Martin Puppe eingekleidet Netzteil für LED’s FP-BP-Assoziation in den Server integriert. Dokumentation erweitert. Nächste Ziele: TUK-Controller und 3D-Fenster Sascha Netzwerkmodule überarbeitet. Serialisierung verbessert und dadurch eine Reduktion der Datenrate von 50 auf 15kB/sec. Als Nebeneffekt wurde auch erfreulicherweise die Auslastung des Servers auf wenige Prozente reduziert. Noch bestehende Probleme des 2D-Trackers analysiert und Lösungsansätze erarbeitet. Nächste Ziele: Lösungsansätze implementieren und testen. Absicht: Qualität der vom Client gelieferten Daten optimieren Æ Fehler auf ein Minimum reduzieren. Stephan Server Gui, Clients werden dynamisch angezeigt wenn ein neuer Client startet. Bei jedem Client wird die aktuelle Framerate angezeigt. Im Client wurde die Funktionalität so erweitert, dass auch mit Videodateien getrackt werden kann. Nächste Ziele: Anzeigeparameter der Clients im Server implementieren. Martin Schindler Sascha Hofer Stephan Graf Muttenz, Dezember 2004 Seite 103 von 107 Diplomarbeit Motion Tracking Diplomarbeit Motion Tracking Wöchentlicher Raport Woche 6 Martin TUK-Controller implementiert Nächste Ziele: Doku Sascha Netzwerkcode und Client erweitert (Syncsignal). Verschiedene Bugs behoben. Nächste Ziele: Doku, Synchronisation Stephan Anzeigeparameter der Clients im Server implementiert. 3D-Fenster integriert. Auflösung im Client auf 640x480 Standard. Nächste Ziele: Doku Martin Schindler Sascha Hofer Stephan Graf Muttenz, Dezember 2004 Seite 104 von 107 Diplomarbeit Motion Tracking 15.4. Abbildungen Abb. 2-1 Testraum Motion Tracking...................................................................................10 Abb. 2-2 Anordnung der LEDs...........................................................................................12 Abb. 3-1 Aufbau einer DirectShow Applikation ..................................................................15 Abb. 3-2 Kommunikation über COM Interfaces .................................................................16 Abb. 3-3 Typischer DirectShow-Filtergraph .......................................................................17 Abb. 3-4 Pin-Eigenschaftsfenster Logitechwebcam...........................................................25 Abb. 3-5 Eigenschaftsfenster der Logitech Webcam .........................................................26 Abb. 4-1 Client-Server Architektur .....................................................................................27 Abb. 4-2 Datenfluss des Clients.........................................................................................28 Abb. 4-3 Aufbau des DirectShow Filtergraph.....................................................................30 Abb. 4-4 Klassendiagramm Client .....................................................................................31 Abb. 4-5 Datenfluss der Serverapplikation.........................................................................32 Abb. 4-6 Klassendiagramm Server ....................................................................................33 Abb. 6-1 Darstellung eines Featurepoint Framearray Containers......................................40 Abb. 8-1 Aus mehreren 2D-Daten werden 3D-Daten berechnet........................................53 Abb. 8-2 Projektion einer Geraden auf einen Punkt...........................................................54 Abb. 8-3 Eindeutige Bestimmung des 3D-Punktes mit 2 Kameras ....................................55 Abb. 8-4 Abstand zweier windschiefen Geraden ...............................................................56 Abb. 8-5 Featurepoints vor der Zuordnung ........................................................................57 Abb. 8-6 Zugeordnete Featurepoints .................................................................................57 Abb. 8-7 Epipolarebene mit den zwei Epipolarlinien..........................................................59 Abb. 10-1 Originalkamerabild des Würfels.........................................................................62 Abb. 10-2 Gefundene Schwerpunkte einer Würfelseite .....................................................62 Abb. 10-3 Bezeichnungen Kamera- Bild- und Weltkoordinatensystem..............................64 Abb. 10-4 Distanz Kamera-Würfel entspricht Länge des Würfels ......................................64 Abb. 10-5 Histogramm einer Würfelseite vor und nach der Glättung.................................66 Abb. 10-6 Schematischer Ablauf zum Finden des Schwellwerts .......................................67 Abb. 11-1 Idee der automatischen Assoziation..................................................................71 Abb. 12-1 Massangaben des Kalibrierungswürfels............................................................75 Abb. 12-2 Kalibrierungswürfel............................................................................................75 Muttenz, Dezember 2004 Seite 105 von 107 Diplomarbeit Motion Tracking 15.5. Ehrlichkeitserklärung Hiermit bestätigen die unterzeichnenden Autoren dieser Diplomarbeit, dass alle nicht klar gekennzeichneten Stellen von Ihnen selbst erarbeitet und verfasst wurden. Ort und Datum Unterschrift Muttenz, 23.12.2004 Stephan Graf Muttenz, Dezember 2004 Sascha Hofer Martin Schindler Seite 106 von 107 Diplomarbeit Motion Tracking 15.6. Diplomarbeits CD-ROM Muttenz, Dezember 2004 Seite 107 von 107