STUDENTEN Stephan Graf, Sascha Hofer, Martin Schindler. BETREUENDER DOZENT Marcus Hudritsch. EXPERTE Dr. Peter Fornaro. AUFTRAGGEBER Marcus Hudritsch

Größe: px
Ab Seite anzeigen:

Download "STUDENTEN Stephan Graf, Sascha Hofer, Martin Schindler. BETREUENDER DOZENT Marcus Hudritsch. EXPERTE Dr. Peter Fornaro. AUFTRAGGEBER Marcus Hudritsch"

Transkript

1 STUDENTEN Stephan Graf, Sascha Hofer, Martin Schindler BETREUENDER DOZENT Marcus Hudritsch EXPERTE Dr. Peter Fornaro AUFTRAGGEBER Marcus Hudritsch DA09_0405 Muttenz, Dezember 2004

2 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 114

3 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 114

4 Inhaltsverzeichnis 1. Einleitung Umfang der Diplomarbeit Hauptziele Erweiterte Ziele Erreichte Ziele Erarbeitete Grundlagen Grundlagen Motion Tracking Auswahl Kameras Kalibrierung Featurepunkt Extraktion Evaluation der kontrastreichen Punkte LED von Umgebung unterscheiden LED von anderem LED unterscheiden LED erfassen und Position berechnen LED Identifikation mittels Tracking und Farbe Synchronisation der Kameras DirectShow COM - The Component Object Model DirectShow Filter DirectShow Interfaces ICaptureGraphBuilder IGraphBuilder IBaseFilter IMediaFilter IMediaControl IMediaEventEx IMediaSeeking IMediaPosition IMediaEvent DirectShow Filter Graph Manager Erstellen eines Filter Graphen Capturing mit DirectShow Steuerung der Eigenschaften in den Code implementieren Softwarekonzept Der Client Anforderungen Grundkonzipierung des Clients...28 Muttenz, Dezember 2004 Seite 4 von 114

5 Grobstruktur des Clients GUI DirectShow Filter-Server D-Tracker (IPAN) Client Netzwerkmodul Kalibrierung TSAI-Converter DirectShow Graph MTServer GUI Abkapselung innerhalb der Logik Datenfluss Client Server (Threadsynchronisation) Datensynchronisation D-Tracking (Datenfluss) D-Tracking (interne Struktur) Interprozesskommunikation (IPC) Einleitung Anforderungen Protokoll Verbindungsrelevante Informationseinheiten Datentransport bezogene Informationseinheiten Verbindungsaufbau und Abbau Heartbeat Datenstruktur FPFrame/Color FPFrameArray/Container D-Tracker Einleitung Das Featurepoint Tracking Problem Definition Featurepoint Tracking Problem Anforderungen Evaluation Tracking Algorithmus Beschreibung Initialisierung Fortführendes Tracking Postprocessing Kostenfunktion Typische Trackerparameter...60 Muttenz, Dezember 2004 Seite 5 von 114

6 8. 3D-Tracker Synchronisation Berechnung der 3D-Position Schnitt zweier windschiefen Geraden Töpfe und Kugeln Bone-Model (Knochenmodell) Epipolarlinie Transformfilter Kalibrierung Featurepunkt-Bodypunkt-Assoziation Hardware Webcam Kalibrierungswürfel LED Exoskelett Schema Stromversorgung LED-Exoskelett Bestückungsplan Stromversorgung LED Exoskelett Stückliste Stromversorgung LED Exoskelett Technische Daten LEDs Ausblick Quellenverzeichnis Literatur Internet Anhang Testreihen Protokolle Wochenrapporte Abbildungen Ehrlichkeitserklärung Diplomarbeits CD-ROM Muttenz, Dezember 2004 Seite 6 von 114

7 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 114

8 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 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 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 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 114

9 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 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 Auswahl Kameras Folgende Webcams standen zu Beginn zur Auswahl: Logitech QuickCam Logitech QuickCam Philips ToUcam Sony Ezee Kit Pro USB (Dark Fo- Pro 4000 Pro PCVC 730K CMR PC-4 cus 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 114

10 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 114

11 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 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 114

12 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 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 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 114

13 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 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 114

14 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 114

15 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. Applikation Commands Events DirectShow File System Filter Graph Manager Legacy VCM/ACM Codecs Internet Source Filter Tranform Filter Renderer Filter File System Ring 3 Ring 0 Kernel Streaming Architecture DirectSound DirectDraw WDM Capture Devices Legacy VFW Capture Devices Hardware MPEG2 Decoders Sound Card Video Graphics Card Abb. 3-1 Aufbau einer DirectShow Applikation Muttenz, Dezember 2004 Seite 15 von 114

16 3.1. COM - The Component Object Model Dies ist ein Mechanismus zur Identifizierung und Kommunikation zwischen Applikations- Komponenten 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 Tranform Filter Renderer Filter Media Source Media Destination Abb. 3-2 Kommunikation über COM Interfaces Muttenz, Dezember 2004 Seite 16 von 114

17 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 114

18 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 DirectShow Interfaces 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 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 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 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 114

19 IMediaControl Steuerung eines Videostreams mittels Funktionen wie abspielen, anhalten, pause, usw IMediaEventEx Gibt an wenn ein Mediastream zu ende ist IMediaSeeking Sucht oder ruft die angegebene Position des Mediastreams auf IMediaPosition Ähnlich zu IMediaSeeking auch hier kann die Position des Mediastreams angegeben werden 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. 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 114

20 ... 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 heruntergeladen werden \DirectShow\ \DShowNET\ // the DirectShow interface definitions : \DsBugWO.cs // workaround for a bug \DsControl.cs // ported from control.odl \DsCore.cs // ported from axcore.idl \DsDevice.cs // device enumerator, helper functions \DsDVD.cs // DVD interfaces from dvdif.idl \DsExtend.cs // ported from axextend.idl \DsUtils.cs // utility classes, SDK Common sources \DsUuids.cs // UUIDs and CLSIDs from uuids.h \QEdit.cs // grabber interfaces from qedit.idl Muttenz, Dezember 2004 Seite 20 von 114

21 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 Thread- Benutzungsstatus ä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 114

22 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 114

23 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 114

24 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 Source Filter Smart Tee 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 Logitech Quickcam Pro 4000 Source Filter Smart Tee Preview SampleGrabber Video Renderer Muttenz, Dezember 2004 Seite 24 von 114

25 3.7. Steuerung der Eigenschaften in den Code implementieren Diplomarbeit Motion Tracking 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= ; videoinfoheader.avgtimeperframe = 30; Marshal.StructureToPtr(videoInfoHeader, media.formatptr, false); streamconfig.setformat(media); return true; Muttenz, Dezember 2004 Seite 25 von 114

26 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 = new VideoProcAmpFlags(); int pvalue; videoproc.get(videoprocampproperty.brightness, out pvalue, out flag); pvalue = 34; videoproc.set(videoprocampproperty.brightness, pvalue, flag); return true; Muttenz, Dezember 2004 Seite 26 von 114

27 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. Client Server Filter-Server 2D-Tracker (IPAN) Client Netzwerkmodul Server Netzwerkmodul 3D-Tracker (TUK) DirectShow Graph Snapshot Kalibrierung Kalib Parameter TSAI-Converter Auto Assoziation OpenGL SWFilter (Transformfilter) Null Renderer Logitech Quickcam Pro 4000 Source Filter Infinite Pin Tee Filter SampleGrabber Null Renderer Feature des Graphen: - Video Einstellungen - Video Vorschau - Grabbing - Aufnahme - Motiontracking Video Renderer AVI Mux File Writer 2D-Koordinaten 3D-Koordinaten Abb. 4-1 Client-Server Architektur Muttenz, Dezember 2004 Seite 27 von 114

28 4.1. Der Client Anforderungen Die Anforderungen an den Client waren recht breit gefächert. Grundsätzlich sollte er in der Lage sein, alle auf eine einzelne Kamera bezogenen Abläufe zu integrieren, andererseits wurde gefordert, dass er auch Videos aufnehmen und, zu einem späteren Zeitpunkt, vom Server kontrolliert, wiederzugeben. Ebenfalls wurde erwartet, dass der Client nicht alleine auf Logitech Quickcams, sondern auch mit anderen Kameras kompatibel ist zum Beispiel auch DVCams. Zusammengefasst galt es also einen Client zu entwickeln, der folgende Punkte integriert: Kameraansteuerung (Webcams und DVCams) Kamerakalibrierung 2D Tracking Videoaufnahme Videowiedergabe RemoteControlling durch Server Grundkonzipierung des Clients Bei der Konzipierung der Client-Applikation wurde darauf geachtet, dass der Client modular aufgebaut ist, um eine parallele Arbeitsweise in der Gruppe zu ermöglichen. Diese Modularität drückte sich in zwei Arten aus: Die Trennung der Teilkomponenten in einzelne Klassen, die zumindest zu Beginn recht unabhängig voneinander entwickelt werden konnten und erst in der Endphase verbunden werden mussten. Die Aufspaltung des GUIs und des Logiklayers. So konnte unabhängig von der Logik an einer intuitiven Oberfläche gearbeitet werden, auch während die Module noch in Entwicklung waren Diese Trennung ermöglicht jederzeit leichtes Anpassen des GUIs, ohne Rücksicht auf die darunterliegende Logik nehmen zu müssen. Muttenz, Dezember 2004 Seite 28 von 114

29 Diese beiden Modularisierungen ermöglichten es einem Team aus 3 Personen, innerhalb von 5 Wochen den Client zu definieren und komplett zu implementieren, sowohl mit Rücksicht auf die Inneren Abläufe, als auch mit Rücksicht auf eine intuitive und logisch in sich geschlossene Bedienung. Main Logik GUI 1 DeviceSelector clsclientcontroller frmclient 1 1 usctracker uscvideo usccapture usccalibration clscalibration clsvideo clscapture clstracker clsnetworkclient 1 1 Filters IPictureGrabber FilterGraphController clsfilterserver IFPsource clsipantracker IFPsink 1 1 SampleGrabber VideoGrabber ISWFilter clsfpnetreceiver FPDetector clsfpnetsink Das obige UML Diagramm zeigt eine Darstellung der Struktur des Clients und verdeutlicht die Aufspaltung zwischen GUI und Logik. In nachfolgenden Kapiteln wird im Detail auf diese Strukturen eingegangen. Muttenz, Dezember 2004 Seite 29 von 114

30 Grobstruktur des Clients In der Logik ebene wiederum existiert eine Unterteilung in Haupt und Submodule. Alle Logikteile, die eine direkte Interaktion mit dem Benutzer anbieten müssen sind Hauptmodule. Diejenigen Bereiche, die unabhängig oder nur indirekt vom Benutzer beeinflusst werden können, sind vor direktem Zugriff abgekapselt und befinden sich im Bereich der Submodule. Die Submodule direkt vom Controller oder von einem der Hauptmodule kontrolliert, welche anhand von Userinteraktionen und Einstellungen Entscheidungen über Ihre Funktionsweise treffen. Die Mainklasse, bzw. die Mainfunktion erzeugt beim Start des Clients eine ClientController Instanz, welche die zentrale Controllingfunktion über die Clientinternen Abläufe übernimmt. Durch ein Konfigurationsfenster zur Auswahl der wichtigsten Laufzeitoptionen des Clients (DeviceSelector) wird der Controller in den passenden Modus versetzt. Danach erzeugt die Mainfunktion das restliche GUI (frmclient), welches alle relevanten Informatio- Muttenz, Dezember 2004 Seite 30 von 114

31 nen aus dem ClientController bezieht und die Zuordnungen zwischen den UserControls und den Hauptmodulen vornimmt GUI Das GUI widerspiegelt die einzelnen Subkomponenten aus denen der Client besteht. Jede Komponente besitzt ein eigenes Usercontrol, welches in ein Register eines TabControls eingebetet ist. Diese Aufspaltung in UserControls ermöglichte wie die Trennung des GUIs auch, eine parallele Entwicklungstätigkeit an derselben Applikation. Jedes Usercontrol verfügt prinzipiell über direkten Zugriff auf sein zugehöriges Hauptmodul, welches Informationen und Einstellmöglichkeiten anbietet, die die Funktionalität des Clients beeinflussen. Muttenz, Dezember 2004 Seite 31 von 114

32 DirectShow 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. 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 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 32 von 114

33 D-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 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 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 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 33 von 114

34 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. Logitech Quickcam Pro 4000 Source Filter Infinite Pin Tee Filter SWFilter (Transformfilter) SampleGrabber Null Renderer Null Renderer 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 34 von 114

35 4.2. MTServer Ebenso wie der Client wurde der Server so konstruiert, dass die Verarbeitungslogik vollständig von der GUI abgetrennt wurde. Dies ermöglichte die Entwicklung des GUIs unabhängig von den darunterliegenden Komponenten. Die Hauptschnittstellklasse zwischen GUI und Logik bietet hierbei die clsservercontroller Klasse, welche alle Kontrollrelevanten Zugriffe zwischen der GUI und der Logik regelt. Die Mainklasse dient lediglich beim Start der Applikation dazu, den ServerController und das GUI zu instanzieren und das GUI mit der Logik zu verbinden. Alle anderen wichtigen Prozesse laufen danach im Controller ab und werden über die GUI angesteuert. Mai Logik GUI 1 clsservercontroller frmserve 1 frm3dvie 1 uscclientcollection uscassociation 1* clsbroadcastserver clscamera clsfpframearraycontainer clstukmai clsbpdat cls3dvie uscclientstatus 1 1 2D Daten 1 3D Daten clsnetclien clsclien ICamer IPaintabl clstukcontroller 1 clscamer clstukelement 1 FPDat tsai_converter 2D Datenpuffer GUI Das GUI wurde wie beim Client mit einer Registerstruktur implementiert, das die einzelnen Subkomponenten untereinander abkapselt. Die Idee dahinter ist, dass trotz der Konzeptarbeit zu einzelnen Komponenten, die parallel zur Implementation stattfand, eine ge- Muttenz, Dezember 2004 Seite 35 von 114

36 ordnete Metastruktur bestand, welche unabhängiges Arbeiten in der Gruppe ermöglichte Abkapselung innerhalb der Logik Der Logiklayer setzt sich aus 2 Subebenen zusammen der direkt ansteuerbaren Logik und der Sublogik, die nicht direkt vom Benutzer beeinflusst wird und daher von der GUI her nicht zugänglich ist. Insbesonders die Konfigurationseinstellungen werden direkt an den Submodulen vorgenommen. In unserer Grafik werden diese direkt ansteuerbaren Klassen durch die gelbe Farbe veranschaulicht. Die GUI Klassen sind in der Lage, diese Logik direkt anzusteuern. Das frm3dview greift zum Beispiel auf cls3dview zu, um eine 3D Darstellung zu erzeugen. uscassociation wiederum ist für die Initialisierung des Trackers und für das Laden der Schemadaten zuständig und besitzt daher Zugriff auf clsbpdata(3d Daten) und clstuk- Main (3D Tracker). Die uscclientcollection wiederum kümmert sich um die Darstellung von Clientdaten und verfügt daher über Zugriff auf clscameras, welche die Clients verwaltet. Muttenz, Dezember 2004 Seite 36 von 114

37 Muttenz, Dezember 2004 Seite 37 von 114

38 Datenfluss Client Server (Threadsynchronisation) Nachdem der Server gestartet wird, können sich Clients verbinden. Für jeden verbundenen Client wird eine Instanz der NetClient Klasse erzeugt. Dieses Modul bildet nun sozusagen den Brückenkopf des Clients auf der Serverseite. Damit eine asynchrone Kommunikation mit allen Clients ermöglicht wird, verfügt jedes dieser Client Module über einen eigenen Empfängerthread, der alle eintreffenden Datenpackete per Events weiterleitet. Damit nun typische Multithreadingprobleme auf Serverseite vermieden werden, werden alle diese Events auf einen einzigen Arbeiterthread synchronisiert, welcher innerhalb der Synchronisationsklassen lebt. Genauer gesagt verfügt der Servercontroller als Hauptklasse über diesen ArbeiterThread und stellt ihn allen darunterliegenden Synchronisationsklassen zur Verfügung. Bereits an diesem Punkt werden also alle Datenpackete auf einen einzigen Thread synchronisiert. Dies schliesst aber die zeitliche Synchronisation der 2D Daten der einzelnen Kameras untereinander noch nicht ein! Daher werden die Daten der Clients zuerst in den Muttenz, Dezember 2004 Seite 38 von 114

39 Datenpufferklassen zwischengelagert, wo sie zu einem passenden Zeitpunkt weiterverarbeitet werden Datensynchronisation Für die Datensynchronisation läuft im ServerController ein TimerObjekt, dass in regelmässigen Abständen den Controller dazu veranlasst (typisch: 5 bis 10ms), zu prüfen, ob genügend Frames von allen Clients eingetroffen sind, um eine Synchronisation zu veranlassen. Das ist jeweils dann der Fall, wenn alle Clients mindestens ein Frame im Puffer gelagert haben. Um die zwischengepufferten Daten zu synchronisieren, wurden sie bereits auf Clientseite mit einem Synchronisationssignal versehen. Anhand dieses Signals lässt sich nun bestimmen, ob die Daten genügend zeitsynchron sind. Ist dies nicht der Fall, veranlasst der ServerController gegebenenfalls das auslassen von überzähligen Frames. Die Ausfallrate in unserem System liegt typischerweise bei 2-3 Frames pro Sekunde bei 5 ange- Muttenz, Dezember 2004 Seite 39 von 114

40 schlossenen Kameras welche mit 30 Bilder pro Sekunde arbeiteten. Das entspricht einem relativen Ausfall von 1-2% aller Daten. Sind nun von allen Kameras Frames vorhanden, so bildet der ServerController daraus einen FrameArray eine Datenstruktur welche alle zeitgleichen 2D-Informationen aller Kameras beinhaltet. Dies ist die Grunddateneinheit, auf die der 3D-Tracker schliesslich operieren kann. Diese Dateneinheit wird dann in einer Containerklasse abgelegt, die alle diese Daten speichern kann, damit sie zum Beispiel zu einem späteren Zeitpunkt unabhängig von Kameras geladen und für Tracker Tests verwendet werden kann. Das Laden und abspeichern ist auf Logikebene bereits möglich, wurde aber noch nicht in das GUI eingebaut D-Tracking (Datenfluss) Der Tracker operiert iterativ auf je einem FrameArray, das aus zeitgleichen Frames aller Kameras besteht. Immer wenn der ServerController mittels Synchronisation ein solches FrameArray gebildet hat, gibt er dem Tracker ein Signal, das diesen veranlasst, das be- Muttenz, Dezember 2004 Seite 40 von 114

41 sagte Array zu analysieren und daraus durch Assoziation der 2D Daten unter Verwendung der Trajektorinformation welche die Clients berechnet haben, 3D Daten zu generieren. Diese werden dann in der BPData Klasse als Endlager Container abgelegt. In der BPData Klasse liegen also letztendlich die Resultate des gesamten Trackingprozesses. Die Daten können gespeichert und später mit einer Viewer Applikation geladen, angeschaut und bearbeitet werden. Um auch ein Echtzeitfeedback des Trackings zu ermöglichen, wurde die Viewer Applikation auch direkt in den Server integriert (3DView Klasse). Sie stellt dann ebenfalls vom ServerController angesteuert, die neusten Daten direkt in einem OpenGL Fenster dar D-Tracking (interne Struktur) Der 3D Tracker ist ein Konstrukt aus 3 verschiedenen Klassen, wobei jedem Element eine eigene Trackingspezialisierung zukommt. Die TUKMain Klasse ist für die Aufspaltung der eintreffenden Daten in ihre Farbelemente zuständig. Das heisst sie weiss, dass rote Featurepoints nur mit roten zusammen und grüne nur mit grünen zusammentreffen können. Die Datenstrukturen, welche dafür entwickelt wurden, unterstützen eine solche Aufspaltung optimal. Für jede unterscheidbare Farbe instanziert die TUKMain Klasse eine eigene TUKController Klasse, die sie dann mit Daten Ihres Farbtyps füttert. Die TUKController Klasse selber operiert dann nur noch auf farblosen bzw. gleichfarbigen Daten. Muttenz, Dezember 2004 Seite 41 von 114

42 Die TUKController Klasse hat bei der Initialisierung für jeden 3D Modellpunkt (Bodypoint) der laut Schema erwartet wird, eine TUKElement Klasse angelegt, die sich um die 3D Berechnung anhand der Ihr verfütterten 2D Punkte kümmert. Welche 2D Punkte (maximal einer pro Kamera und Frame) der TUKElement Klasse jeweils verfüttert werden, entscheidet der TUKController in erster Linie anhand der Trajektorinformation, die der 2D Tracking Prozess des Clients generiert hat. Sind aus irgendwelchen Gründen einige Punkte so noch nicht zugeordnet, wird anhand verschiedener Kriterien entschieden, ob dennoch eine Zuweisung möglich wäre. (z.b. Epipolar Constraint) Die TUKElement Klasse liefert aufgrund einer ersten 3D Berechnung Qualitätsinformationen darüber, mit welcher Wahrscheinlichkeit das Tracking korrekt ist. Dies geschieht zum Beispiel anhand der Berechnung des Abstandes der Sichtgeraden verschiedener Kameras untereinander, welcher möglichst klein sein muss (Epipolar Constraint). Anhand solcher Qualitätsinformationen überprüft der Controller die Zuordnung der 2D Datenpunkte und nimmt allenfalls nochmals Korrekturen vor an dieser Stelle werden typischerweise auch fehlerhafte Trajektorien des 2D Trackers erkannt und korrigiert. Ist eine endgültige Zuordnung erreicht, werden die 3D Daten endgültig berechnet und abgelegt. Muttenz, Dezember 2004 Seite 42 von 114

43 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 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 43 von 114

44 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 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 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 44 von 114

45 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 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 NewConnection NewConnection Server Anfrage- Prüfung Ein Client initiiert eine Verbindung, in dem er ein New- Connection Packet mit seinem gewünschten Identifikationsnamen sendet. Der Server prüft diese Information und entscheidet letztendlich, ob die Verbin- Verbindung etabliert dung gültig ist. In diesem Fall sendet er als Bestätigung das NewConnection Packet an den Client zurück. Ge- CloseConnection gebenenfalls wurde darin die ConnectionID angepasst, um Kollisionen mit gleichnamigen Clients zu vermeiden. Client Server Clients müssen dies berücksichtigen. NewConnection Error Anfrage- Prüfung 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 45 von 114

46 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 46 von 114

47 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. Muttenz, Dezember 2004 Seite 47 von 114

48 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 B Muttenz, Dezember 2004 Seite 48 von 114

49 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. Abb. 6-1 Darstellung eines Featurepoint Framearray Containers Muttenz, Dezember 2004 Seite 49 von 114

50 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: Welche Punkte von Frame f entsprechen welchen Punkten von Frame f+1? Abbildung 7-2: Farben helfen, die Anzahl potentieller Zuweisungskandidaten zu reduzieren. Abbildung 7-3: Das Grundproblem bleibt aber erhalten. Muttenz, Dezember 2004 Seite 50 von 114

51 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: Eine Überkreuzung wie sie in der Reali- Abbildung 7-5: 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 auf- Muttenz, Dezember 2004 Seite 51 von 114

52 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 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 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 52 von 114

53 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 53 von 114

54 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 Tracking Algorithmus 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 x y y Frame Frame f x f x+1 f x-1 f x f x+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 54 von 114

55 Initialisierung f 1 f 2 f 3 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 f 2 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 f 2 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 55 von 114

56 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. f x-1 f x f x+1 Abbildung 7-9: Fortführendes Tracking (f x, 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 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 56 von 114

57 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 Kostenfunktion f x-1, f x, f x+1 a r a r br b r 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 57 von 114

58 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 f ( ϕ ) = r r = cos( ϕ ) 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. r r 1 1 a b 1 1 f ( ϕ ) + r r = + cos( ϕ) 2 2 a * b 2 2 f (ϕ) f ( ϕ ) = + 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: F r r = a * b Muttenz, Dezember 2004 Seite 58 von 114

59 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 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 entspricht dem Faktor 4 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 ω, ω ) versehen, die zusammenaddiert 1 ergeben. ( a b Daraus erfolgt die komplette Kostenfunktion, wie sie im Tracker zum tragen kommt: r r a b δ = ω + a 1 r r ωb 1 a * b r r 2 * a * b r r 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 59 von 114

60 Aus diesem Grund werden die Gewichtungsfaktoren ω, ω ) dynamisch abhängig vom ( a b Betrag der Geschwindigkeit der Verschiebungsvektoren berechnet. Ab unterschreiten einer bestimmten Normgeschwindigkeit vnrm 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 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 vmin wird. erreicht Minimalgeschwindigkeit v min : 2 Unterhalb dieser Geschwindigkeit wird der Gewichtungskoeffizienten für Richtungs- Muttenz, Dezember 2004 Seite 60 von 114

61 ä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 61 von 114

62 8. 3D-Tracker Nachdem die 2D-Daten von jedem Client beim Server angekommen sind, wird der 3D- Tracker 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 62 von 114

63 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 63 von 114

64 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 64 von 114

65 Deshalb braucht es hier eine Berechnung des kleinsten Abstandes zweier windschiefen Geraden. Der Mittelpunkt M des kürzesten Abstandes der Geraden G 1 und G 2 bildet das Zentrum des Punktes im Raum. z G 2 M d G 1 x y Abb. 8-4 Abstand zweier windschiefen Geraden Die Anzahl der möglichen Schnittpunkte A berechnet sich so: n A = ( n 1) 2, wobei n die 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 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 65 von 114

66 1 2 3 Kamera Kamera Kamera Kamera 4 Kamera 5 Fuss rechts Knie links Ellbogen links Schulter rechts Abb. 8-5 Featurepoints vor der Zuordnung Fuss rechts Knie links Ellbogen links Schulter rechts Abb. 8-6 Zugeordnete Featurepoints Muttenz, Dezember 2004 Seite 66 von 114

67 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 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 67 von 114

68 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 O 1, O 2 und P. Wobei O 1 und O 2 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 Kamerabild 2 Epipolarlinien P' P'' P''' O 1 O 2 Abb. 8-7 Epipolarebene mit den zwei Epipolarlinien Muttenz, Dezember 2004 Seite 68 von 114

69 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 69 von 114

70 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 70 von 114

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

Mehr

FTP-Leitfaden RZ. Benutzerleitfaden

FTP-Leitfaden RZ. Benutzerleitfaden FTP-Leitfaden RZ Benutzerleitfaden Version 1.4 Stand 08.03.2012 Inhaltsverzeichnis 1 Einleitung... 3 1.1 Zeitaufwand... 3 2 Beschaffung der Software... 3 3 Installation... 3 4 Auswahl des Verbindungstyps...

Mehr

Dokumentation IBIS Monitor

Dokumentation IBIS Monitor Dokumentation IBIS Monitor Seite 1 von 16 11.01.06 Inhaltsverzeichnis 1. Allgemein 2. Installation und Programm starten 3. Programmkonfiguration 4. Aufzeichnung 4.1 Aufzeichnung mitschneiden 4.1.1 Inhalt

Mehr

Whitepaper. Produkt: combit address manager / combit Relationship Manager. Datenabgleich zwischen Notebook und Desktop-PC / Server

Whitepaper. Produkt: combit address manager / combit Relationship Manager. Datenabgleich zwischen Notebook und Desktop-PC / Server combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit address manager / combit Relationship Manager Datenabgleich zwischen Notebook und Desktop-PC / Server Datenabgleich zwischen Notebook

Mehr

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen

Mehr

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos in Verbindung mit der Webshopanbindung wurde speziell auf die Shop-Software shop to date von DATA BECKER abgestimmt. Mit

Mehr

Überprüfung der digital signierten E-Rechnung

Überprüfung der digital signierten E-Rechnung Überprüfung der digital signierten E-Rechnung Aufgrund des BMF-Erlasses vom Juli 2005 (BMF-010219/0183-IV/9/2005) gelten ab 01.01.2006 nur noch jene elektronischen Rechnungen als vorsteuerabzugspflichtig,

Mehr

GeoPilot (Android) die App

GeoPilot (Android) die App GeoPilot (Android) die App Mit der neuen Rademacher GeoPilot App machen Sie Ihr Android Smartphone zum Sensor und steuern beliebige Szenen über den HomePilot. Die App beinhaltet zwei Funktionen, zum einen

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr

Technische Dokumentation SilentStatistikTool

Technische Dokumentation SilentStatistikTool Technische Dokumentation SilentStatistikTool Version 1.0 Marko Schröder 1115063 Inhalt Einleitung... 3 Klasse Program... 3 Klasse ArgumentHandler... 3 Bereitgestellte Variablen... 3 Bereitgestellte Methoden...

Mehr

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift. Briefe Schreiben - Arbeiten mit Word-Steuerformaten Ab der Version 5.1 stellt die BüroWARE über die Word-Steuerformate eine einfache Methode dar, Briefe sowie Serienbriefe mit Hilfe der Korrespondenzverwaltung

Mehr

Live Update (Auto Update)

Live Update (Auto Update) Live Update (Auto Update) Mit der Version 44.20.00 wurde moveit@iss+ um die Funktion des Live Updates (in anderen Programmen auch als Auto Update bekannt) für Programm Updates erweitert. Damit Sie auch

Mehr

Speicher in der Cloud

Speicher in der Cloud Speicher in der Cloud Kostenbremse, Sicherheitsrisiko oder Basis für die unternehmensweite Kollaboration? von Cornelius Höchel-Winter 2013 ComConsult Research GmbH, Aachen 3 SYNCHRONISATION TEUFELSZEUG

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

Wie optimiert man die Werbungserkennung von Ad- Detective?

Wie optimiert man die Werbungserkennung von Ad- Detective? Wie optimiert man die Werbungserkennung von Ad- Detective? Die Ad-Detective-Werbe-Erkennung von VideiReDo basiert auf der Erkennung von Schwarzwerten / scharzen Bildern, die die Werbeblöcke abgrenzen.

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

BüroWARE Exchange Synchronisation Grundlagen und Voraussetzungen

BüroWARE Exchange Synchronisation Grundlagen und Voraussetzungen BüroWARE Exchange Synchronisation Grundlagen und Voraussetzungen Stand: 13.12.2010 Die BüroWARE SoftENGINE ist ab Version 5.42.000-060 in der Lage mit einem Microsoft Exchange Server ab Version 2007 SP1

Mehr

EasyWk DAS Schwimmwettkampfprogramm

EasyWk DAS Schwimmwettkampfprogramm EasyWk DAS Schwimmwettkampfprogramm Arbeiten mit OMEGA ARES 21 EasyWk - DAS Schwimmwettkampfprogramm 1 Einleitung Diese Präsentation dient zur Darstellung der Zusammenarbeit zwischen EasyWk und der Zeitmessanlage

Mehr

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit, Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit, Wie kann ein PDF File angezeigt werden? kann mit Acrobat-Viewern angezeigt werden auf jeder Plattform!! (Unix,

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

Mehr

Animationen erstellen

Animationen erstellen Animationen erstellen Unter Animation wird hier das Erscheinen oder Bewegen von Objekten Texten und Bildern verstanden Dazu wird zunächst eine neue Folie erstellt : Einfügen/ Neue Folie... Das Layout Aufzählung

Mehr

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Stephan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0) 761 59018201 Fax +49 (0) 761 59018130 Internet www.paragon-software.com Email sales@paragon-software.com

Mehr

Über die Internetseite www.cadwork.de Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Über die Internetseite www.cadwork.de Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt. Internet, Codes und Update ab Version 13 Um Ihnen einen möglichst schnellen Zugang zu den aktuellsten Programmversionen zu ermöglichen liegen Update-Dateien für Sie im Internet bereit. Es gibt drei Möglichkeiten

Mehr

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook (2002-2007) Zentrum für Datenverarbeitung der Universität Tübingen

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook (2002-2007) Zentrum für Datenverarbeitung der Universität Tübingen Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook (2002-2007) Zentrum für Datenverarbeitung der Universität Tübingen Inhalt 1. Die Funambol Software... 3 2. Download und Installation... 3 3.

Mehr

Adami CRM - Outlook Replikation User Dokumentation

Adami CRM - Outlook Replikation User Dokumentation Adami CRM - Outlook Replikation User Dokumentation Die neue Eigenschaft der Adami CRM Applikation macht den Information Austausch mit Microsoft Outlook auf vier Ebenen möglich: Kontakte, Aufgaben, Termine

Mehr

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0) Tapps mit XP-Mode unter Windows 7 64 bit (V2.0) 1 Einleitung... 2 2 Download und Installation... 3 2.1 Installation von WindowsXPMode_de-de.exe... 4 2.2 Installation von Windows6.1-KB958559-x64.msu...

Mehr

Eine Einführung in die Installation und Nutzung von cygwin

Eine Einführung in die Installation und Nutzung von cygwin Eine Einführung in die Installation und Nutzung von cygwin 1 1. Woher bekomme ich cygwin? Cygwin ist im Internet auf http://www.cygwin.com/ zu finden. Dort lädt man sich die setup.exe in ein beliebiges

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

Konzepte der Informatik

Konzepte der Informatik Konzepte der Informatik Vorkurs Informatik zum WS 2011/2012 26.09. - 30.09.2011 17.10. - 21.10.2011 Dr. Werner Struckmann / Christoph Peltz Stark angelehnt an Kapitel 1 aus "Abenteuer Informatik" von Jens

Mehr

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005 Das Software Studio Christian Efinger mobilepoi 0.91 Demo Version Anleitung Erstellt am 21. Oktober 2005 Kontakt: Das Software Studio Christian Efinger ce@efinger-online.de Inhalt 1. Einführung... 3 2.

Mehr

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI TTS - TinyTimeSystem Unterrichtsprojekt BIBI Mathias Metzler, Philipp Winder, Viktor Sohm 28.01.2008 TinyTimeSystem Inhaltsverzeichnis Problemstellung... 2 Lösungsvorschlag... 2 Punkte die unser Tool erfüllen

Mehr

1 Konto für HBCI/FinTS mit Chipkarte einrichten

1 Konto für HBCI/FinTS mit Chipkarte einrichten 1 Konto für HBCI/FinTS mit Chipkarte einrichten Um das Verfahren HBCI/FinTS mit Chipkarte einzusetzen, benötigen Sie einen Chipkartenleser und eine Chipkarte. Die Chipkarte erhalten Sie von Ihrem Kreditinstitut.

Mehr

DOKUMENTATION PASY. Patientendaten verwalten

DOKUMENTATION PASY. Patientendaten verwalten DOKUMENTATION PASY Patientendaten verwalten PASY ist ein Programm zur einfachen und zuverlässigen Verwaltung von Patientendaten. Sämtliche elektronisch gespeicherten Dokumente sind sofort verfügbar. Neue

Mehr

Anwendungshinweis Nr. 12. Wie konfiguriere ich redundante Serververbindungen

Anwendungshinweis Nr. 12. Wie konfiguriere ich redundante Serververbindungen Anwendungshinweis Nr. 12 Produkt: Schlüsselworte: Problem: Softing OPC Easy Connect OPC Server, Redundanz Wie konfiguriere ich redundante Lösung: Ausgangssituation: Eine OPC Client-Anwendung ist mit mehreren

Mehr

Gruppenrichtlinien und Softwareverteilung

Gruppenrichtlinien und Softwareverteilung Gruppenrichtlinien und Softwareverteilung Ergänzungen zur Musterlösung Bitte lesen Sie zuerst die gesamte Anleitung durch! Vorbemerkung: Die Begriffe OU (Organizational Unit) und Raum werden in der folgenden

Mehr

Persönliches Adressbuch

Persönliches Adressbuch Persönliches Adressbuch Persönliches Adressbuch Seite 1 Persönliches Adressbuch Seite 2 Inhaltsverzeichnis 1. WICHTIGE INFORMATIONEN ZUR BEDIENUNG VON CUMULUS 4 2. ALLGEMEINE INFORMATIONEN ZUM PERSÖNLICHEN

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Zeichen bei Zahlen entschlüsseln

Zeichen bei Zahlen entschlüsseln Zeichen bei Zahlen entschlüsseln In diesem Kapitel... Verwendung des Zahlenstrahls Absolut richtige Bestimmung von absoluten Werten Operationen bei Zahlen mit Vorzeichen: Addieren, Subtrahieren, Multiplizieren

Mehr

Loggen Sie sich in Ihrem teamspace Team ein, wechseln Sie bitte zur Verwaltung und klicken Sie dort auf den Punkt Synchronisation.

Loggen Sie sich in Ihrem teamspace Team ein, wechseln Sie bitte zur Verwaltung und klicken Sie dort auf den Punkt Synchronisation. Ihre Welt spricht teamspace! Anleitung zur Synchronisation 1. Schritt: Loggen Sie sich in Ihrem teamspace Team ein, wechseln Sie bitte zur Verwaltung und klicken Sie dort auf den Punkt Synchronisation.

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

Dokumentation von Ük Modul 302

Dokumentation von Ük Modul 302 Dokumentation von Ük Modul 302 Von Nicolas Kull Seite 1/ Inhaltsverzeichnis Dokumentation von Ük Modul 302... 1 Inhaltsverzeichnis... 2 Abbildungsverzeichnis... 3 Typographie (Layout)... 4 Schrift... 4

Mehr

DCS-3110 EVENT SETUP

DCS-3110 EVENT SETUP DCS-3110 EVENT SETUP Diese Anleitung erklärt die notwendigen Schritte für das Einstellen der Funktion Event Setup der IP-Kamera DCS-3110. Die Konfiguration erfolgt in vier Schritten: 1) Anmeldung an der

Mehr

4. BEZIEHUNGEN ZWISCHEN TABELLEN

4. BEZIEHUNGEN ZWISCHEN TABELLEN 4. BEZIEHUNGEN ZWISCHEN TABELLEN Zwischen Tabellen können in MS Access Beziehungen bestehen. Durch das Verwenden von Tabellen, die zueinander in Beziehung stehen, können Sie Folgendes erreichen: Die Größe

Mehr

Bilder Schärfen und Rauschen entfernen

Bilder Schärfen und Rauschen entfernen Bilder Schärfen und Rauschen entfernen Um alte Bilder, so wie die von der Olympus Camedia 840 L noch dazu zu bewegen, Farben froh und frisch daherzukommen, bedarf es einiger Arbeit und die habe ich hier

Mehr

- Zweimal Wöchentlich - Windows Update ausführen - Live Update im Norton Antivirusprogramm ausführen

- Zweimal Wöchentlich - Windows Update ausführen - Live Update im Norton Antivirusprogramm ausführen walker radio tv + pc GmbH Flüelerstr. 42 6460 Altdorf Tel 041 870 55 77 Fax 041 870 55 83 E-Mail info@walkerpc.ch Wichtige Informationen Hier erhalten sie einige wichtige Informationen wie sie ihren Computer

Mehr

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über

Mehr

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge Ab der Version forma 5.5 handelt es sich bei den Orientierungshilfen der Architekten-/Objektplanerverträge nicht

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung Anleitung zur Daten zur Datensicherung und Datenrücksicherung Datensicherung Es gibt drei Möglichkeiten der Datensicherung. Zwei davon sind in Ges eingebaut, die dritte ist eine manuelle Möglichkeit. In

Mehr

Installation Server HASP unter Windows 2008 R2 Server 1 von 15. Inhaltsverzeichnis

Installation Server HASP unter Windows 2008 R2 Server 1 von 15. Inhaltsverzeichnis Installation Server HASP unter Windows 2008 R2 Server 1 von 15 Inhaltsverzeichnis 1.1. Allgemeines zum Server HASP...2 1.2. Installation des Sentinel HASP License Manager (Windows Dienst) auf dem Windows

Mehr

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

Mehr

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Einleitung Wenn in einem Unternehmen FMEA eingeführt wird, fangen die meisten sofort damit an,

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: 19.02.2014 MORE Projects GmbH MORE Profile Pass- und Lizenzverwaltungssystem erstellt von: Thorsten Schumann erreichbar unter: thorsten.schumann@more-projects.de Stand: MORE Projects GmbH Einführung Die in More Profile integrierte

Mehr

teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep

teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep teischl.com Software Design & Services e.u. office@teischl.com www.teischl.com/booknkeep www.facebook.com/booknkeep 1. Erstellen Sie ein neues Rechnungsformular Mit book n keep können Sie nun Ihre eigenen

Mehr

pro4controlling - Whitepaper [DEU] Whitepaper zur CfMD-Lösung pro4controlling Seite 1 von 9

pro4controlling - Whitepaper [DEU] Whitepaper zur CfMD-Lösung pro4controlling Seite 1 von 9 Whitepaper zur CfMD-Lösung pro4controlling Seite 1 von 9 1 Allgemeine Beschreibung "Was war geplant, wo stehen Sie jetzt und wie könnte es noch werden?" Das sind die typischen Fragen, mit denen viele Unternehmer

Mehr

Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost

Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost Adobe Photoshop Lightroom 5 für Einsteiger Bilder verwalten und entwickeln Sam Jost Kapitel 2 Der erste Start 2.1 Mitmachen beim Lesen....................... 22 2.2 Für Apple-Anwender.........................

Mehr

Durchführung der Datenübernahme nach Reisekosten 2011

Durchführung der Datenübernahme nach Reisekosten 2011 Durchführung der Datenübernahme nach Reisekosten 2011 1. Starten Sie QuickSteuer Deluxe 2010. Rufen Sie anschließend über den Menüpunkt /Extras/Reisekosten Rechner den QuickSteuer Deluxe 2010 Reisekosten-Rechner,

Mehr

Programme im Griff Was bringt Ihnen dieses Kapitel?

Programme im Griff Was bringt Ihnen dieses Kapitel? 3-8272-5838-3 Windows Me 2 Programme im Griff Was bringt Ihnen dieses Kapitel? Wenn Sie unter Windows arbeiten (z.b. einen Brief schreiben, etwas ausdrucken oder ein Fenster öffnen), steckt letztendlich

Mehr

DOKUMENTATION VOGELZUCHT 2015 PLUS

DOKUMENTATION VOGELZUCHT 2015 PLUS DOKUMENTATION VOGELZUCHT 2015 PLUS Vogelzucht2015 App für Geräte mit Android Betriebssystemen Läuft nur in Zusammenhang mit einer Vollversion vogelzucht2015 auf einem PC. Zusammenfassung: a. Mit der APP

Mehr

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten Das große x -4 Alles über das Wer kann beantragen? Generell kann jeder beantragen! Eltern (Mütter UND Väter), die schon während ihrer Elternzeit wieder in Teilzeit arbeiten möchten. Eltern, die während

Mehr

Microsoft PowerPoint 2013 Folien gemeinsam nutzen

Microsoft PowerPoint 2013 Folien gemeinsam nutzen Hochschulrechenzentrum Justus-Liebig-Universität Gießen Microsoft PowerPoint 2013 Folien gemeinsam nutzen Folien gemeinsam nutzen in PowerPoint 2013 Seite 1 von 4 Inhaltsverzeichnis Einleitung... 2 Einzelne

Mehr

Einführung in. Logische Schaltungen

Einführung in. Logische Schaltungen Einführung in Logische Schaltungen 1/7 Inhaltsverzeichnis 1. Einführung 1. Was sind logische Schaltungen 2. Grundlegende Elemente 3. Weitere Elemente 4. Beispiel einer logischen Schaltung 2. Notation von

Mehr

Installation der SAS Foundation Software auf Windows

Installation der SAS Foundation Software auf Windows Installation der SAS Foundation Software auf Windows Der installierende Benutzer unter Windows muss Mitglied der lokalen Gruppe Administratoren / Administrators sein und damit das Recht besitzen, Software

Mehr

Powermanager Server- Client- Installation

Powermanager Server- Client- Installation Client A Server Client B Die Server- Client- Funktion ermöglicht es ein zentrales Powermanager Projekt von verschiedenen Client Rechnern aus zu bedienen. 1.0 Benötigte Voraussetzungen 1.1 Sowohl am Server

Mehr

Gruppe: swp09-6 26.04.2009 Gruppenleiter: U. Seiler Aufgabenstellung 3. Lastenheft

Gruppe: swp09-6 26.04.2009 Gruppenleiter: U. Seiler Aufgabenstellung 3. Lastenheft Lastenheft Synchronisation von RDF Modellen im PKM Kontext als Plugin für OntoWiki Inhaltsverzeichnis 1. Zielbestimmung 2. Produkteinsatz 3. Produktübersicht 4. Produktfunktionen 4.1. Muss-Bedingungen

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

VIDA ADMIN KURZANLEITUNG

VIDA ADMIN KURZANLEITUNG INHALT 1 VIDA ADMIN... 3 1.1 Checkliste... 3 1.2 Benutzer hinzufügen... 3 1.3 VIDA All-in-one registrieren... 4 1.4 Abonnement aktivieren und Benutzer und Computer an ein Abonnement knüpfen... 5 1.5 Benutzername

Mehr

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel 2016. für Mac. amac-buch Verlag

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel 2016. für Mac. amac-buch Verlag Anton Ochsenkühn amac BUCH VERLAG Ecxel 2016 für Mac amac-buch Verlag 2 Word-Dokumentenkatalog! Zudem können unterhalb von Neu noch Zuletzt verwendet eingeblendet werden. Damit hat der Anwender einen sehr

Mehr

ICS-Addin. Benutzerhandbuch. Version: 1.0

ICS-Addin. Benutzerhandbuch. Version: 1.0 ICS-Addin Benutzerhandbuch Version: 1.0 SecureGUARD GmbH, 2011 Inhalt: 1. Was ist ICS?... 3 2. ICS-Addin im Dashboard... 3 3. ICS einrichten... 4 4. ICS deaktivieren... 5 5. Adapter-Details am Server speichern...

Mehr

von: Oktay Arslan Kathrin Steiner Tamara Hänggi Marco Schweizer GIB-Liestal Mühlemattstrasse 34 4410 Liestal ATG

von: Oktay Arslan Kathrin Steiner Tamara Hänggi Marco Schweizer GIB-Liestal Mühlemattstrasse 34 4410 Liestal ATG von: Oktay Arslan Kathrin Steiner Tamara Hänggi Marco Schweizer GIB-Liestal Mühlemattstrasse 34 4410 Liestal ATG 20.03.2009 1 Inhaltsverzeichnis 1. Zusammenfassung S. 3 2. Aufgabestellung S. 3 3. Lösungsansätze

Mehr

Produktschulung WinDachJournal

Produktschulung WinDachJournal Produktschulung WinDachJournal Codex GmbH Stand 2009 Inhaltsverzeichnis Einleitung... 3 Starten des Programms... 4 Erfassen von Notizen in WinJournal... 6 Einfügen von vorgefertigten Objekten in WinJournal...

Mehr

Online Newsletter III

Online Newsletter III Online Newsletter III Hallo zusammen! Aus aktuellem Anlass wurde ein neuer Newsletter fällig. Die wichtigste Neuerung betrifft unseren Webshop mit dem Namen ehbshop! Am Montag 17.10.11 wurde die Testphase

Mehr

Was ist neu in Sage CRM 6.1

Was ist neu in Sage CRM 6.1 Was ist neu in Sage CRM 6.1 Was ist neu in Sage CRM 6.1 In dieser Präsentation werden wir Sie auf eine Entdeckungstour mitnehmen, auf der folgende neue und verbesserte Funktionen von Sage CRM 6.1 auf Basis

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Zahlensysteme: Oktal- und Hexadezimalsystem

Zahlensysteme: Oktal- und Hexadezimalsystem 20 Brückenkurs Die gebräuchlichste Bitfolge umfasst 8 Bits, sie deckt also 2 8 =256 Möglichkeiten ab, und wird ein Byte genannt. Zwei Bytes, also 16 Bits, bilden ein Wort, und 4 Bytes, also 32 Bits, formen

Mehr

Anleitung zur Installation von Thunderbird

Anleitung zur Installation von Thunderbird Anleitung zur Installation von Thunderbird Download und Installation 1. Dieses Dokument behandelt die Installation von PGP mit Thunderbird unter Windows 7. Im Allgemeinen ist diese Dokumentation überall

Mehr

estos UCServer Multiline TAPI Driver 5.1.30.33611

estos UCServer Multiline TAPI Driver 5.1.30.33611 estos UCServer Multiline TAPI Driver 5.1.30.33611 1 estos UCServer Multiline TAPI Driver... 4 1.1 Verbindung zum Server... 4 1.2 Anmeldung... 4 1.3 Leitungskonfiguration... 5 1.4 Abschluss... 5 1.5 Verbindung...

Mehr

Handbuch B4000+ Preset Manager

Handbuch B4000+ Preset Manager Handbuch B4000+ Preset Manager B4000+ authentic organ modeller Version 0.6 FERROFISH advanced audio applications Einleitung Mit der Software B4000+ Preset Manager können Sie Ihre in der B4000+ erstellten

Mehr

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden. In einer Website haben Seiten oft das gleiche Layout. Speziell beim Einsatz von Tabellen, in denen die Navigation auf der linken oder rechten Seite, oben oder unten eingesetzt wird. Diese Anteile der Website

Mehr

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren Verwaltungsdirektion Informatikdienste Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren Inhaltsverzeichnis Einleitung... 3 Installation WSUS Server... 4 Dokumente... 4 Step by Step Installation...

Mehr

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 -

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 - Matrix42 Use Case - Sicherung und Rücksicherung persönlicher Version 1.0.0 23. September 2015-1 - Inhaltsverzeichnis 1 Einleitung 3 1.1 Beschreibung 3 1.2 Vorbereitung 3 1.3 Ziel 3 2 Use Case 4-2 - 1 Einleitung

Mehr

Eine Anwendung mit InstantRails 1.7

Eine Anwendung mit InstantRails 1.7 Eine Anwung mit InstantRails 1.7 Beschrieben wird das Anlegen einer einfachen Rails-Anwung, die ohne Datenbank auskommt. Schwerpunktmäßig wird auf den Zusammenhang von Controllern, Views und der zugehörigen

Mehr

Task: Nmap Skripte ausführen

Task: Nmap Skripte ausführen Task: Nmap Skripte ausführen Inhalt Einfache Netzwerkscans mit NSE Ausführen des Scans Anpassung der Parameter Einleitung Copyright 2009-2015 Greenbone Networks GmbH Herkunft und aktuellste Version dieses

Mehr

Hilfe zur Urlaubsplanung und Zeiterfassung

Hilfe zur Urlaubsplanung und Zeiterfassung Hilfe zur Urlaubsplanung und Zeiterfassung Urlaubs- und Arbeitsplanung: Mit der Urlaubs- und Arbeitsplanung kann jeder Mitarbeiter in Coffee seine Zeiten eintragen. Die Eintragung kann mit dem Status anfragen,

Mehr

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank In den ersten beiden Abschnitten (rbanken1.pdf und rbanken2.pdf) haben wir uns mit am Ende mysql beschäftigt und kennengelernt, wie man

Mehr

M a i l C r e d i t. \\Burt\user\Soutschek\FP\Technik\Frankiermaschinen\00_PC Software\MailCredit\Anleitung MailCredit Installation.

M a i l C r e d i t. \\Burt\user\Soutschek\FP\Technik\Frankiermaschinen\00_PC Software\MailCredit\Anleitung MailCredit Installation. M a i l C r e d i t MailCredit ist eine Software, die auf einem PC installiert wird. Diese Software ermöglicht es, dass eine Frankiermaschine über das Internet Portoladungen bzw. Kommunikation mit dem

Mehr

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten 2008 netcadservice GmbH netcadservice GmbH Augustinerstraße 3 D-83395 Freilassing Dieses Programm ist urheberrechtlich geschützt. Eine Weitergabe

Mehr

WinVetpro im Betriebsmodus Laptop

WinVetpro im Betriebsmodus Laptop WinVetpro im Betriebsmodus Laptop Um Unterwegs Daten auf einem mobilen Gerät mit WinVetpro zu erfassen, ohne den Betrieb in der Praxis während dieser Zeit zu unterbrechen und ohne eine ständige Online

Mehr

Lizenzen auschecken. Was ist zu tun?

Lizenzen auschecken. Was ist zu tun? Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.

Mehr

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten Der Konfigurations-Assistent wurde entwickelt, um die unterschiedlichen ANTLOG-Anwendungen auf den verschiedensten Umgebungen automatisiert

Mehr

ASA Schnittstelle zu Endian Firewall Hotspot aktivieren. Konfiguration ASA jhotel

ASA Schnittstelle zu Endian Firewall Hotspot aktivieren. Konfiguration ASA jhotel ENDIAN DISTRIBUTOR ASA Schnittstelle zu Endian Firewall Hotspot aktivieren Konfiguration ASA jhotel ASA jhotel öffnen Unter den Menüpunkt Einrichtung System System Dort auf Betrieb Kommunikation Internet-Zugang

Mehr

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Peter Koos 03. Dezember 2015 0 Inhaltsverzeichnis 1 Voraussetzung... 3 2 Hintergrundinformationen... 3 2.1 Installationsarten...

Mehr

Netzwerk einrichten unter Windows

Netzwerk einrichten unter Windows Netzwerk einrichten unter Windows Schnell und einfach ein Netzwerk einrichten unter Windows. Kaum ein Rechner kommt heute mehr ohne Netzwerkverbindungen aus. In jedem Rechner den man heute kauft ist eine

Mehr

Lernwerkstatt 9 privat- Freischaltung

Lernwerkstatt 9 privat- Freischaltung Was tun, wenn mein Rechner immer wieder die Freischaltung der Lernwerkstatt 9 privat verliert und ich die Ursache dafür nicht finden kann? Normalerweise genügt es, genau eine einzige online-freischaltung

Mehr