Laserpointer-Tracking in realen Umgebungen
Transcription
Laserpointer-Tracking in realen Umgebungen
Laserpointer-Tracking in realen Umgebungen von Kurz, Daniel aus Münster Bachelorarbeit eingereicht an der Fakultät Medien (Fachbereich Mediensysteme) zum Erreichen des akademischen Grades B ACHELOR OF S CIENCE an der B AUHAUS -U NIVERSITÄT W EIMAR Betreuer der Arbeit: Jun. Prof. Dr. Oliver Bimber Bauhaus-Universität Weimar Erstbetreuer Prof. Dr. Tom Gross Bauhaus-Universität Weimar Zweitbetreuer Tag der Einreichung: 13. November 2006 Erklärung Hiermit erkläre ich, dass ich diese Arbeit selbstständig erstellt und keine anderen als die angegebenen Hilfsmittel benutzt habe. Weimar, den 13. November 2006 Daniel Kurz Kurzfassung In der Erweiterten Realität beschränkt man sich nicht auf klassische Displays, wie Monitore oder Projektionsleinwände. Etwa mit Hilfe kalibrierter Projektoren und radiometrischer Kompensation wird jede reale Umgebung – zum Beispiel ein Wohnzimmer – zu einem potentiellen Display, das interaktive Inhalte darstellen kann. Ein solches interaktives System erfordert ein intuitives und schnelles Eingabegerät. Klassische desktopgebundene Eingabegeräte, wie Maus und Tastatur eigenen sich hier nicht. Laserpointer-Tracking hat sich als eine intuitive und schnelle Eingabemethode herausgestellt, die es dem Benutzer ermöglicht über Distanz mit einer Projektionsleinwand zu interagieren. Diese Arbeit stellt ein System vor, das Laserpointer-Tracking in realen Umgebungen ermöglicht. Das Display – und damit die Interaktionsfläche – ist nicht länger auf eine planare Leinwand beschränkt, sondern kann beliebig komplex und den Benutzer umgebend sein. Ein hybrides Kamerasystem, bestehend aus einer pan-tilt-zoom (PTZ) Kamera in der Funktion einer Detailkamera und einer Fischaugenkamera, die als Kontextkamera fungiert, ermöglicht die Lokalisierung und das Verfolgen (tracking) eines Laserpunktes in einem Interakionsfeld von 360◦ ∗ 180◦ . Die Position des Laserpunktes in dreidimensionalen Weltko- ordinaten liefert die Grundlage für Laserpointer-Interaktion in realen Umgebungen. Darüber hinaus ist das System in der Lage, die es umgebene Szene zu akquirieren. Ein Lasermodul ermöglicht die Abtastung von Geometrieinformationen. Zusammen mit einer Textur, die aus Einzelbildern der Detailkamera zusammengesetz wird, erhält man ein texturiertes Geometriemodell der Szene, das aus beliebigen Perspektiven betrachtet werden kann. II Inhaltsverzeichnis Kurzfassung II Abbildungsverzeichnis VII Tabellenverzeichnis VIII 1 Einleitung 1 1.1 Motivation der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Vorschau der Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Kapitelübersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2 Verwandte Arbeiten 5 2.1 Laserpointer-Interaktion . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Einsatz von Pan-Tilt-Zoom Kameras . . . . . . . . . . . . . . . . . 8 3 Setup 11 3.1 Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2 Systemaufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3 Prototyp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.4 Datenübertragung und Kommunikation . . . . . . . . . . . . . . . 14 3.5 3.4.1 Kommunikation zwischen Computer und System . . . . . 14 3.4.2 Kommunikation innerhalb des Systems . . . . . . . . . . . 16 3.4.3 Protokolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4 Kalibrierung 4.1 20 Kamerakalibrierung . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.1.1 Pinhole-Modell . . . . . . . . . . . . . . . . . . . . . . . . . 20 III Inhaltsverzeichnis 4.2 4.1.2 Intrinsische Kalibrierung . . . . . . . . . . . . . . . . . . . 22 4.1.3 Extrinsische Kalibrierung . . . . . . . . . . . . . . . . . . . 23 Statische Systemkalibrierung . . . . . . . . . . . . . . . . . . . . . 24 4.2.1 Intrinsische Kalibrierung der Detailkamera . . . . . . . . . 24 4.2.2 Intrinsische Kalibrierung der Kontextkamera . . . . . . . . 25 4.2.3 Extrinsische Kalibrierung der Detailkamera im Systemkoordinatensystem . . . . . . . . . . . . . . . . . . . . . . . 28 4.2.4 Extrinsische Kalibrierung der Kontextkamera im Systemkoordinatensystem . . . . . . . . . . . . . . . . . . . . . . . 28 4.3 4.4 Dynamische Systemkalibrierung . . . . . . . . . . . . . . . . . . . 29 4.3.1 Computer Vision basierte Techniken . . . . . . . . . . . . . 29 4.3.2 Geometriebasiertes Verfahren . . . . . . . . . . . . . . . . . 33 Analyse und Vergleich der Kalibrierungsverfahren . . . . . . . . . 41 4.4.1 Genauigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.4.2 Geschwindigkeit . . . . . . . . . . . . . . . . . . . . . . . . 45 4.4.3 Resumee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5 Laserpointer-Tracking 5.1 48 Lokalisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5.1.1 Lokalisierung im Kamerabild der Detailkamera . . . . . . 48 5.1.2 Lokalisierung in Weltkoordinaten mit Hilfe der Detailkamera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 5.1.3 Lokalisierung im Kamerabild der Kontextkamera . . . . . 51 5.1.4 Lokalisierung in Weltkoordinaten mit Hilfe der Kontextkamera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.2 Verfolgen des Laserpunktes . . . . . . . . . . . . . . . . . . . . . . 54 5.3 Räumliche Auflösung des Laserpointertrackings . . . . . . . . . . 55 5.4 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 5.4.1 Probleme und Einschränkungen . . . . . . . . . . . . . . . 56 5.4.2 Stärken gegenüber vergleichbaren Eingabegeräten . . . . . 60 5.4.3 Resumee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 6 Szenenakquise 6.1 62 Geometrieakquise . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 IV Inhaltsverzeichnis 6.2 6.3 6.1.1 Effiziente Geometrieakquise . . . . . . . . . . . . . . . . . . 64 6.1.2 Probleme bei der Geometrieakquise . . . . . . . . . . . . . 65 Photometrieakquise . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 6.2.1 Hochauflösende statische Textur . . . . . . . . . . . . . . . 67 6.2.2 Geringauflösende Echtzeittextur . . . . . . . . . . . . . . . 70 Resumee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 7 Zusammenfassung und Ausblick 7.1 7.2 7.3 75 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 7.1.1 Kalibrierung . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 7.1.2 Laserpointer-Tracking . . . . . . . . . . . . . . . . . . . . . 76 7.1.3 Szenenakquise . . . . . . . . . . . . . . . . . . . . . . . . . 77 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 7.2.1 Laserpointer-Tracking . . . . . . . . . . . . . . . . . . . . . 77 7.2.2 Szenenaquise . . . . . . . . . . . . . . . . . . . . . . . . . . 80 7.2.3 Kamerasystem . . . . . . . . . . . . . . . . . . . . . . . . . 80 Danksagung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 A Evaluation der Kalibrierungsverfahren 82 B Schaltpläne 85 V Abbildungsverzeichnis 1.1 Spatial Augmented Reality in Architecture (DFG-Projekt) . . . . . 2 3.1 Foto des Prototypen . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2 Blockschaltbild: Computer (1); Kontextkamera (2); Hauptplatine (3); Detailkamera (4); Lasermodul (5); Schrittmotorcontroller (6, 7); Schrittmotoren (8, 9). . . . . . . . . . . . . . . . . . . . . 15 4.1 Kamera im Pinhole-Modell . . . . . . . . . . . . . . . . . . . . . . 21 4.2 Intrinsische Parameter in Abhängigkeit der Zoomstufe . . . . . . 25 4.3 Parameter der Linsenzerzeichnung in Abhängigkeit der Zoomstufe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.4 Einfaches Kameramodell der Kontextkamera. Auf der linken Seite ist ein Laserpunkt an der Pixelposition p’ zu sehen. Die rechte Abbildung zeigt den zugehörigen dreidimensionalen Vektor, der in die Richtung des Laserpunktes zeigt. . . . . . . . . . . . . . 27 4.5 Virtuelle Bildebene . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.6 Berechnung der Tiefe durch Triangulierung . . . . . . . . . . . . . 34 4.7 Erfasste Punktwolke mit Ortsvektoren . . . . . . . . . . . . . . . . 38 4.8 Punktwolke und Geometriemodell ( a); initial guess (b); gefundenes Minimum (c). Die roten Punkte visualisieren Ausreißer, die im zweiten Minimierungsdurchgang nicht berücksichtigt werden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.9 Fehler der verschiedenen Kalibrierungsmethoden. Minimum, 0,25Quartil, Median, 0,75-Quartil, Maximum. . . . . . . . . . . . . . . 43 4.10 Dauer der verschiedenen Kalibrierungsverfahren . . . . . . . . . 46 5.1 Schematische Darstellung von Laserpointer-Tracking . . . . . . . 54 VI Abbildungsverzeichnis 5.2 Kamerabild ( a); Maske (b); maskiertes Kamerabild (c). . . . . . . 57 5.3 Bilder des Frames n − 1 ( a, d); des Folgeframes n (b, e); die asymetrische Differenz der Bilder (c, f ). Oben: Laserpunkt gefun- den ( a, b, c); unten: falscher Laserpunkt gefunden (d, e, f ). . . . . 59 6.1 Gescannte Geometrie mit verschiedenen Abtastraten, beginnend bei einer geringen Auflösung von 202 Punkten (Dauer ca. 10 min) ( a), einer etwas höheren Auflösung von 402 Punkten (Dauer ca. 32 min) (b) und zuletzt mit 602 Abtastpunkten (Dauer: ca. 68 min) (c). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.2 Gescannte Geometrie gerendert in Wireframe-Darstellung ( a), mit Farben als Funktion der Tiefe (b) und mit Farben als Funktion der Normalen (c). . . . . . . . . . . . . . . . . . . . . . . . . . . 64 6.3 Triangulierungsschema des adaptiven Scannens . . . . . . . . . . 65 6.4 Adaptive Abtastung eines Würfels (Simulation). . . . . . . . . . . 66 6.5 Die Ränder zwischen den Einzelbildern ( a) sind ohne Blending 6.6 6.7 6.8 6.9 (b) störender als mit Blending (c). . . . . . . . . . . . . . . . . . . Hochauflösende Textur; zusammengesetzt aus 49 Einzelbildern. . Gescannte Geometrie, texturiert mit der hochaufgelöseten Textur Echtzeittextur ( a); gescannte Geometrie, texturiert mit Echtzeittextur (b, c). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Gegenüberstellung der Echtzeittextur (oben) und der hochaufgelösten Textur (unten). . . . . . . . . . . . . . . . . . . . . . . . . 67 69 70 72 73 7.1 6 DOF Laserpointertracking mit Hilfe eines Beugungsgitters . . . 78 7.2 Stereoskopischer Laserpointer . . . . . . . . . . . . . . . . . . . . . 79 A.1 Bilder der ersten Testumgebung. Untere Reihe: Referenzmodell . 83 A.2 Bilder der zweiten Testumgebung. Untere Reihe: Referenzmodell 84 B.1 Schaltplan der Hauptplatine (entworfen und konstruiert von Ferry Häntsch) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 B.2 Schaltplan der Schrittmotorcontroller. Nachdruck aus TMC222 DATASHEET) [33] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 VII Tabellenverzeichnis 3.1 Protokoll zwischen Computer und Kamerasystem . . . . . . . . . 17 3.2 Verwendete Kommunikation mit der Detailkamera . . . . . . . . 18 VIII 1 Einleitung 1.1 Motivation der Arbeit Immersive Displays haben in der Virtuellen Realität längst Einzug gehalten und werden auch in der Industrie zur Simulation und Visualisierung verwendet. Der Vorteil gegenüber Displays wie einem Monitor ist, dass das gesamte Blickfeld des Benutzers abgedeckt wird, und er sich somit räumlich in der virtuellen Realität befindet, anstatt sie wie in einem Terrarium zu betrachten. Meist sind immersive Displays – wie zum Beispiel eine CAVE – räumlich gebunden und nicht ohne weiteres zu transportieren. Doch kann eigentlich jeder beliebige Raum ein immersives Display sein. Radiometrische Kompensation ermöglicht die Projektion auf nahezu beliebige Oberflächen. Insbesondere für Architekten, die einen Raum verändern möchten, scheint es sinnvoller sie Planung und Entwurf direkt vor Ort machen zu lassen, anstatt in einer CAVE, oder gar mit einem CAD-Programm vor dem Monitor. Sie können direkt in der realen Umgebung gestalten und manipulieren und bekommen die reale Umgebung, um ihren Entwurf erweitert, unmittelbar zu Gesicht. Diese direkte Form der Gestaltung benötigt eine direkte Interaktionsmöglichkeit. Klassische desktopbasierte Eingabegeräte, wie Maus und Tastatur, sind hier sicher nicht hinreichend. Zum einen möchte der Benutzer die Möglichkeit haben, sich frei zu bewegen ohne an einen Schreibtisch gebunden zu sein. Zum anderen ist jede Abbildung der zwei Freiheitsgrade der Maus auf eine dreidimensionale Position nicht völlig intuitiv und direkt. In der Virtuellen Realität (VR) gibt es zahlreiche Eingabegeräte, welche nicht an einen Schreibtisch gebunden sind und sechs oder mehr Freiheitsgrade besitzen. Diese lassen sich grob unterteilen in Geräte, welche die, mit Sensoren ausgestattete, Tasten und 1 1 Einleitung Abbildung 1.1: Spatial Augmented Reality in Architecture (DFG-Projekt) bewegliche Bedienelemente haben und solche, deren Position und Orientierung im Raum gemessen wird. Natürlich gibt es auch Geräte, welche beide Eigenschaften besitzen. Das Ermitteln von Position und Orientierung eines solchen Gerätes nennt sich Tracking und wird optisch mit Hilfe von Kameras oder elektromagnetisch durchgeführt. Ein verbreitetes Gerät der letzen Gattung ist der S TYLUS – eine Art Stift der elektomagnetisch getrackt wird. Mit ihm ist es möglich, sehr intuitiv auf einen Punkt im Raum zu zeigen. Das Äquivalent zu dieser Metapher in der realen Welt ist ein Laserpointer. Laserpointer sind bereits bekannt als intuitive, direkte und schnelle Eingabegeräte auf Projektionsflächen – zum Beispiel in einer Konferenz oder einer Vorlesung. Diese Arbeit setzt sich damit auseinander, einen Laserpointer als Eingabegerät für einen gewöhnlichen Raum der als immersives Display dient zu nutzen. Das Ziel ist dabei, den Laserpunkt, der von dem Laserpointer in der Umgebung erzeugt wird, zu lokalisieren. Ein computergesteuertes Kamerasystem, das sich im Wesentlichen aus einer durch Motoren schwenk- und neigbaren Detailkamera (Pan-Tilt-Zoom Kamera) und einer Kontextkamera, die mit einer Fischaugenlinse ausgestattet ist, zusammensetzt, dient dabei zur Lokalisation und Verfolgung des Laserpunktes – dem sogenannten Laserpointertracking. 2 1 Einleitung 1.2 Vorschau der Ergebnisse Vorgestellt wird in dieser Arbeit ein computergesteuertes hybrides Kamerasystem, das es ermöglicht, einen Laserpunkt in seiner Umgebung zu lokalisieren. Eine schwenk- und neigbare Detailkamera verfolgt den Laserpunkt. Bei Verlust gibt die Kontextkamera eine grobe Abschätzung wo sich der Punkt befindet, sodass die Detailkamera das Tracken fortsetzen kann. Somit kann ein Laser als Eingabegerät in realen Umgebungen verwendet werden. Es werden verschiedene Möglichkeiten der Kalibrierung vorgestellt und miteinander verglichen. Ausserdem wird gezeigt, wie das Kamerasystem Szenenakquise ermöglicht. Es ist in der Lage, mit Hilfe eines Lasermoduls, die umgebene Geometrie und, mit der Detailkamera, deren Photometrie – also die Textur – zu erfassen. 1.3 Kapitelübersicht Diese Arbeit ist in insgesamt sieben Kapitel gegliedert. Das erste Kapitel ist wird hiermit abgeschlossen und präsentierte die Motivation der Arbeit. Im folgenden Kapitel 2 werden mit dieser Arbeit verwandte Arbeiten zusammengefasst. Sowohl über Laserpointer-Tracking und -Interaktion, als auch über den Einsatz von PTZ-Kameras gibt es bereits einige Arbeiten, welche als Grundlage für diese dienten. Kapitel 3 stellt das Setup inklusive des entwickelten Kamerasystems vor. Es wird erläutert, wie es aufgebaut ist und welche Kommunikation notwendig ist um es zu betreiben. Um das Kamerasystem sinnvoll nutzen zu können muss es kalibriert werden. Kapitel 4 widmet sich der Kalibrierung des Systems. Zunächst werden die statischen Parameter des Kamerasystems betrachtet und Verfahren zu deren Bestimmung erläutert. Anschließend werden verschiedene Möglichkeiten der Kalibrierung des gesamten Systems in einer realen Umgebung beschrieben. Abgeschlossen wird das Kapitel durch eine Evaluation der verschiedenen Kalibrierungsverfahren. Kapitel 5 beschreibt Laserpointer-Tracking als Grund und Ziel der vorhergehenden Kapitel. Es wird gezeigt, wie nach der Kalibrierung ein Laserpunkt lokalisiert, verfolgt und bei Verlust wiedergefunden wird. Anschließend wird in Kapitel 6 gezeigt, wie das 3 1 Einleitung Kamerasystem Szenenakquise ermöglicht. Sowohl die Geometrie, als auch die Photometrie der realen Umgebung kann erfasst und als texturiertes Geometriemodell gespeichert werden. Ein adaptiver Algorithmus, welcher Überabtastung der Geometrie verhindert, wird vorgestellt. Außerdem werden zwei Verfahren der Photometrieakquise vorgestellt – zum einen eine hochauflösende, zum anderen eine geringer aufgelöste Echtzeittextur. Kapitel 7 schließt die Arbeit ab und fasst die wichtigsten Ergebnisse zusammen. Ausserdem werden Ideen für zukünftige Arbeit und Verbesserungen des bestehenden Systems erläutert. 4 2 Verwandte Arbeiten Dieses Kapitel fasst einige Arbeiten kurz zusammen, die mit dieser Arbeit verwandt sind. Zunächst werden bisherige Lösungen zur Laserpointer Interaktion vorgestellt. Anschließend werden verschiedene Arbeiten vorgestellt, die PTZ-Kameras verwenden. Abschließend wird diese Arbeit mit den vorgestellten Arbeiten verglichen und herausgestellt, was sie von ihnen abhebt. 2.1 Laserpointer-Interaktion Laserpointer Interaktion ist ein weit erforschtes Gebiet. Ein Laserpointer dient als direktes Eingabegerät mit der Metapher, auf eine gewünschte Stelle zu zeigen. Im Gegensatz zu desktopgebundenen Eingabegeräten, wie Maus und Tastaur, ermöglicht der Laserpointer direkte Interaktion über größere Distanzen, wie zum Beispiel mit einer Projektionsleinwand. Das grundlegende Prinzip ist stets das gleiche. Im ersten Schritt wird mit Hilfe einer Kamera ein Laserpunkt lokalisiert. Das Ermitteln der Position nennt man Tracking. Der zweite grundlegende Schritt ist, die gewonnenen Positionsdaten in Interaktionstechniken zu verarbeiten. K IRSTEIN und M UELLER [1] stellten ein System vor, bei dem eine Kamera eine Projektionsfläche filmt und auf dieser einen Laserpunkt erkennt und lokalisiert. Ist das Kamera-Projektor-System kalibriert, so lässt sich die Position des Laserpunktes aus dem Kamerabild ins Koordinatensystem des Projektors transformieren und als Cursorposition verwenden. Es hat sich herrausgestellt, dass eine einfache Abbildung des Zustandes des Laserpointers (an/aus) auf die Mousetaste nicht hinreichend ist. O LSEN und N IELSEN [2] entwickelten 5 2 Verwandte Arbeiten weiterführende Zustände, wie beispielsweise das Stillhalten über einen gewissen Zeitraum (DWELL) und demonstrierten, wie mit Hilfe dieser effektive Selektion in Listen und Auswahlmenüs, sowie Eingabe von Zeichen als GraffitiGesten bewerkstelligt werden kann. Bei der Gestaltung solcher Interaktionskonzepte muss stets auf den Menschen und dessen Fähigkeiten und Einschränkungen Rücksicht genommen werden. P ECK [3] führte eine Benutzerstudie durch, um an geeignete Schwellwerte zu gelangen, wie lange sich der Laserpunkt in einem wie kleinen Toleranzbereich befinden muss, sodass man von einer bewussten Entscheidung des Benutzers ausgehen kann. Diese Parameter sind unter anderem abhängig von der Distanz zum Display. M YERS u.a. [4] haben ebenfalls mit Hilfe einer Evaluation neben Parametern für die sinnvolle Gestaltung eines Laserpointer Interaktions Systems – wie zum Beispiel Toleranzbereiche, die das Zittern der menschlichen Hand berücksichtigen – auch die Form des Laserpointers berücksichtigt und mit verschiedenen Griffen ausgestattete Laserpointer gegeneinander getestet. Das Zittern der menschlichen Hand, wie auch die Latenz jeder Kamera führen zu Inkonsistenz zwischen dem Laserpunkt, den das Auge sieht und dem dargestellten Cursor. Um dem Benutzer diese Irritation zu ersparen gibt es die Möglichkeit, einen Infrarot-Laser zu verwenden, dessen Wellenlänge für das menschliche Auge nicht sichbar ist. C HENG und P ULO [5] haben ein solches System vorgestellt. Das Prinzip bleibt das selbe, nur dass der Benutzer den Laserpunkt nicht sehen kann während eine Infrarot-Kamera ihn erfasst. In einer Evaluation haben C AVENS u.a. [6] einen Laserpointer mit einer für den Menschen sichtbaren Wellenlänge gegen einen Infrarot-Laserpointer in zwei einfachen Tasks getestet und herausgefunden, dass der sichtbare Laserpointer dem Infrarot-Laserpointer signifikant überlegen ist – trotz des Problems der Inkonsistenz. Wie Laserpointer-Interaktion auch auf großen zusammengesetzten Displays funktionieren kann, zeigten A HLBORN u.a. [7]. Dabei werden mehrere Kameras verwendet die entsprechend kalibriert werden müssen. Auch das parallele, kollaborative Arbeiten mehrerer Benutzer an einem Display ist möglich. Dabei werden die Laserpunkte diskriminiert durch verschiedene Farben, oder mit 6 2 Verwandte Arbeiten dem System synchronisierte Blinkmuster [8][9]. Auch der Weiterentwicklung des Laserpointers widmen sich einige Arbeiten. So entwickelten O H und S TU ERZLINGER [9] einen computer controlled laser pointer, dessen Laser vom Com- puter gesteuert werden kann, um die zuvor genannten Blinkmuster für Mehrbenutzeranwendungen erzeugen zu können. Desweiteren verfügt dieser, wie auch der von B I [10] vorgestellte Laserpointer, über zwei Knöpfe, die die Funktion der Maustasten haben. Diese erübrigen weiterführende Zustände, um ein Klicken zu simulieren, da ein neuer, diskreter Freiheitsgrad hinzugefügt wurde. Um an weitere kontinuierliche Freiheitsgrade zu gelangen, entwickelten M ATVEYEV und G ÖBEL [11] zunächst einen Laserpointer, dessen Laserstrahl mit Hilfe einer Optik in zwei Strahlen aufgeteilt wird. Somit lassen sich neben der zweidimensionalen Position zusätzlich der Abstand zwischen Laserpointer und Oberfläche, sowie die Rotation um die Blickachse (Roll) bestimmen. Noch im selben Jahr veröffentlichten sie eine Weiterentwicklung, bei welcher der Laserstrahl in drei einzelne Strahlen unterteilt wird [12]. Zwei der Strahlen werden – wie gehabt – verwendet, um vier Freiheitsgrade zu erlangen. Ihr Divergenzwinkel ist konstant, während der des dritten Strahles mechanisch variierbar ist. Diese Varianz wird als Ersatz für zwei Maustasten verwendet, wobei ein erhöhen des Winkels auf den Tastendruck der einen Taste abgebildet wird und ein Verringern auf die andere. Allen vorgestellten Arbeiten ist gemein, dass sie von einem planaren Display, wie einer Projektionsleinwand in einem Konferenzraum, ausgehen. In der Virtuellen und auch der Erweiterten Realität sind jedoch nicht planare, immersive Displays, wie eine CAVE [13] oder ein gewöhnlicher Raum [14], gebräuchlich. V OIDA u.a. [15] haben in einer Wizard of Oz-Studie Probanden die Aufgabe gestellt, mit mehreren im Raum verteilten Displays zu interagieren. Dabei wurde den Probanden freigestellt, wie sie dies tun (verbal, mit Händen und Füßen ...). Angeblich würde ein Programmierer die vom Probanden definierte Interaktionstechnik implementieren. Obwohl die Verwendung eines Laserpointes nicht vorgeschlagen wurde, entschieden sich zwei Probanden, den Laserpointer zu verwenden, den der Erklärende während der Instruktion verwendete. In diesem Fall wurde die Laserpointer Interaktion – wie alle anderen Interaktionstechniken auch – von einem Wizard of Oz, also einem Menschen umgesetzt. 7 2 Verwandte Arbeiten Diese Arbeit stellt ein System vor, das Laserpointer-Tracking in realen Umgebungen ermöglicht. Der Interaktionsbereich ist nicht auf eine planare Fläche – wie eine Leinwand – beschränkt, sondern kann geometrisch komplex und den Benutzer umgebend sein. Das System ist universell einsetzbar und deckt als Spezialfall auch Laserpointer-Tracking auf einer planaren Leinwand ab. Auch der Einsatz in immersiven VR-Displays, wie der CAVE, oder dem Dome ist denkbar. 2.2 Einsatz von Pan-Tilt-Zoom Kameras Ihren Ursprung haben pan-tilt-zoom Kameras in der Videoüberwachung. Sie werden dort eingesetzt, um an öffentlichen Plätzen oder in Gebäuden Personen zu verfolgen. Ursprünglich war dazu ein Mensch notwendig, der die Kamera steuert. Heutzutage lassen sich Menschen jedoch computergesteuert, automatisch tracken. Bereits 1995 stellte G OODRIDGE ein PTZ-Kamera System vor, welches in der Lage ist, einen Menschen zu tracken [16]. Die Erkennung basiert dabei auf der Generierung von Differenzbildern. Um mehrere Objekte parallel tracken zu können, verwenden U KITA und M ATSUYAMA [17] mehrere PTZ-Kameras. So lässt sich, zusätzlich durch Triangulierung, die dreidimensionale Position der beobachteten Objekte, oder Menschen bestimmen. Ein hybrides System, bestehend aus einer PTZ-Kamera und einer zweiten Kamera, mit einem großen Öffnungswinkel, wurde von Z HOU u.a. [18] vorgestellt. Dabei herrscht eine Master-Slave-Beziehung zwischen den beiden Kameras. Die statische Kamera mit großem Blickfeld agiert als Master und befiehlt der PTZ-Kamera, interessante Bereiche in höherer Auflösung zu erfassen. Somit soll dieses Überwachungssystem detailiert biometrische Informationen der beobachteten Personen offenbaren, die allein durch die statische MasterKamera nicht zu erfassen sind. Um große Areale, wie etwa eine Bahnhofshalle, zu überwachen sind wesentlich mehr Kameras notwendig. Q URESHI und T ERZOPOULOS [19] stellen ein System vor, dass eine Vielzahl von Kameras integriert. Sowohl PTZ-Kameras, als auch Fischaugenkameras überwachen da- 8 2 Verwandte Arbeiten bei eine Computergrafik-Simulation einer Bahnhofshalle und tracken einzelne Personen. Neben dem Einsatz in der Videoüberwachungstechnik spielen PTZ-Kameras eine Rolle in kooperativen Videokonferenzen. Befinden sich in einem Raum mehrere Personen, so ist auf der Remoteseite oft nicht klar, wer auf der anderen Seite gerade spricht. Y OSHIMI und P INGALI [20] verwenden mehrere Kameras und Mikrofone, um den aktuellen Sprecher zu lokalisieren. Die PTZ-Kamera dient in diesem Fall dazu, den Sprecher in einer Nahaufnahme zu zeigen. Mit einem ähnlichen System zeigen S TRUBBE und L EE [21], wie der Sprecher getrackt werden kann, sodass dies für die menschliche Wahrnehmung angenehm ist. Sie sprechen dabei von einem automatic cameraman. Liao et al. [22] erweitern das Kamerabild mehrerer PTZ-Kameras in einer Videokonferenzsituation um Interaktionsmöglichkeiten. Sie verwenden sogenannte FlySPEC [23] Kamerasysteme, welche hybride Kamerasysteme sind, die sich aus einer PTZ-Kamera und einer Kontextkamera zusammensetzen. Die Interaktion sieht zum einen vor, die PTZ-Kameras zu steuern, erlaubt aber auch die Interaktion mit realen Objekten im Kamerabild. So ist es zum Beispiel möglich, eine Präsentation im Kamerabild von einem Computer auf eine Projektionsleinwand zu ziehen, was dazu führt, dass diese dort projiziert wird. Es gibt zahlreiche weitere Arbeiten zu Videoüberwachung und Videokonferenzsystemen, bei denen PTZ-Kameras Menschen oder Objekte tracken, die jedoch den Rahmen dieses Kapitels überschreiten würden. Deshalb wurden hier nur exemplarische Beispiele herausgegriffen. PTZ-Kameras werden jedoch nicht nur zum Tracken verwendet, sondern finden auch Einsatz in anderen Gebieten. Chen u.a. [24] verwenden eine PTZKamera, um ein Projektorarray zu kalibrieren. Die Kamera muss dazu nicht kalibriert sein, da das Kalibrierungsverfahren nur relative Bezüge zwischen einzelnen Projektoren berücksichtigt – keine absoluten. P INHANEZ u.a. [25] verbinden eine PTZ-Kamera mit einem ebenfalls schwenk- und neigbaren Projektor, um einen räumlich nicht gebundenen Touchscreen zu erzeugen. Dabei wird die PTZ-Kamera verwendet, um Handbewegungen zu erkennen. Durch 9 2 Verwandte Arbeiten direktes Berühren der Oberfläche mit der Hand kann mit dem projizierten Touchscreen interagiert und es bewegt werden. Da PTZ-Kameras – wenn auch nicht zeitparallel – ein sehr großes Frustum besitzen, bietet es sich an, dies zu nutzen um Panoramabilder zu erzeugen. H EIK KILÄ und P IETIKÄINEN [26] machen sich dies zu Nutzen und stellen ein Ver- fahren vor, das es ermöglicht, aus vielen einzelnen Bildern einer PTZ-Kamera, ein konsistentes Mosaik zu generieren. Dabei werden Korrespendenzen von Features in den einzelnen Bildern verwendet um sie korrekt zu einem großen Bild zusammen zu fügen. Ein solches Mosaik erlaubt es einem, selbst wenn es einen 360◦ × 180◦ -Rundumblick ermöglicht, nur die Betrachtung von einem Standpunkt aus – dem der Aufnahme. Um den Standpunkt des Betrachters ändern zu können benötigt man Informationen über die Geometrie der Szene. B AHMUTOV u.a. [27] verwenden eine manuell schwenk- und neigbare Kame- ra, in Verbindung mit einem Lasermodul, zur Akquise von Räumen innerhalb eines Gebäudes. Das Lasermodul ist mit einem Beugungsgitter ausgestattet und erzeugt dabei ein Feld von Laserpunkten auf den Oberflächen. Ein Benutzer schwenkt und neigt die Kamera, deren Orientierung mit Hilfe zweier Sensoren gemessen wird, manuell. Anhand der Laserpunkte im Kamerabild lassen Tiefenwerte berechnen die, zusammen mit der bekannten Orientierung der Kamera, Rückschluss auf dreidimensionale Punkte der Geometrie liefern. Der Benutzer kann bestimmen, welche Bereiche er mit einer hohen Auflösung abtasten will und welche durch ein einfaches Viereck zu beschreiben sind. Dieses Verfahren verhindert die Überabtastung planarer Oberflächen. Das Resultat nennen sie depth enhanced panorama (DEP) und ist ein texturiertes Geometriemodell der Szene. In einer weiteren Arbeit [28] erweitern sie das Verfahren auf gesamte Gebäude, die aus mehreren DEPs zusammengesetzt werden. Das in dieser Arbeit präsentierte System verbindet ein hybrides Kamerasystem, wie es zum Tracking verwendet wird, mit einem Gerät zur Akquise der umgebenen Szene. Die Szenenakquise funktioniert vollautomatisch und bedarf keiner manuellen Steuerung. Ein adaptives Verfahren verringert die Überabtastung planarer Oberflächen, während hochfrequente Geometrie erhalten bleibt. 10 3 Setup Dieses Kapitel beschreibt das Setup, auf dem die gesamte Arbeit beruht. Zunächst werden die Anforderungen an das zu entwickelnde Kamerasystem definiert. Anschließend wird ein daraus resultierender Entwurf, und der Prototyp, der in dieser Arbeit verwendet wurde, vorgestellt. Es wird erläutert, aus welchen Komponenten dieser besteht und wie diese verbunden werden. Abschließend wir gezeigt, welche Daten sowohl innerhalb des Systems, als auch zwischen System und Computer transferiert werden müssen und wie das realisiert wird. 3.1 Anforderungen Gesucht ist ein Kamerasystem, das den Lichtpunkt eines Laserpointers in seiner gesamten Umgebung finden, lokalisieren und verfolgen kann. Eine handelsübliche Kamera bietet diese Möglichkeit nicht, da sie ein begrenztes Frustum besitzt und somit den Laserpunkt verliert, sobald dieser sich ausserhalb des Frustums befindet. Es gibt sogenannte Fischaugen-Objektive, die zu einem sehr großen Frustum mit einem Öffnungswinkel von mehr als 180◦ , führen. Eine solche Kamera ist geeignet, die gesamte Umgebung, mit Ausnahme des Bodens, zu erfassen. Jedoch ist die Auflösung herkömmlicher Kameras nicht ausreichend groß, um mit einem Fischaugen-Objektiv zu einer hinreichenden räumlichen Auflösung für Laserpointer-Tracking zu gelangen. Eine andere Möglichkeit besteht darin, eine Kamera motorgestützt zu bewegen. Sogenannte pan-tilt-zoom (PTZ) Kameras können immer nur einen definierten Teil ihrer Umgebung in einer wählbaren Auflösung erfassen. Sie sind gut geeignet, um einen Laserpunkt mit einer großen Genauigkeit zu lokalisieren, haben 11 3 Setup aber den Nachteil, dass sie, sobald sie den Laserpunkt verloren haben – zum Beispiel weil er abgesetzt und an anderer Stelle wieder eingeschaltet wurde – aufwändig nach ihm suchen müssen. Sinnvoll ist also ein hybrides Kamerasystem, das eine PTZ-Kamera mit einer Fischaugen-Kamera verbindet. Die PTZ-Kamera dient als Detailkamera und lokalisiert den Laserpunkt mit einer hohen Genauigkeit, während die FischaugenKamera als Kontextkamera fungiert, die den Laserpunkt grob lokalisiert, wenn die Detailkamera ihn verloren hat. 3.2 Systemaufbau Das Kamerasystem setzt sich im Wesentlichen zusammen aus der schwenkund neigbaren Detailkamera und der Kontextkamera. Um das Schwenken und Neigen zu ermöglichen, werden zwei Rotationsachsen von je einem Schrittmotor angetrieben. Desweiteren befindet sich zur automatischen Kalibrierung auf der Detailkamera ein Lasermodul. Es schwenkt und neigt mit der Detailkamera und wird zur Tiefenmessung verwendet. Das Lasermodul wird – wie auch die Schrittmotoren – von Microcontrollern gesteuert. Die Kontextkamera, die senkrecht nach oben orientiert ist, befindet sich oberhalb der Detailkamera, um Verdeckungen zu vermeiden. Aus diesem Grunde dreht sich die Kontextkamera bei Rotation der Detailkamera um die senkrechte Achse mit. Um das System zu steuern, ist es mit einem Computer verbunden. 3.3 Prototyp Für diese Arbeit wurde ein Prototyp des Kamerasystems entwickelt. Dieser wurde von Ferry Häntsch konstruiert, der ebenfalls die Microcontroller programmiert hat. Dieser Prototyp (vgl. Abbildung 3.1) besteht aus folgenden Komponenten: Detailkamera SANTEC VTC-622P 12 3 Setup Lasermodul Kontextkamera Detailkamera Schrittmotor Abbildung 3.1: Foto des Prototypen • Auflösung 470TVL, Videonorm PAL, 720 ∗ 576 Pixel • Integriertes Motor-Zoom Objektiv • Ansteuerung über RS-232 • Brennweite 3, 9 − 85, 8mm, 8× digital Kontextkamera PAL-CCD Kamera mit Fischaugen-Linse • Auflösung 470TVL, Videonorm PAL, 720 ∗ 576 Pixel • Brennweite 2, 1mm Schrittmotoren Bipolare Schrittmotoren • 16-fach Microstepping • Winkel 1,8◦ (200 Schritte/Umdrehung) Lasermodul LDM650-100 • 80mW • 650 − 658nm Wellenlänge (rot) Microcontroller auf Hauptplatine Atmel ATMega32 Schrittmotorcontroller Trinamic TMC222 Neben dem Kamerasystem findet ein Computer Verwendung, um das Kamerasystem zu steuern. Außerdem wird im Kapitel 5 ein Laserpointer verwendet, 13 3 Setup dessen Laserpunkt getrackt wird. Diese Komponenten sind im verwendeten Setup folgende: Computer hp workstation xw4000 • 2 TV Karten (Pinnacle PCTV Stereo PAL Capture Device) R 4 CPU 2,40Ghz • Pentium • 1,0GB RAM Laserpointer • 35mW • 532nm Wellenlänge (grün) Detailierte Schaltpläne der Hauptplatine sowie der Schrittmotorcontroller sind in Anhang B zu finden. 3.4 Datenübertragung und Kommunikation Abbildung 3.2 zeigt in einem Blockschaltbild, wie die einzelnen Komponenten zusammenhängen. Sowohl innerhalb des Systems, als auch zwischen System und Computer, werden Daten übertragen. Der Computer (1) bezieht die Kamerabilder der Kontextkamera (2), sowie der Detailkamera (4). Weiterhin kommuniziert er sowohl mit der Detailkamera, als auch mit der Hauptplatine des Kamerasystems (3) über die RS-232 Schnittstelle. Innerhalb des Systems steuert ein Microcontroller auf der Hauptplatine das Lasermodul (5) und schickt über die I2 C Schnittstelle den beiden Schrittmotorcontrollern (6, 7) Signale. Diese steueren wiederum die beiden Schrittmotoren (8, 9). 3.4.1 Kommunikation zwischen Computer und System Der Computer spielt die Rolle des Masters. Er ist unmittelbar verbunden mit der Kontextkamera, der Hauptplatine, sowie der Detailkamera. Diese sind jeweils Slaves, das heisst sie handeln und kommunizieren nur, wenn der Com- 14 3 Setup (8) (5) (9) (6) (2) (7) (3) (4) (1) Abbildung 3.2: Blockschaltbild: Computer (1); Kontextkamera (2); Hauptplatine (3); Detailkamera (4); Lasermodul (5); Schrittmotorcontroller (6, 7); Schrittmotoren (8, 9). puter sie dazu auffordert. Er bezieht die Kamerabilder der beiden Kameras, die als PAL Composite Signal ankommen. Digitalisiert werden diese mit Hilfe zweier eingebauter TV-Karten. Die resultierenden Bilder haben eine Auflösung von 720∗576 Pixeln und eine Farbtiefe von 24Bit (3∗8Bit RGB). Darüber hinaus wird die Detailkamera über die RS-232 Schnittstelle (Serieller COM-Port) gesteuert. So lassen sich beispielsweise Zoom oder Fokus verändern. Die Kommunikation ist symmetrisch, das heisst die Kamera gibt nach erfolgreicher Ausführung eines Befehls ein Feedback zur Bestätigung. Desweiteren ist es so möglich, Informationen über den aktuellen Zustand – zum Beispiel die Zoomstufe – der Kamera auszulesen. Eine weitere RS-232 Schnittstelle verbindet den Microcontroller auf der Hauptplatine mit dem Computer. Hier findet ebenfalls eine symmetrische Kommunikation statt. Befehle an den Microcontroller steuern mittelbar, über die beiden Schrittmotorcontroller, die Schrittmotoren und das Lasermodul, oder fordern Informationen über die aktuelle Position der Schrittmotoren an. 15 3 Setup 3.4.2 Kommunikation innerhalb des Systems Innerhalb des Kamerasystems agiert der Microcontroller auf der Hauptplatine als Master und das Lasermodul, sowie die beiden Schrittmotorcontroller als Slave. Die Triggerleitung des Lasermoduls ist an einen Ausgangspin der Hauptplatine angeschlossen, was diesem ermöglicht, ihn ein- und auszuschalten. Die Kommunikation mit den beiden Schrittmotorcontrollern erfolgt über die I2 C-Schnittstelle (Inter-Integrated Circuit). Diese ist ein serieller Bus, der dafür entwickelt wurde, Geräte an eine Hauptplatine anzuschließen. Die Schrittmotorcontroller sind wiederum intelligent und geben nicht nur die Schrittposition die sie bekommen an die Schrittmotoren weiter. Sie sorgen sich selbstständig um eine flüssige Beschleunigung bei Beginn und Ende jeder Bewegung und halten zu jeder Zeit die aktuelle Schrittposition ihres Schrittmotors. 3.4.3 Protokolle Die beiden RS-232 Schnittstellen kommunizieren je über ein definiertes Protokoll. Das Protokoll zwischen dem Computer und dem Microcontroller ist selbst entwickelt und sehr einfach. Dabei wird immer zunächst vom Computer an den Microcontroller ein String mit einem Befehl geschickt. Der Microcontroller bestätigt bei Gültigkeit und erfolgreichem Ausführen des Befehls anschließend dem Computer die Ausführung. Kommunikation zwischen Computer und Microcontroller Die Schrittposition wird absolut angegeben und ist mit zwei Bytes je Motor codiert. UBx und LBx sind das obere und untere Byte für den Motor, der die xAchse antreibt – UBy und LBy geben dem entsprechend die Schrittposition für die y-Achse an. Bekommt das Kamerasystem den Befehl, die Schrittmotoren zu rotieren, so wird dies unverzüglich eingeleitet. Da die Schrittmotoren eine begrenzte Geschwindigkeit besitzen, dauert es etwas, bis sie ihre Zielposition 16 3 Setup Befehl Byte1 Byte2 Byte3 Byte4 Byte5 ’s’ ’p’ ’i’ ’o’ ’r’ ’x’ UBx LBx UBy LBy ’p’ ’k’ UBx LBx UBy LBy Computer an Microcontroller Schrittposition der Motoren setzen Anfordern der aktuellen Position Lasermodul einschalten Lasermodul ausschalten Rückstellung Abmelden Microcontroller an Computer Schrittposition der Motoren Bestätigung Tabelle 3.1: Protokoll zwischen Computer und Kamerasystem erreichen. Um auch, während die Schrittmotoren in Bewegung sind die aktuellen Kamerabilder verarbeiten zu können gibt es die Möglichkeit, die aktuelle Schrittposition beider Motoren abzufragen. Auf Anfrage des Computers liefert das System die Position – wieder codiert durch je zwei Bytes codiert – zurück. Die Rückstellung dient dazu, die Motoren bei Beginn zu kalibrieren. Sie werden intern über relative Schritte gesteuert. Um mit absoluten Positionen arbeiten zu können gibt es je Achse einen Sensor, der eine Nullstellung der Motoren definiert. Auf Grund der Mechanik ist es möglich, dass die Schrittmotoren nach längerem Gebrauch einige Schritte verlieren. Ihre physikalische Schrittstellung variiert also von jener die der Computer annimmt. In diesem Fall kann die Rückstellung verwendet werden um den Fehler zu beheben. Da durch die vertikale Achse die Kabel für den oberen Schrittmotor, die Detailkamera und das Lasermodul verlaufen muss dafür Sorge getragen werden, dass sich diese Kabel im Laufe der Zeit nicht aufdrehen was sie beschädigen kann. Dazu dient die Abmeldung, welche diese Achse wieder auf ihre Nullstellung zurücksetzt. 17 3 Setup Kommnikation zwischen Detailkamera und Computer Die Kommunikation mit der Detailkamera erfolgt über ein Protokoll der Firma SANTEC, das nicht öffentlich ist und auf das somit hier nicht detailliert eingegangen werden kann. Die Kommunikation ist symmetrisch sodass es sowohl möglich ist, den Zustand der Kamera auszulesen als auch ihn zu verändern. Jeder Befehl an die Kamera wird bestätigt. Das Protokoll sieht eine Vielzahl von Befehlen vor. Für diese Arbeit wurde nur ein Bruchteil davon verwendet. Was diese bezwecken wird in Tabelle dargestellt. Befehl Beschreibung ZOOM_IN ZOOM_OUT ZOOM_READ FOCUS_AUTO FOCUS_MANUAL FOCUS_NEAR FOCUS_FAR STOP EXPOSURE_AUTO EXPOSURE_MANUAL SET_SHUTTER SET_IRIS OSD_OFF zoomt rein bis STOP oder maximale Zoomstufe erreicht ist zoomt raus bis STOP oder minimale Zoomstufe erreicht ist liest die aktuelle Zoomstufe aus Autofokus manueller Fokus bewegt Fokusebene zur Kamera bewegt Fokusebene von der Kamera weg stoppt Zoom und Fokus automatische Belichtung manuelle Belichtung setzt die Shutterzeit setzt die Iris schaltet das On-Screen-Display aus Tabelle 3.2: Verwendete Kommunikation mit der Detailkamera 3.5 Zusammenfassung Dieses Kapitel hat das Setup vorgestellt, auf welchem diese Arbeit basiert. Es liefert die Grundlage für alle kommenden Kapitel. Gezeigt wurde ein in Echtzeit reagierendes hybrides Kamerasystem, bestehend aus einer schwenk und 18 3 Setup neigbaren Detailkamera sowie einer Kontextkamera, das frei programmierbar ist. Bestandteil dieser Arbeit ist die Implementation und Steuerung dieses Kamerasystems sowie Beteiligung am Entwurf; nicht jedoch die Umsetzung und Konstruktion des Systems. Den Prototypen hat Ferry Häntsch konstruiert. 19 4 Kalibrierung Dieses Kapitel erläutert zunächst allgemein, was unter Kamerakalibrierung zu verstehen ist. Anschließend wird die Kalibrierung des Kamerasystems vorgestellt, die sich aus mehreren Schritten zusammensetzt. Anschließend werden verschiedene Verfahren der Kalibrierung des Kamerasystems in einer realen Umgebung vorgestellt und im Rahmen einer kleinen Evaluation verglichen. 4.1 Kamerakalibrierung Unter Kamerakalibrierung versteht man das Ermitteln von Parametern einer realen Kamera. Diese Parameter beschreiben eine Kamera im Pinhole-Modell vollständig. Sie lassen sich unterteilen in intrinsische und extrinsische Parameter. 4.1.1 Pinhole-Modell Das Pinhole-Kameramodell ist in einem kamerabezogenen Koordinatensystem definiert. Dabei ist der Ursprung das Projektionszentrum und die Blickrichtung z. Ein Objektpunkt P( X, Y, Z )T im Koordinatensystem der Kamera wird auf einen Bildpunkt p( x, y, z)T abgebildet durch perspektivische Projektion. x = X/Z y = Y/Z z=1 20 (4.1) 4 Kalibrierung y p Z P Y x v X u z Abbildung 4.1: Kamera im Pinhole-Modell Steht die Kamera nicht im Ursprung des Weltkoordinatensystems und ist auch nicht entlang der z-Achse ausgerichtet, so muss ein Objektpunkt in Weltkoordinaten zunächst in Kamerakoordinaten transformiert werden. P′ = RP + t (4.2) Mit Hilfe einer Rotationsmatrix R[3,3] und eines Translationsvektors t[3] wird der Objektpunkt in Weltkoordinaten P in Kamerakoordinaten P′ transformiert. Anschließend können die Pixelkoordinaten (u, v)T wie folgt berechnet werden. x = ( u − u0 ) / f u y = ( v − v0 ) / f v z=1 (4.3) In Matrixschreibweise kann die Abbildung von einem Objektpunkt P( X, Y, Z )T auf das zugehörige Pixel (u, v)T wie folgt beschrieben werden. 21 4 Kalibrierung X 1 0 0 0 u Y v = K 0 1 0 0 E Z 0 0 1 0 1 1 (4.4) Dabei ist K die intrinsische Matrix und E die extrinsische Matrix. fu K= 0 0 0 u0 fv v0 1 0 E= R t 0T 1 ! (4.5) 4.1.2 Intrinsische Kalibrierung Die intrinsische Kamerakalibrierung hat das Ziel, die intrinsischen Parameter der Kamera zu bestimmen. Diese beschreiben die Optik der Kamera, unabhängig davon, wo sie aufgestellt ist. • f u die horizontale Brennweite (in Pixeln) • f v die vertikale Brennweite (in Pixeln) • u0 die u-Koordinate des optischen Zentrums auf der Bildebene (in Pixeln) • v0 die v-Koordinate des optischen Zentrums auf der Bildebene (in Pixeln) Das Pixel p0 (u0 , v0 ) wird principal point genannt. Um die intrinsischen Kameraparameter zu bestimmen gibt es standardisierte Verfahren. Als Daten dienen Bilder, die die Kamera aus verschiedenen Perspektiven von einer geometrisch bekannten Szene aufgenommen hat. Nun können Korrespondenzen zwischen diskreten Punkten der bekannten Geometrie Pi und deren Abbildung im Kamerabild pi ermittelt werden. Anhand dieser Korrespondenzen werden die intrinsischen Kameraparameter numerisch approximiert. Reale Kameras arbeiten in der Regel mit Linsen und nicht einem pinhole, wie es das vorgestellte Kameramodell vorsieht. Aus herstellungstechnischen Grün- 22 4 Kalibrierung den ist eine Linse meist ungenau, sie führt zu einer Verzerrung des Kamerabildes. Diese Verzerrung setzt sich zusammen aus radialer und tangentialer Verzerrung. In der Implementierung werden jeweils nur die Koeffizienten erster und zweiter Ordnung berücksichtigt. Dies führt zu vier Parametern (k1 , k2 , p1 , p2 ), wobei k n den Koffizienten der radialen Verzerrung n-ter Ordnung und pn entsprechend den Koeffiziten der tangentialen Verzerrung n-ter Ordnung darstellt. Diese Parameter werden ebenfalls durch eine Kalibrierung, wie die zuvor beschriebene, ermittelt. Mit ihnen ist es anschließend möglich, das Kamerabild zu entzerren, das heisst, die Linsenverzeichnung zu negieren, sodass das Bild wieder in das pinhole-Modell passt. 4.1.3 Extrinsische Kalibrierung Die extrinsischen Parameter beschreiben die Position und Orientierung der Kamera in Weltkoordinaten. Sie bestehen aus einer 3 × 3 Rotationsmatrix R, sowie einem 3 × 1 Translationsvektor t. Diese beschreiben zusammen die Transforma- tion zwischen Kamerakoordinatensystem und Weltkoordinatensystem. R00 R01 R02 R = R10 R11 R12 R20 R21 R22 t0 t = t1 t2 (4.6) Die Bestimmung der extrinsischen Parameter nennt man pose estimation, also die Pose der Kamera wird ermittelt. Dazu gibt es verschiedene Verfahren. Allen ist gemein, dass Korrespondenzen zwischen bekannten Punkten, Pi in Weltkoordinaten und derer Abbildungen pi auf der Bildebene, als Grundlage dienen. Es gibt Verfahren, bei denen die intrinsischen Parameter (zumindest teilweise) vorgegeben werden und solche, die keinerlei Informationen darüber vorraussetzen und sie somit mitberechnen. 23 4 Kalibrierung 4.2 Statische Systemkalibrierung Die statische Kalibrierung des Kamerasystems setzt sich aus mehreren Kalibrierungsschritten zusammen. Sie müssen jedoch – sofern man das System nicht ändert – nur einmalig durchgeführt werden und sind unabhängig davon, wo sich das System befindet und wie es orientiert ist. 1. Intrinsische Kalibrierung der Detailkamera 2. Intrinsische Kalibrierung der Kontextkamera 3. Extrinsische Kalibrierung der Detailkamera im Systemkoordinatensystem 4. Extrinsische Kalibrierung der Kontextkamera im Systemkoordinatensystem 5. Extrinsische Kalibrierung des Lasermoduls 4.2.1 Intrinsische Kalibrierung der Detailkamera Da die Detailkamera über einen optischen Zoom verfügt, sind die intrinschen Parameter nicht konstant, sondern abhängig von der Zoomstufe. Die Kalibrierung wird für diskrete Zoomstufen durchgeführt und anschließend linear interpoliert. Zur Kalibrierung wurde das Programm GML C AMERA C ALIBRIERUNG T OOL BOX [32] verwendet. Es bietet ein übersichtliches grafisches Benutzerinterface und verwendet die OpenCV[31]-Funktion cvCalibrateCamera. Als Eingabe dienen Bilder, die die Kamera von einem Schachbrettmuster aufgenommen hat. Das Schachbrett muss in einer Dimension eine ungerade Anzahl von Feldern haben, sodass seine Orientierung eindeutig bestimmbar ist. Als Ausgabe liefert es sämtliche intrinsischen Parameter – jene des pinhole-Modells, sowie die Linsenverzeichnung. In dieser Arbeit wurde die intrinsche Kalibrierung der Detailkamera für 22 diskrete Zoomstufen, mit je 80 Bildern, von einem 5 × 8 Felder großen Schachbrett, 24 4 Kalibrierung 3000 f u [px] f v [px] u0 [px] v0 [px] 2500 s c s c c s c c 2000 1500 1000 c s c s c s c s c s c s c s c s c s c s c s c s c s c s c s c s c s c c s s s s 500 s s s s s s s s s s s s s s s s s s s s s c c c c c c c c c c c c c c c c c c c c c cs 0 4400 4500 4600 4700 Zoomstufe 4800 4900 Abbildung 4.2: Intrinsische Parameter in Abhängigkeit der Zoomstufe dessen quadratische Felder eine Kantenlänge von 3cm besitzen, durchgeführt. Die ermittelten Parameter des pinhole-Modells sind in Abbildung 4.2 dargestellt. Wie zu erwarten war verhält sich der principal point p0 (u0 v0 )T relativ konstant, während die Brennweiten f u und f v stetig mit der Zoomstufe steigen. Abbildung 4.3 zeigt die ermittelten Parameter der Linsenverzeichnung. Das kalibrierte Intervall der Zoomstufen entspricht nicht dem gesamten der Detailkamera möglichen Bereich. Bei Zoomstufen, die überhalb des kalibrierten Intervalls liegen, waren die Kalibrierungsergebnisse sehr unzuverlässig. Deshalb ist im Folgenden der Zoombereich der Kamera definiert als das kalibrierte Intervall. 4.2.2 Intrinsische Kalibrierung der Kontextkamera Da die Kontextkamera mit einem Fischaugen-Objektiv ausgestattet ist, eignet sich das eben vorgestellte Verfahren der intrinsischen Kalibrierung nicht. In 25 4 Kalibrierung 2.5 k1 k2 p1 p2 2 1.5 s c s c c c c c 1 c c 0.5 c c c c c c c c c c 0 ssc scs ssc ssc ssc scs ssc scs ssc ssc scs ssc ssc -0.5 -1 c ssc sc sc sc cs sc s cs s sc c c c -1.5 -2 -2.5 sc s c 4400 4500 4600 4700 Zoomstufe 4800 4900 Abbildung 4.3: Parameter der Linsenzerzeichnung in Abhängigkeit der Zoomstufe Anbetracht dessen, dass sie im Folgenden ausschließlich Anwendung findet wo keine große Genauigkeit erforderlich ist, wurde sie gemäß eines einfachen Kameramodells kalibriert. In der Anwendung ist interessant, wo sich ein Punkt relativ zur Kamera befindet, der im Kamerabild sichtbar ist: als der Vektor im Kamerakoordinatensystem, der beginnend im Ursprung in Richtung dieses Punktes zeigt. Um dies zu Ermitteln, wurden auf einer Halbkugel aus transparentem Kunststoff diskrete Polarkoordinaten eingezeichnet. Anschließend wurde die Halbkugel so über die Fischaugen-Kamera positioniert, dass der Nordpol der Halbkugel sich senkrecht über dem Mittelpunkt der Kamera befindet. Das so entstandene Kamerabild wurde daraufhin ausgewertet. Für jeden auf der Halbkugel eingezeichneten Punkt lässt sich anhand der Polarkoordinaten ein Vektor berechnen. Ursprünglich war geplant, anhand der diskreten Stützstellen bilinear in Polarkoordinaten zu interpolieren, um den zugehörigen Vektor für beliebige Pixel zu ermitteln. 26 4 Kalibrierung p’(u,v) v CC l γ p(u,v) p’(u,v) δ ǫ p(u,v) Abbildung 4.4: Einfaches Kameramodell der Kontextkamera. Auf der linken Seite ist ein Laserpunkt an der Pixelposition p’ zu sehen. Die rechte Abbildung zeigt den zugehörigen dreidimensionalen Vektor, der in die Richtung des Laserpunktes zeigt. Die Auswertung des Kamerabildes hat jedoch gezeigt, dass sich der Vektor einfacher bestimmen lässt. Der Vektor ~vcc , der im Koordinatensystem der Kontextkamera von ihrem Ursprung in Richtung eines Punktes P′ zeigt, lässt sich anhand der Pixelposition seiner Abbildung p′ (u, v)T im Kamerabild wie folgt bestimmen (vgl. Abbildung 4.4). • Der Vektor hat die Länge eins. |~vcc | = 1 • Der Winkel δ zwischen der Projektion des Vektors auf die Bildebene und dem Vektor ~i = (0 1)T ist gleich dem Winkel γ zwischen p′ − p0 und ~i. • Der Winkel ǫ zwischen ~vcc und der Normalen der Bildebene ist linear abhängig von der Länge l des Vektors p′ − p0 . Also ǫ = k · l. Für die vollständige Beschreibung der Kontextkamera in diesem einfachen Modell reicht also das Pixel p0 das der Abbildung des Nordpols im Kamerabild entspricht, sowie ein Faktor k, der die Skalierung zwischen der Länge l und dem Winkel ǫ beschreibt. Diese drei Parameter wurden anhand eines Kamerabildes ermittelt, welches aufgenommen wurde, während sich die Halbkugel über der Detailkamera befand. 27 4 Kalibrierung 4.2.3 Extrinsische Kalibrierung der Detailkamera im Systemkoordinatensystem Da das Kamerasystem in der Lage ist, die Detailkamera zu schwenken und zu neigen verändert sich die Position des optischen Zentrums der Kamera, sofern dieses nicht im Schnittpunkt der beiden Rotationsachsen liegt. Zu ermitteln ist also die Translation des optischen Zentrums der Kamera zum Rotationsursprung des Kamerasystems, der in Weltkoordinaten konstant ist. Um diese zu erhalten, führt man mehrfach eine extrinsische Kalibrierung der Detailkamera in Weltkoordinaten durch – bei veränderter Rotation und Neigung. Die auf diese Weise erhaltenen Punkte für die Position des optischen Zentrums liegen theoretisch auf einer Kugel, deren Zentrum der Rotationsursprung des Systems ist. In der Praxis ist dies auf Grund von Ungenaugigkeiten nicht ganz der Fall, jedoch eignet sich das Verfahren, um einen Translationsvektor zu approximieren. Neben der Translation ist natürlich die Rotation zwischen System- und Kamerakoordinatensystem in der Anwendung nachher wichtig. Diese muss jedoch nicht kalibriert werden, da sie sich durch die Schrittposition der beiden Schrittmotoren ergibt und anhand der beiden Winkel α und β, welche die Rotation der Schrittmotoren darstellen, errechnen lässt. 4.2.4 Extrinsische Kalibrierung der Kontextkamera im Systemkoordinatensystem Die Position der Kontextkamera, und somit der Translationsvektor der Transformation zwischen System- und Kamerakoordinaten, ist im Kamerakoordinatensystem konstant. Er wurde zur Kalibrierung einmalig von Hand vermessen. Die Rotation ist wiederum abhängig vom Winkel α und lässt sich berechnen. 28 4 Kalibrierung 4.3 Dynamische Systemkalibrierung Alle bislang vorgestellten Kalibrierungsmethoden sind statisch und müssen nur einmalig durchgeführt werden. Sie sind unabhängig vom Weltkoordinatensystem, da sie nicht berücksichtigen, wo sich das Kamerasystem in welcher Orientierung befindet. Man kann also von intrinsischen Parametern des Kamerasystems sprechen – nicht zu verwechseln mit intrinsischen Kameraparametern. Die dynamische Systemkalibrierung ist die einzige, die durchgeführt werden muss, wenn man das System an einen neuen Bestimmungsort stellt. Ziel ist es, zu bestimmen, wo sich das Kamerasystem in seiner neuen Umgebung (in Weltkoordinaten) befindet und wie es orientiert ist. Im folgenden Abschnitt werden zwei grundsätzlich verschiedene Möglichkeiten dieser Kalibrierung vorgestellt. Zum einen die klassische computer vision basierte pose estimation mit Erweiterungen, zum anderen ein geometriebasiertes Verfahren, in dem das Kamerasystem eigenständig Geometriepunkte der Umgebung abtastet und diese anschließend auf ein Referenzmodell bezieht. 4.3.1 Computer Vision basierte Techniken Es gibt verschiedene Computer Vision basierte Verfahren zur extrinsischen Kamerakalibrierung in einer geometrisch bekannten Umgebung. Allen ist gemein, dass sie mit bekannten Punkten in der Geometrie und deren Abbildung auf der Bildebene arbeiten. Man benötigt also neben einem Algorithmus Featurepunkte und ein Kameramodell zur pose estimation. Diese können sein: Featurepunkte • natürliche Features (z.B.: Ecken, Kanten) • synthetische Features (z.B.: Schachbrett) Kameramodell 29 4 Kalibrierung • Detailkamera als Pinholekamera • Kamerasystem als Pinholekamera (virtuelle Bildebene) Natürliche Features haben den Vorteil, dass sie nativ vorhanden sind. Allerdings ist es oft schwierig, ausreichend natürliche Features in einem Kamerabild zu finden. Je einfacher die Umgebungsgeometrie, desto weniger Kanten und Ecken gibt es. Außerdem müssen natürliche Features vom Benutzer selektiert werden, da sie nicht automatisch erkannt werden können. Das führt nicht nur zu einer längeren Kalibrierungsdauer, sondern birgt die Gefahr von Fehlern und Ungenauigkeiten, da die Features entweder im Kamerabild angeklickt werden, oder mit dem Laserpointer im Raum markiert werden müssen. Die Genauigkeit ist also auch abhängig von der manuellen Feinmotorik des Benutzers. Dagegen sind synthetische Features – wie beispielsweise ein Schachbrett – vom Computer automatisch subpixelgenau erkennbar. Sie bieten eine Vielzahl von Featurepunkten auf kleinem Raum. Allerdings ist es nicht damit getan, ein oder mehrere Schachbretter in die Geometrie zu kleben, sondern die Position und Orientierung jedes Schachbettes muss von Hand ermittelt werden. Nur so kommt man an die Koordinaten der Featurepunkte in Weltkoordinaten. Im folgenden werden drei Methoden der pose estimation vorgestellt. Diese sind: 1. Ein Schachbrett bei statischer Detailkamera 2. Mehrere Schachbretter bei beweglicher Detailkamera 3. Natürliche Featurepunkte bei beweglicher Detailkamera (virtuelle Bildebene) Pose Estimation bei statischer Detailkamera Verfahren, bei denen die Orientierung der Detailkamera statisch ist, liefern die Translation ~tw2cd 1 und Rotation Rw2cd im Koordinatensystem der Detailkame1 w2cd : Welt- zu Detailkamerakoordinaten-Transformation 30 4 Kalibrierung ra. Sie stellen also eine Transformation aus dem Weltkoordinatensystem in das Detailkamerakoordinatensytem dar. Ziel ist es jedoch, die Transformation zwischen System- und Weltkoordinaten zu bekommen. Also benötigt man die Transformation von Detailkamera in Systemkoordinaten (~tcd2s und Rcd2s )2 . Daraus lässt sich sich die Transformation aus dem System- ins Weltkoordinatensystem (~ts2w und Rs2w )3 wie folgt berechnen. Rs2w = R′w2cd · R′cd2s (4.7) ts2w = R′w2cd · tw2cd + tcd2s (4.8) Dieses Verfahren ist einfach und schnell, jedoch – wie später in der Evaluation zu sehen sein wird – liefert sie keine genauen Ergebnisse. Die Kalibrierung liefert zwar für die aktuelle Orientierung der Detailkamera eine gute Genauigkeit, jedoch kommt es zu großen Misregistrierungen sobald diese geändert wird. Pose Estimation bei beweglicher Detailkamera Es liegt die Idee nahe, die pose estimation mehrfach für verschiedene Orientierungen des Kamerasystems durchzuführen. Anschließend werden die verschiedenen Kalibrierungen, die ja jeweils für die Orientierung, in der sie entstanden sind, eine gute Übereinstimmung mit der Realität zeigen, miteinander verbunden. Dazu wurden zwei Möglichkeiten durchgeführt. • Arithmetisches Mittel aller Kalibrierungen • Interpolation zwischen den Kalibrierungen Mit Hilfe mehrerer, an verschiedenen Stellen der Wand, montierter Schachbrettmuster werden mehrere extrinische Kalibrierungen durchgeführt und als 2 cd2s 3 s2w : Detailkamera- zu Systemkoordinaten-Transformation : System- zu Weltkoordinaten-Transformation 31 4 Kalibrierung je ein sechsdimensionaler Vektor C ( x, y, z, α, β, γ)T abgespeichert. Dabei stellen x, y und z die ermittelte Position da, während α, β und γ die Rotation um die drei Achsen repräsentieren. Die Darstellung der Rotationsmatrix als Rotationsvektor ist eineindeutig und in der OpenCV[31]-Funktion cvRodrigues implementiert. Das arithmetische Mittel aller Kalibrierungen zu nehmen hat für drei Schachbrettmuster keine guten Ergebnisse geliefert. Ob dieses Verfahren bei wesentlich mehr Kalibrierungen zu besseren Ergebnissen führt ist fraglich; sicher ist jedoch, dass der Aufwand unzumutbar wird. Die Interpolation zwischen den Kalibrierungen setzt vorraus, dass zu jeder Kalibrierung die beiden Winkel der Schrittmotoren und damit die Orientierung der Detailkamera in Systemkoordinaten gespeichert werden. Anschließend wird zwischen den diskreten Kalibrierungen bilinear interpoliert, sodass jeder neuen Orientierung der Kamera eine interpolierte Kalibrierung zugeordnet werden kann. Virtuelle Bildebene Um das Problem, dass extrinsische Kalibrierungen, die auf der Kalibrierung in einer festen Orientierung der Detailkamera beruhen, keine guten Ergebnisse liefern, zu umgehen, scheint eine globale Kalibrierung sinnvoll zu sein. Dabei wird eine virtuelle Bildebene eingeführt. Diese liegt im Systemkoordinatensystem und ist unabhängig von Schwenken und Neigen der Detailkamera. Sie ist definiert durch E : y = 1. Dabei wird der normierte Ortsvektor des Featurepunktes ~e = (ex ey ez )T in Systemkoordinaten mit der Bildebene geschnitten. Die x- und z-Werte des Schnittpunktes vom Strahl, definiert durch ~v = λ~e mit der Bildebene E, werden zu den Koordinaten auf der Bildebene (u, v)T . (u, v)T = ( e x ez T , ) ey ey (4.9) So lässt sich die Pose des gesamten Kamerasystems, mit Hilfe von natürlichen Featurepunkten, die in der gesamten oberen Hemisphäre liegen können, be- 32 4 Kalibrierung P(X,Y,Z) p(u,v) u v Abbildung 4.5: Virtuelle Bildebene stimmen. Das Problem, dass die ermittelte Pose nur für die Kameraorientierung, in der sie ermittelt wurde, korrekt scheint, kann hier nicht auftreten, da es keine feste Kameraorientierung gibt. Ein Pose Estimation Algorithmus liefert in diesem Fall die Pose der virtuellen Kamera, also einer Kamera, deren Ursprung im Ursprung des Systemkoordinatensystems liegt, mit Blickrichtung nach oben (im Systemkoordinatensystem). Die ermittelte Transformation beschreibt also jene zwischen Weltkoordinatensystem und dem um 90◦ rotierten Systemkoordinatensystem. 4.3.2 Geometriebasiertes Verfahren Eine grundsätzlich verschiedene Möglichkeit der extrinsischen Kalibrierung wird in diesem Abschnitt vorgestellt. Dabei werden keine Schachbrett-Marker oder ähnliches benötigt. Mit Hilfe des auf die Detailkamera montierten Lasermoduls werden einzelne Punkte der das Kamerasystem umgebenen Geometrie erfasst. Diese werden zusammen mit einem Geometriemodell der Umgebung 33 4 Kalibrierung d t v v α fv Abbildung 4.6: Berechnung der Tiefe durch Triangulierung ,welches als Referenz dient, dazu verwendet, um die Position und Orientierung des Kamerasystems in der Umgebung zu bestimmen. Die Tiefe einzelner Punkte der Geometrie lassen sich durch die Abbildung des Laserpunktes im Kamerabild der Detailkamera bestimmen. Zusammen mit der bekannten Orientierung der Detailkamera und damit auch des Lasermodules lässt sich so der Punkt bestimmen. Um die Tiefe zu errechnen gibt es zwei mögliche Vorgehensweisen. 1. Tiefenmessung durch Triangulierung 2. Tiefenmessung durch Interpolation Verfahren der Tiefenmessung Mit Hilfe von Triangulierung lässt sich bei bekannten intrinsischen Parametern der Detailkamera und bekannter Position und Orientierung des Lasermoduls, relativ zur Detailkamera der Position des Laserpunktes im Kamerabild, eine Tiefe zuordnen. d = t · tan α Die Auflösung der Tiefe α = π/2 − arctan ∆d ∆v v − v0 fv (4.10) ist abhängig von der Tiefe und der Brennweite der Kamera f v . Um auf große Distanzen noch eine optimale Auflösung zu bekommen, ist die maximale Brennweite – also die größtmögliche Zoomstufe – zu 34 4 Kalibrierung wählen. Für diese lassen sich die intrinsischen Parameter allerdings nicht zuverlässig ermitteln (vgl. 4.2.1). Somit ist dieses Verfahren hier nicht praktikabel. Ohne Kenntnis der intrinsichen Kamerparameter lässt sich eine Tiefenmessung nur durch Interpolation diskreter, gemessener Tiefen realisieren. Dabei wird der Abbildungspunkt des Lasers, und die dazugehörige Tiefe für diskrete Abstände gespeichert und anschließend durch lineare Interpolation jeder neuen Abbildung des Laserpunktes im Kamerabild eine Tiefe zugeordnet. Kalibrierung des Lasermoduls Für diese Arbeit wurde die Position der Abbildung des Lasers in zwei verschiedenen Zoomstufen erfasst. Die eine Zoomstufe ist dabei jene mit dem größtmöglichen Zoom. Diese liefert die beste Auflösung für große Tiefen. Jedoch ist der Laserpunkt ab einer Tiefe von weniger als ca. 100cm im Kamerabild nicht mehr sichtbar. Der Punkt verschwindet nach oben aus dem Kamerabild, was eine Tiefenmassung unmöglich macht. Die zweite Zoomstufe ist so gewählt, dass sie den nicht abgedeckten Bereich (< 100cm) abdeckt. Zur Kalibrierung wurde eine Holzplatte mit einer Schrittweite von 10cm von einem Abstand von 50cm bis 650cm bewegt und jeweils der Schwerpunkt der Abbildung des Lasers festgehalten. Als Referenzwerte dienen die Tiefenmesswerte eines Distometers (L EICA DISTO). Sowohl bei der Kalibrierung, als auch der späteren Verwendung zur Messung der Tiefe, ist der Autofokus der Detailkamera ausgeschaltet und es wird eine konstante Fokusposition eingenommen. Dies ist notwendig, da der Autofokus große Probleme hat, den Laserpunkt zu fokussieren, und die ständige Varianz des Fokus den Schwerpunkt des Laserpunktes verändert. Aufnahme von Geometriepunkten Ist das Lasermodul eingeschaltet, so liegt die Abbildung dessen Laserstrahls im Kamerabild. Um die Position des Laserpunktes im Kamerabild zu finden wird die Iris und die Shutterzeit der Detailkamera soweit verkleinert, dass nur noch der Laserpunkt zu sehen und der Rest schwarz ist. Dies funktioniert, da das Lasermodul wesentlich heller ist als das Umgebungslicht. Anschließend werden 35 4 Kalibrierung alle Pixel p betrachtet, deren Intensität I ( p) über einem definierten Schwellenwert t liegt und von ihnen der Schwerpunkt gebildet. Dies führt zu einer subpixelgenauen Position p′ . p′ (u, v)T = ( n ui /n′ , ∑ i | I ( pi )>t n ∑ vi /n′ )T (4.11) i | I ( pi )>t Ist die Position im Kamerabild p′ (u, v)T bekannt, so kann die zugehörige Tiefe d durch lineare Interpolation der kalibrierten Stützstellen bestimmt werden. Da sich die horizontale u-Komponente des Laserpunktes über die verschiedenen Tiefen nur im Bereich von einem Pixel geändert hat, wird zur Interpolation ausschließlich die v-Komponente berücksichtigt. Anschließend kann der Punkt im Raum bestimmt werden. Die Rotation der beiden Schrittmotoren (α, β), und damit die Orientierung der Detailkamera, ist bekannt. Multipliziert man den Einheitsvektor (0 0 − 1)T mit der Rotationsmatrix, die die Rotation der Detailkamera beschreibt, so erhält man einen Einheitsvektor in Blickrichtung der Kamera. Diesen multipliziert man mit der interpolierten Tiefe d, um den Punkt im Systemkoordinatensystem zu bekommen. X cos(α) sin(α) sin( β) sin(α) cos( β) 0 0 cos( β) − sin( β) · 0 (4.12) Y = d· −1 − sin(α) cos(α) sin( β) cos(α) cos( β) Z Diese Berechnung berücksichtigt die Position des Laserpunktes nur für die Tiefe, nicht jedoch für die Richtung des Strahls. Das ist jedoch falsch. Um einen korrekten Richtungsvektor zu berechnen sind allerdings die intrinsischen Parameter der Kamera notwendig, deren Ermittlung in der größten Zoomstufe mit dem verwendeten Verfahren fehlschlägt. Um trotzdem eine genauere Richtung zu bekommen, wurde der vertikale Öffnungswinkel der Detailkamera gemessen, indem die Höhe des im Kamerabild sichtbaren Bereiches bei bekannter 36 4 Kalibrierung Distanz gemessen wurde. Als principal point wird, mangels Alternativen, der Mittelpunkt des Bildes angenommen. Mit diesen intrinsischen Parametern lässt sich die Position des Punktes wie folgt berechnen. ( u − u0 ) / f u d 0 cos( β) − sin( β) · (v − v0 )/ f v Y = · n − sin(α) cos(α) sin( β) cos(α) cos( β) −1 Z (4.13) X cos(α) sin(α) sin( β) sin(α) cos( β) ( u − u0 ) / f u n = ( v − v0 ) / f v −1 (4.14) Kalibrierungsverfahren Zur extrinsischen Kalibrierung wird die Geometrie in einer festgelegten Auflösung eingescannt. Das Resultat ist eine Punktwolke C, also eine Menge von Geometriepunkten P( X, Y, Z )T . Abbildung 4.7 zeigt eine solche zusammen mit den Ortsvektoren jedes Punktes. C = { P1 , P2 , . . . , Pn } (4.15) Die Referenzgeometrie G, auf welche diese Punktwolke passen soll, besteht aus Dreiecken T ( P1 , P2 , P3 ). Dabei definiert jedes Dreieck eine Ebene E. G = { T1 , T2 , . . . , Tm } T = { P1 , P2 , P3 } (4.16) Um bestimmen zu können, wie genau die Punktwolke auf die Referenzgeometrie passt, wird ein Fehler de definiert. Der Fehler ist der globale Abstand zwi- 37 4 Kalibrierung Abbildung 4.7: Erfasste Punktwolke mit Ortsvektoren schen der Punktwolke de und der Geometrie, definiert durch die Summe der minimalen euklidischen Distanzen zu allen Ebenen über alle Punkte P ∈ C. n de = e∈ E ∑ min ( Pk ֒→ e) (4.17) k =1 Dabei ist ( P ֒→ e) der Abstand des Punktes P zur Ebene e. Ziel der Kalibrierung ist es nun, eine Transformation für die Referenzgeometrie zu finden, so dass de minimal wird. Aus dieser Transformation lassen sich die extrinsischen Parameter des Kamerasystems bestimmen. Transformiert man die Geometrie und somit die Ebenen, so ändert sich der Fehler. Liegen alle Punkte der Punktwolke auf einer der Ebenen, so ist der Fehler de = 0. Dies wird allerdings auf Grund von Ungenauigkeiten nicht der Fall sein. Das Kalibrierungsverfahren läuft so ab, dass ein Minimierungsalgorithmus [29], durch Veränderung der Transformation, ein Minimum in einer sechsdimensonalen Funktion findet. Diese Funktion ist der Fehler in Abhängikeit von Translation und Rotation de (r x , ry , rz , t x , ty , tz ). Abschließend werden 38 4 Kalibrierung aus der gewonnenen Transformation ( Rw2s , tw2s ), die ein Minimum in der Fehlerfunktion verursacht hat, die extrinsischen Parameter berechnet. ts2w = R′w2s tw2s Rs2w = R′w2s (4.18) Um auf gute Ergebnisse zu kommen, benötigt der Minimierungsalgorithmus einen brauchbaren initial guess. Dieser wird zunächst von Hand gegeben. Eliminierung von Ausreissern In der Realität ist es oft so, dass sich in einem Raum Objekte befinden, die in seinem Geometriemodell nicht auftauchen. Das kann beispielsweise eine Heizung oder Mobiliar sein. Diese Objekte tauchen in der Punktwolke mit auf, im Geometriemodell nicht und können zu einem falschen Minimum führen. Das gleiche gilt für Ausreißer, die zum Beispiel durch spiegelnde oder transparente Oberflächen entstanden sind. Um diese Ausreißer zu eliminieren, wurden zwei Verfahren implementiert. Zum einen ein automatisches Verfahren, welches Ausreißer selbstständig erkennt und entfernt, zum anderen die manuelle Möglichkeit, Vertices aus der gescannten Punktwolke zu entfernen und, bei Bedarf, auch Dreiecke aus dem Referenzmodell zu entfernen. Automatische Eliminierung von Ausreißern Die automatische Methode funktioniert so, dass zunächst die Minimierung mit allen Punkten durchgeführt wird. Anschließend werden sämtliche Punkte, deren Fehler über dem durchschnittlichen Fehler liegt aus der Punktewolke entfernt. Anschließend wird ein zweites mal die Minimierungsfunktion verwendet. Als initial guess dient diesmal das Minimum des ersten Durchgangs. Manuelle Eliminierung von Ausreißern Manuell lassen sich einzelne Punkte der Punktewolke durch Selektion mit der Mouse löschen. Das gleiche gilt für die Dreiecke der Referenzgeometrie. Jene Dreiecke, deren korrespondierende Punkte der Punktewolke so falsch waren, 39 4 Kalibrierung Abbildung 4.8: Punktwolke und Geometriemodell ( a); initial guess (b); gefundenes Minimum (c). Die roten Punkte visualisieren Ausreißer, die im zweiten Minimierungsdurchgang nicht berücksichtigt werden. dass sie gelöscht wurden, werden einfach ebenfalls gelöscht. Zum einen, um ein eventuelles falsches Minimum zu verhindern und zum anderen auch, um die Minimierung etwas zu beschleunigen, da die Distanz zu diesen Dreiecken nicht mehr berechnet werden muss. Nach dem sämtliche Ausreißer entfernt wurden, wird die Minimierung wie gewohnt gestartet. Beschleunigung des Verfahrens Das Einscannen der Punktwolke kostet, auf Grund der Mechanik, Zeit. Pro Punkt werden in etwa 1,2 Sekunden benötigt. Die Anzahl der benötigten Punkte lässt sich minimieren, wenn Teile der Transformation vorgegeben werden. Setzt man etwa voraus, dass das Kamerasystem auf einer waagerechten Fläche steht, so hat die Fehlerfunktion statt sechs nur noch 4 Freiheitsgrade. In diesem Fall reichen fünf, in jeweils orthogonalen Richtungen, gemessene Geometriepunkte, um das Minimierungsverfahren durchzuführen. Voraussetzung ist – wie auch bei dem Verfahren ohne Vorgaben – stets, dass die Geometrie nicht symmetrisch ist. Im Extremfall einer Sphäre gibt es kein Minimum in der Fehlerfunktion, da die Rotation beliebig ist. 40 4 Kalibrierung 4.4 Analyse und Vergleich der Kalibrierungsverfahren Um dieses Kapitel abzuschließen, wurde eine Evaluation der vorgestellten Kalibrierungsverfahren zur extrinsischen Kalibrierung des Systems durchgeführt. Folgende Verfahren wurden in je zwei verschiedenen Umgebungen getestet. 1. Pose estimation bei statischer Detailkamera mit einem Schachbrettmuster 2. Pose estimation bei beweglicher Detailkamera mit drei Schachbrettmustern (interpoliert) 3. Pose estimation bei beweglicher Detailkamera mit drei Schachbrettmustern (arithmetisches Mittel) 4. Pose estimation des Kamerasystems bei beweglicher Detailkamera (virtuelle Bildebene) 5. Geometriematching mit einer Punktewolke von 400 Punkten und automatischer Ausreißerelimination 6. Geometriematching mit einer Punktewolke von 400 Punkten und manueller Ausreißerelimination 7. Geometriematching mit einer Punktewolke von 5 orthogonal aufgenommenen Punkten und der Vorgabe, dass sich das System auf einem waagerechten Untergrund befindet Die beiden Umgebungen waren Räume der Bauhausstraße 11, also reale Umgebungen. Zunächst wurde von beiden Räumen ein Referenzmodell erstellt. Dies geschah mit Hilfe eines Distometers und einer Wasserwaage. Da reale Umgebungen – insbesondere in einem Altbau – oft weder völlig planare, noch orthogonal aufeinander stehende Wände und Decken haben, ist diese Art der Gewinnung eines Referenzmodells unvermeidlich fehlerbehaftet. Die Referenzmodelle enthalten alle wesentlichen Oberflächen der Umgebung; Details wurden vernachlässigt. Anschließend wurden die Räume jeweils mit zehn Referenzpunkten ausgestattet, um anhand derer die Güte der Kalibrierungen zu messen. Die Position der Referenzpunkte wurde ebenfalls mit Hilfe von Distometer und Wasserwaage 41 4 Kalibrierung ermittelt. Anhang A zeigt Fotos der beiden Räume, sowie Bilder der Referenzmodelle. Nach jeder Kalibrierung wurde für jeden der zehn Referenzpunkte ermittelt, wo das Kamerasystem diese lokalisiert. Das Verfahren zur Berechnung der dreidimensionalen Position ist, wie im Kapitel 5 beschrieben, als befände sich ein Laserpunkt an den Referenzpunkten. Diese wurden jedoch manuell im Kamerabild mit der Maus angeklickt. Die euklidische Distanz zwischen der so ermittelten Position Pv ( Xv Yv Zv )T und der realen Position Pr ( Xr Yr Zr )T dient als Fehlerwert für diesen Referenzpunkt. e= q ( Xv − Xr )2 + (Yv − Yr )2 + ( Zv − Zr )2 (4.19) Neben dem Fehler, und damit der Genauigkeit, wurden die Zeitkosten gemessen. Dabei wurde die Zeit unterteilt in aktive und passive Zeit. Aktive Zeit beansprucht die Anwesenheit und Handlung eines Menschen, während passive Zeit jene Zeit beschreibt, in der das System selbstständig agiert. 4.4.1 Genauigkeit Welche Genauigkeit die verschiedenen Kalibrierungsmethoden in den beiden Testumgebungen je geliefert haben ist in Abbildung 4.9 zu sehen. Die pose estimation für ein einzelnes Schachbrett (1) zeigt in beiden Umgebungen mäßige Ergebnisse. Es gibt jeweils ein Minimum mit einem Fehler von weniger als einem Zentimeter, welches an Referenzpunkten in der Nähe des Schachbrettes auftritt. Je weiter die sich Orientierung ändert, desto größer werden die Fehler, sodass global gesehen ein großer Fehler existiert. Der Median der Fehler beträgt 16cm bzw. 21cm. Bei der interpolierten pose estimation (2), welche zwischen drei Kalibrierungen, je mit einem Schachbrett, interpoliert, unterscheiden sich die Ergebnisse in den beiden Umgebungen. In der ersten Evaluationsumgebung – dem Flur – liefert sie deutlich bessere Ergebnisse als das erste Verfahren. Dagegen verhält sich der Fehler in der zweiten Umgebung (SP-Lab) kaum besser. Der Median 42 4 Kalibrierung Evaluationsumgebung 1 (Flur) 0.45 0.4 0.35 0.3 0.25 Fehler [m] 0.2 0.15 0.1 0.05 0 1 2 3 5 4 Kalibrierungsverfahren 6 7 Evaluationsumgebung 2 (SP-Lab) 0.9 0.8 0.7 0.6 0.5 Fehler [m] 0.4 0.3 0.2 0.1 0 1 2 3 5 4 Kalibrierungsverfahren 6 7 Abbildung 4.9: Fehler der verschiedenen Kalibrierungsmethoden. Minimum, 0,25-Quartil, Median, 0,75-Quartil, Maximum. 43 4 Kalibrierung ist geringfügig kleiner, das Maximum dafür wesentlich größer. Auch hier gibt es in beiden Umgebungen ein geringes Minimum für Referenzpunkte nahe der Schachbrettmuster. Das Verfahren, das arithmetische Mittel der drei Kalibrierungen zu nehmen (3), hat in jedem Fall zu schlechten Ergebnissen geführt. Die virtuelle Bildebene (4) lieferte in der ersten Umgebung das beste Ergebnis während sie in der zweiten Umgebung weniger gut abschnitt. Dort benötigte sie auch mehrere Versuche, da der Minimierungsalgorithmus zunächst völlig verkehrte Minima lieferte. Sämtliche geometriebasierte Verfahren haben in der zweiten Umgebung die anderen übertroffen, während sie im Flur schlechte Ergebnisse lieferten. Das Problem hierbei war, dass sämtliche, im Flur aufgenommene, Punktwolken fehlerhaft waren. Der Laserpunkt war im Kamerabild wesentlich und größer und heller zu sehen – offenbar auf Grund der Oberfläche der Wände. Auf nahe Distanzen nahm der Punkt einen Großteil des Kamerabildes ein. Diese Abbildungen des Lasermoduls decken sich nicht mit jenen die zur Kalibration verwendet wurden. Daraus resultierten ungenaue Punktwolken und somit ungenaue Kalibrierungen. Dieses Problem ist vor dieser Evaluation nie aufgetreten und konnte ad hoc nicht behoben werden. In der zweiten Evaluationsumgebung zeigen die drei geometriebasierten Verfahren keine signifikanten Unterschiede in der Genauigkeit. Das automatische Entfernen von Ausreissern (5) zeigt ein ähnliches Verhalten wie die manuelle Eliminierung (6). Sämtliche geometriebasierte Verfahren basieren auf dem Minimierungsalgorithmus. Dieser liefert keine konstanten Ergebnisse, da er in lokale Minima geraten kann. Verwendet man mehrfach die selbe Punktwolke und das selbe Referenzmodell, so kommt der Algorithmus bei minimal verschiedenen initual guesses auf unterschiedliche Lösungen. Das zeiteffiziente Kalibrierungsverfahren, welches mit nur fünf Geometriepunkten arbeitet (7), führt in dem Beispiel zu einem vergleichbaren Ergebnis, ist jedoch sehr anfällig für falsche Minima. Die gemessenen Fehler ergeben sich aus der Summe vieler kleiner Fehler. Zu- 44 4 Kalibrierung nächst ist das Referenzmodell und die Referenzpunkte in ihm fehlerbehaftet. Das heißt, selbst eine perfekte Kalibration in diesem Modell führt zu Differenzen mit der realen Umgebung. Dazu kommt der Fehler, welcher in den der Kalibrierung zugrunde liegenden Daten. Bei den geometriebasierten Verfahren stecken Fehler in der Punktwolke und auch die intrinsischen Parameter die für eine pose estimation benötigt werden sind nicht fehlerfrei. Dazu kommt, dass die Minimierungsfunktion nicht zwangsläufig das globale Minimum der Fehlerfunktion ermittelt. Um an bessere Kalibrationsergebnisse zu kommen, müssen diese Fehler minimiert werden. 4.4.2 Geschwindigkeit Man mag zunächst denken, die Computer Vision basierten Kalibrierungen seien wesentlich schneller als die geometriebasierten Verfahren. Jedoch darf man nicht vergessen, dass diese eine Vorbereitung benötigen. Marker müssen ausgedruckt, aufgehangen und vermessen werden. All diese Vorbereitung fällt bei der geometriebasierten Kalibrierung weg, ebenso wie sämtliche manuelle Steuerung. Mit Ausnahme des manuellen initial guess funktioniert die geometriebasierte Kalibrierung vollkommen automatisch. Abbildung 4.10 zeigt die Dauer der verschiedenen Verfahren – aufgeteilt in aktive und passive Zeit. Das schnellste Verfahren ist jenes mit der virtuellen Bildebene. Dies setzt die Existenz von ausreichend natürlichen Features voraus. Die Verfahren die Schachbrettmuster benutzen beansprucht viel aktive Zeit in der Vorbereitung. Das Aufhängen und vorallem Vermessen der Muster dauert seine Zeit. Die eigentliche Kalibrierung geht dann sehr schnell. Bei einer erneuten Kalibrierung fällt die aktive Zeit dann weg, da die Schachbrettmuster bereits existieren. Die Aufnahme von einer Punktwolke mit 400 Punkten, wie sie verwendet wurde, dauert knappe zehn Minuten. Anschließend wird vom Benutzer ein initial guess durchgeführt und – je nach Verfahren – die Punktwolke manuell von Ausreißern befreit. Diese aktive Zeit beträgt etwa eine Minute. Anschließend 45 4 Kalibrierung 20 gesamte Zeit aktive Zeit 18 16 14 12 t[s] 10 8 6 4 2 0 1 2 3 5 4 Kalibrierungsverfahren 6 7 Abbildung 4.10: Dauer der verschiedenen Kalibrierungsverfahren wird der Minimierungsalgorithmus verwendet, der im Schnitt etwa 4 Minuten benötigt – die Dauer kann jedoch stark variieren. Die überwiegende Dauer ist also der passiven Zeit zuzuordnen. Eine Ausnahme macht die Kalibration mit nur fünf Geometriepunkten und der Bedingung, dass sich das System auf einem waagerechten Untergrund befindet. Das Scannen der fünf Punkte dauert nur 12 Sekunden und der Minimierungsalgorithmus läuft auch schneller, da der Fehler für weniger Punkte berechnet werden muss. 4.4.3 Resumee In der Evaluation wurden sieben Verfahren zur extrinsischen Kalibration des Kamerasystems in zwei Umgebungen verglichen. Dabei haben die geometriebasierten Verfahren im Schnitt einen weniger großen Fehler verursacht, als die auf Computer Vision Algorithmen zur pose estimation basierenden – vorrausgesetzt die Oberfläche lässt die Aufnahme einer Punktwolke zu. 46 4 Kalibrierung Zusammenfassend kann man sagen, dass die Ergebnisse der Kalibrierungsverfahren nicht zufriedenstellend sind. Die beste Kalibrierung im Test besitzt einen mittleren Fehler (Median) von ∼ 3cm. Dieser Fehler ist zu groß, um genaues Laserpointertracking zu bieten. Bessere Methoden müssen entwickelt werden, um zu adäquaten Kalibrierungsergebnissen zu kommen. 47 5 Laserpointer-Tracking Dieses Kapitel beschreibt, wie das kalibrierte System Laserpointer-Tracking ermöglicht. Es wird Schritt für Schritt erklärt, welche Berechnungen notwendig sind, um an die dreidimensionale Position des Laserpunktes in Weltkoordinaten zu gelangen. Dabei ist insbesondere auch wichtig, dass die Position kontinuierlich und in konstanter Auflösung ermittelt wird. Im einzelnen setzt sich das Tracking aus folgenden Schritten zusammen, wobei die Schritte 3 und 4 nur unter der Bedingung durchgeführt werden, dass die Position in den ersten beiden Schritten nicht ermittelt werden konnte – also der Laserpunkt nicht im Frustum der Detailkamera liegt. 1. Lokalisierung des Laserpunktes im Kamerabild der Detailkamera 2. Lokalisierung des Laserpunktes in Weltkoordinaten mit Hilfe der Detailkamera 3. Lokalisierung des Laserpunktes im Kamerabild der Kontextkamera 4. Lokalisierung des Laserpunktes in Weltkoordinaten mit Hilfe der Kontextkamera 5. Verfolgen des Laserpunktes und Wiederfinden bei Verlust 5.1 Lokalisierung 5.1.1 Lokalisierung im Kamerabild der Detailkamera Die Lokalisierung des Laserpointerpunktes erfolgt genau so, wie der Laserpunkt des Lasermoduls für das Einscannen der Umgebung erkannt wird (vgl. 48 5 Laserpointer-Tracking 4.3.2). Die Iris und die Shutterzeit der Detailkamera werden soweit verringert, dass im Kamerabild nur noch der Laserpunkt zu sehen und der Rest schwarz ist. Dies funktioniert, da der Laserpunkt wesentlich heller ist, als das Umgebungslicht. Anschließend werden alle Pixel p betrachtet, deren Intensität I ( p) über einem definierten Schwellwert t liegt. Von ihnen wird der Schwerpunkt p′ gebildet. Dies führt zu einer subpixelgenauen Position für den Laserpunkt im Kamerabild. p′ (u, v)T = ( n ui /n′ , ∑ i | I ( pi )>t n ∑ vi /n′ )T (5.1) i | I ( pi )>t Dabei ist n′ die Anzahl der Pixel deren Intensität über dem Schwellwert t liegt. Ist n′ = 0, so ist p′ nicht definiert. In der Praxis bedeutet dies, dass der Laserpunkt nicht im Kamerabild der Detailkamera zu sehen ist. Anderenfalls lässt sich die gewonnene Pixelposition p′ des Laserpunktes weiterverarbeiten, um an dessen dreidimensionale Position P zu gelangen. 5.1.2 Lokalisierung in Weltkoordinaten mit Hilfe der Detailkamera Um dem im Kamerabild der Detailkamera gefundenen Laserpunkt seine dreidimensionale Position zuordnen zu können, muss folgendes bekannt sein. • Intrinische Kameraparameter • Extrinische Kameraparameter • Mathematische Beschreibung der Umgebungsgeometrie Anhand der intrinsischen und extrinsischen Kameraparameter lässt sich ein Strahl definieren, der, beginnend im Ursprung des Kamerakoordinatensystems in Weltkoordinaten, in Richtung des Laserpunktes in Weltkoordinaten zeigt. Dieser kann abschließend mit der mathematischen Beschreibung der Umgebungsgeometrie (im Folgenden Geometriemodell genannt) geschnitten werden. Der Schnittpunkt wird als dreidimensionale Position des Laserpunktes angenommen. 49 5 Laserpointer-Tracking Zunächst wird ein Vektor ~vcd in Kamerakoordinaten berechnet, der, ausgehend vom Ursprung, auf die Abbildung des Laserpunktes auf der Bildebene p′ zeigt. Dabei sieht die Kamera entlang der negativen z-Achse und die positive y-Achse zeigt nach oben. ~vcd ( u − u0 ) / f u = ( v − v0 ) / f v −1 (5.2) Dieser Vektor wird anschließend durch Multiplikation mit der Rotationsmatrix, die durch die Neigung und Schwenkung der Detailkamera definiert ist, in das Systemkoordinatensystem transformiert. Durch multiplizieren des resultierenden Vektors in Systemkoordinaten mit der Rotationsmatrix der extrinischen Kalibrierung des Systems Rs2w , erhält man abschließend den in Weltkoordinaten transformierten Vektor ~vw . (5.3) ~vw = Rs2w · Rcd2s · ~vcd Rs2w wird bei der initialen Kalibrierung bestimmt und bleibt unveränderlich, während die Rotationsmatrix Rcd2s sich stets aus den veränderlichen Winkeln α und β der beiden Rotationsachsen wie folgt berechnen läßt. Rcd2s = cos(α) sin(α) sin( β) 0 cos( β) sin(α) cos( β) − sin( β) − sin(α) cos(α) sin( β) cos(α) cos( β) (5.4) Um den Strahl ~r definieren zu können benötigt man neben dem eben errechneten Vektor ~vw den Kameraursprung in Weltkoordinaten. Dieser ist ebenfalls nicht statisch, sondern abhängig von der Neigung und Schwenkung der Detailkamera. Dazu wird der Vektor ~ocd , der die Translation zwischen Kameraursprung und Systemkoordinatenursprung der in in Kamerakoordinaten vorliegt, wie auch der Vektor ~vcd zuvor durch Multiplikation mit den beiden Rotationsmatrizen in Weltkoordinaten transformiert. 50 5 Laserpointer-Tracking (5.5) ~ow = Rs2w · Rcd2s ·~ocd Der Vektor ergibt, addiert mit dem Translationsvektor, der die Position des Kamerasystems in Weltkoordinaten angibt, tw , die Position des Kameraursprungs in Weltkoordinaten. Abschließend wird, um die Koordinaten des Laserpunktes in Weltkoordinaten zu bekommen, der Strahl ~r, definiert durch den Ursprung des Kamerasystems ~tw +~ow und den Richtungsvektor ~vw , mit dem Geometriemodell geschnitten. ~r = ~tW +~ow + λ ∗ ~vw λ∈R (5.6) Das Geometriemodell besteht aus Dreiecken, da diese sich sowohl gut eignen, um gerendert zu werden, als auch, um sie mit Strahlen zu schneiden. Zur Berechnung des Schnittpunktes von Strahl und Dreieck wurde eine vorhandene C++ Implementation von D AVID S CHERFGEN [30] verwendet. Um nun den Schnittpunkt zu finden, wird der Strahl mit sämtlichen Dreiecken des Geometriemodells geschnitten. Anschließend wird aus sämtlichen Schnittpunkten P jener ausgewählt, dessen euklidische Distanz zum Kameraursprung am geringsten ist. Dieser Punkt P′ wird als Position des Laserpunktes angenommen. 5.1.3 Lokalisierung im Kamerabild der Kontextkamera War die Lokalisierung des Laserpunktes anhand des Kamerabildes der Detailkamera nicht erfolgreich – in der Regel, weil sich der Laserpunkt außerhalb des Frustums der Detailkamera befindet – so wird das Kamerabild der Kontextkamera untersucht. Die Kontextkamera hat in dem Prototypen nicht die Möglichkeit, Shutterzeit und/oder die Iris zu manipulieren. Also benötigt man eine alternative Möglichkeit, den Laserpunkt im Kamerabild zuverlässig zu finden. Da die Kontextkamera verwendet wird, wenn die Detailkamera den Laserpunkt verloren hat, eignet sich das Verfahren, ein Differenzbild zu erzeugen. Der Verlust des Laserpunktes kann auf Grund zu schneller Bewegung, oder auf 51 5 Laserpointer-Tracking Grund von Absetzen und erneutem Einschalten an anderer Position des Laserpointers geschehen. In jedem Fall steht der Laserpunkt nicht still, sondern ist in Bewegung oder Veränderung seines Zustandes. Dies lässt sich einfach mit Hilfe eines Differenzbildes Idi f f erkennen. Dabei wird von dem aktuellen Kamerabild In das Vorgängerbild In−1 für jedes Pixel einzeln abgezogen. Idi f f = In − In−1 (5.7) So lässt sich zuverlässig ein sich bewegener, oder gerade eingeschalteter, Laserpointerpunkt im Kamerabild lokalisieren. Das Verfahren der Lokalisierung ist anschließend identisch dem bei der Lokalisierung im Kamerabild der Detailkamera (siehe 5.1.1). Man erhält auf diesem Wege wieder die subpixelgenaue Position p′ des Laserpunktes im Kamerabild der Kontextkamera. 5.1.4 Lokalisierung in Weltkoordinaten mit Hilfe der Kontextkamera Da die Kontextkamera dazu gedacht ist, einen groben Hinweis zu bekommen, wo sich der Laserpunkt befindet, wird hier mit einem sehr einfachen Kameramodell gearbeitet (vgl. 4.2.2). Der Vektor vom principal point p0 zur Position des Laserpunktes p′ im Kamerabild dient als Grundlage zur Berechnung des Vektors zum Laserpunkt in Weltkoordinaten. Der Vektor ~vcc , der im Koordinatensystem der Kontextkamera von ihrem Ursprung auf den Laserpunkt zeigt, lässt sich in diesem einfachen Kameramodell anhand folgender Annahmen bestimmen (vgl. Abbildung 4.4). • Der Vektor hat die Länge eins. |~vcc | = 1 • Der Winkel δ zwischen der Projektion des Vektors auf die Bildebene und dem Vektor ~i = (0 1)T ist gleich dem Winkel γ zwischen p′ − p0 und ~i. • Der Winkel ǫ zwischen ~vcc und der Normalen der Bildebene ist linear abhängig von der Länge l des Vektors p′ − p0 . 52 5 Laserpointer-Tracking Da durch die Kalibrierung principal point p0 und Öffnungswinkel der Kamera bekannt sind, lässt sich so der Vektor ~vcc von der Kontextkamera zum Laserpointerpunkt berechnen. ~vcc = cos(δ) 0 sin(δ) 1 0 0 0 · 0 cos(ǫ) − sin(ǫ) · 0 (5.8) −1 0 sin(ǫ) cos(ǫ) − sin(δ) 0 cos(δ) 0 1 0 δ=γ (5.9) ǫ = k·l Dieser befindet sich zunächst im Koordinatensystem der Kontextkamera und muss durch Transformation über das Systemkoordinatensystem in das Weltkoordinatensystem transformiert werden. (5.10) ~vw = Rs2w · Rcc2s · ~vcc . Rcc2s = cos(α) 0 0 sin(α) 1 0 − sin(α) 0 cos(α) (5.11) Anschließend wird der Ursprung der Kontextkamera in Weltkoordinaten berechnet, um den Strahl vollständig definieren zu können. Dieser ist wiederum abhängig von der Rotation der senkrechten Achse, dargestellt durch den Winkel α. ~ow = Rs2w · Rcc2s ·~occ (5.12) Dabei ist ~occ der Translationsvektor vom Ursprung des Systemkoordinatensystems zu jenem des Koordinatensystems der Kontextkamera im Koordinaten- 53 5 Laserpointer-Tracking Abbildung 5.1: Schematische Darstellung von Laserpointer-Tracking system der Kontextkamera. Er wird, wie gehabt, zunächst in Systemkoordinaten, anschließend in Weltkoordinaten transformiert. Abschließend wird der Strahl~r, definiert durch die Position der Kontextkamera ow und dem errechneten Richtungsvektor ~vw , mit sämtlichen Dreiecken der Geometrie geschnitten, um die Position des Laserpunktes P′ zu bekommen. Das Verfahren ist identisch zu dem, was bei der Detailkamera verwendet wird. 5.2 Verfolgen des Laserpunktes Um den Laserpunkt zu verfolgen genügt es nicht, nur die Bilder der Detailkamera auszuwerten und zu beobachten, in welche Richtung sich der Laserpointerpunkt bewegt. Es ist möglich, dass der Benutzer den Laserpointer abschaltet und an einem anderen Ort wieder einschaltet. In diesem Fall kann die Detailkamera maximal durch systematisches Absuchen seiner Umgebung den Punkt wieder finden. Dies ist jedoch zeitaufwändig und unnötig. Das gleiche gilt für den Fall, dass der Benutzer den Laserpointer schneller bewegt hat, als die Detailkamera in der Lage ist, ihn zu verfolgen. Dazu gibt es die Kontextkamera. Sie gibt eine grobe Abschätzung, wo sich der Laserpunkt befindet, wenn die Detailkamera ihn verloren hat. Das Tracking läuft so ab, dass in jedem Frame zunächst das Kamerabild der 54 5 Laserpointer-Tracking Detailkamera ausgewertet wird. Ist der Laserpunkt in diesem sichtbar, so wird seine Position in Weltkoordinaten, wie zuvor beschrieben, berechnet. Anhand eines Toleranzbereiches wird entschieden, ob die Detailkamera den Laserpunkt verfolgt, oder nicht. Im ersten Fall wird die Rotation der beiden Achsen berechnet, die dazu führt, dass sich der Laserpunkt im Mittelpunkt des Kamerabildes befindet. Um eine unnötige Belastung der Schrittmotoren durch das Verfolgen jeder kleinsten Bewegungen zu verhindern, ist ein Toleranzbereich um den Mittelpunkt des Detailkamerabildes definiert. Dieser Toleranzbereich ist in der Implementation rechteckig und hat die Breite und Höhe von je 20% der Kameraauflösung. Befindet sich der Punkt innerhalb dieses Toleranzbereiches, so werden die Schrittmotoren nicht bewegt. Ist der Laserpunkt jedoch nicht im Kamerabild der Detailkamera zu sehen, so wird das Kamerabild der Kontextkamera ausgewertet und nach erfolgreicher Lokalisierung die dreidimensionale Position des Laserpunktes errechnet. Anschließend wird die Detailkamera so rotiert, dass sich der Laserpunkt in der Mitte ihres Kamerbildes befindet. Ist auch mit Hilfe der Kontextkamera kein Laserpunkt zu lokalisieren, so wird davon ausgegangen, dass der Laser ausgeschaltet ist und in den nächsten Frame übergegangen. Da die Rotation der beiden Schrittmotoren Zeit kostet, ist es wichtig, dass auch während sie in Bewegung sind, das System dynamisch bleibt und auf Änderungen der Laserpunktposition reagieren kann. Dies wird dadurch ermöglicht, dass in jedem Frame die aktuelle Rotation beider Schrittmotoren sowie die Zoomstufe der Detailkamera – und damit die extrinsischen und intrinsischen Parameter – über die RS-232 Schnittstelle abgefragt werden. 5.3 Räumliche Auflösung des Laserpointertrackings Die räumliche Auflösung und damit die Genauigkeit der Lokalisierung ist abhängig vom Abstand des Laserpunktes zum Kamerasystem. Je größer die Distanz, desto geringer die räumliche Auflösung und damit die Genauigkeit. Um dem entgegen zu wirken wird der Zoom der Detailkamera verwendet. Je größer der Zoom, desto größer die räumliche Auflösung. Das System versucht – in 55 5 Laserpointer-Tracking den Grenzen des Zooms – für jede Distanz zwischen Laserpunkt und Kamerasystem immer dieselbe räumliche Auflösung zu behalten. In jedem Frame wird anhand der ermittelten Distanz d eine Brennweite f u errechnet, die zu einer festen räumlichen Auflösung führt. Das heißt, dass der Bereich, den die Kamera abbildet, auf der Tiefe d immer eine konstante Breite von w hat. fu = d · umax w (5.13) Das umax ist dabei die horizontale Auflösung. Zu dieser errechneten Brennweite f u wird durch Interpolation über die kalibrierten Zoomstufen die zugehörige Stufe ermittelt und an die Kamera weitergegeben. Um den Zoom der Kamera nicht zu überlasten gibt es auch hier einen Schwellwert, der zu kleine Veränderungen der Zoomstufe nicht zulässt. 5.4 Analyse Dieser Abschnitt befasst sich mit der Analyse des Laserpointer-Trackings. Es werden Probleme und Einschränkungen des Verfahrens diskutiert, sowie die Lösung einiger dieser Probleme. Abschließend wird der Laserpointer als Eingabegerät verglichen mit dem in der virtuellen Realität üblichen Stylus. 5.4.1 Probleme und Einschränkungen Einschränkung der Oberfläche Auch wenn in der Erweiterten Realität gerne von beliebigen Oberflächen die Rede ist, so gibt es hier auch beim Laserpointer-Tracking Einschränkungen. Die Oberfläche, auf welcher sich der Laserpunkt befindet, muss diffuse Eigenschaften haben. Ein Spiegel eignet sich genauso wenig wie ein Fenster als Oberfläche, da der Laserpunkt hier für die Kamera nicht sichtbar ist. Auch stark absorbierende Oberflächen können problematisch werden, wenn der Laserpunkt auf ihnen im Kamerabild zu dunkel wird. 56 5 Laserpointer-Tracking (a) (b) (c) Abbildung 5.2: Kamerabild ( a); Maske (b); maskiertes Kamerabild (c). Diese Einschränkungen sind physikalischer Natur und bei einem optischen Verfahren unvermeidlich. Es besteht keine Möglichkeit, sie durch Software zu umgehen. Verdeckung Ein weiteres Problem ist – da es sich um ein optisches Verfahren handelt – die Verdeckung. Steht der Benutzer mit dem Rücken zum Kamerasystem so ist es möglich, dass er mit seinem Körper den Laserpunkt für die Kamera verdeckt. Desweiteren kann es bei einer nicht konvexen Umgebungsgeometrie dazu kommen, dass der Laserpunkt sich an einer Position befindet, die aus der Kameraperspektive verdeckt ist. Dies setzt vorraus, dass die Position des Benutzers ungleich der des Kamerasystems ist. Verdeckungsprobleme lassen sich leicht durch zwei oder mehrere solcher Kamerasysteme umgehen. Jedoch bleibt fragwürdig, ob der Nutzen die Kosten rechtfertigt. Lichtquellen im Kamerabild der Detailkamera Ein weiteres Problem sind Lichtquellen, wie Lampen oder Fenster. Eine Glühbirne erscheint im Kamerabild, genau wie ein Fenster bei strahlendem Sonnenschein, heller als der Schwellwert zur Unterscheidung von Laserpunkt und Umgebung. Dies führt dazu, dass sie fälschlicherweise als Laserpunkt erkannt werden können. Das gleiche gilt für Projektoren – da in gewöhnlichen Räumen 57 5 Laserpointer-Tracking keine Rückprojektion durchgeführt werden kann, besteht die Möglichkeit, dass die Kamera direkt auf die Linse eines Projektors sieht und somit dort einen hellen Punkt findet. Um dieses zu umgehen ist es sinnvoll, die kritischen Bereiche zu maskieren. Dies muss jedoch nicht in der realen Welt passieren, wo man zum Beispiel Pappen verwenden könnte. Einfacher ist es, die Masken als Computergrafik in das Kamerabild zu integrieren. Dazu wird eine virtuelle Kamera mit den selben intrinsischen, sowie extrinsischen Parametern, wie sie die reale Kamera besitzt, erzeugt und mit dieser die Masken gerendert. Das Verfahren nennt sich Video-See-Through und kann verwendet werden, um das Kamerabild einer realen Umgebung um beliebige virtuelle Objekte zu erweitern. Die Integration der gerenderten Masken in das Kamerabild muss geschehen, bevor es ausgewertet wird, um die Position des Laserpunktes zu bestimmen. Neben dem Geometriemodell der Umgebung gibt es also ein zweites, welches die Blenden beinhaltet. Die Maske muss in einer Farbe gerendert werden, bei der alle drei Kanäle unterhalb des Schwellwertes liegen, zum Beispiel schwarz. Abbildung 5.2 zeigt, wie das Kamerabild ( a) durch Überlagerung mit der perspektivisch korrekt gerenderten Maske (b) zu einem maskierten Kamerabild (c) wird, in dem das unerwünschte Fenster verschwindet, während der Laserpunkt (unterhalb) sichtbar bleibt. Eine automatische Generierung solcher Masken ist denkbar, jedoch im Rahmen dieser Arbeit nicht implementiert. Dieses Verfahren führt dazu, dass der Laserpunkt auf maskierten Oberflächen nicht lokalisiert werden kann. Das ist jedoch nicht weiter tragisch, da er auf einem Fenster oder einer Projektorlinse ohnehin, auf Grund des nicht diffusen Materials, nicht erkannt werden kann. Lichtquellen im Kamerabild der Kontextkamera Bei der Kontextkamera tritt das Problem mit Lichtquellen, aufgrund des Verfahrens ein Differenzbild zu erzeugen, so nicht auf. Solange die Lichtquellen konstant sind, subtrahieren sie sich raus. Problematisch wird es allerdings, wenn sich Lichtquellen ändern. Das kann zum Beispiel auch durch einen Men- 58 5 Laserpointer-Tracking (a) (b) (c) (d) (e) (f) Abbildung 5.3: Bilder des Frames n − 1 ( a, d); des Folgeframes n (b, e); die asymetrische Differenz der Bilder (c, f ). Oben: Laserpunkt gefunden ( a, b, c); unten: falscher Laserpunkt gefunden (d, e, f ). schen, der vor einer Lichtquelle entlang läuft, passieren. Aus Sicht der Kamera ist eine Lichtquelle zunächst an, wird dann verdeckt und ist aus und anschießend wieder freigegeben und sie erscheint wieder. Abbildung 5.3 zeigt das Differenzbild für zwei verschiedene Szenarien. In der oberen Zeile wird der Laserpunkt bewegt ( a, b) und ist im Differenzbild (c) anschließend zu erkennen, während die unveränderte Lichtquelle nicht sichbar ist. Die untere Zeile zeigt, wie eine Lichtquelle (in diesem Fall ein Fensterspalt) zunächst verdeckt wird (d) und im folgenden Kamerabild sichbar ist (e). Diese Veränderung ist im Differenzbild ( f ) deutlich sichbar und wird von dem System fälschlicherweise als Laserpunkt erkannt. Desweiteren entstehen durch die Rotation des Kamersystems große Differenzen im Kamerabild der Kontextkamera. Diese können jedoch leicht gefiltert werden, indem das Kamerabild nur bei Stillstand des Systems ausgewertet wird. 59 5 Laserpointer-Tracking 5.4.2 Stärken gegenüber vergleichbaren Eingabegeräten Das aus Anwendersicht am engsten verwandte Eingabegerät zum hier vorgestellten Laserpointer ist ein Stylus. Dies ist eine Art Stift, dessen Position und Orientierung elektromagnetisch erfasst werden. Ein sogenannter Tracker erzeugt ein elektromagnetisches Feld. Befindet sich der Stylus innerhalb dieses Feldes, so ist er in der Lage, seine sechs Freiheitsgrade1 zu bestimmen. Oft wird ein Stylus zum Raycasting verwendet. Dies entspricht einem virtuellen Laserpointer mit 2,5 DOF wie sie das hier vorgestellte System auch liefert. Der wesentliche Vorteil dieses Systems gegenüber dem Stylus ist sein ungebrenzter Aktionsradius. Während man sich mit einem Stylus in unmittelbarer Nähe (< 3m) des Trackers befinden muss, ist beim Laserpointertracking der Standpunkt des Benutzers irrelevant und somit beliebig. Desweiteren hat ein Laserpointer ein natürliches Feedback – nämlich seinen Laserpunkt – während der Abbildungspunkt eines Stylus in einem immersiven Display mit Hilfe eines Projektors o.ä. dargestellt werden muss. Laserpointer-Tracking eignet sich somit auch für Anwendungen der Erweiterten Realität, in denen die Interaktionsfläche nicht zwangsläufig auch Display ist (z.B. Video-See-Through). 5.4.3 Resumee Dieses Kapitel hat ein robustes Verfahren zum Laserpointer-Tracking vorgestellt, das in Echtzeit läuft und kontinuierlich die Position eines Laserpunktes in dreidimensionalen Weltkoordinaten ermittelt. Die Genauigkeit des Trackings ist abhängig von der Kalibrierung des Systems (vgl. 4.4.1). Weiterhin wurden einige Probleme diskutiert, von denen manche gelöst werden konnten, während andere sich nicht beheben lassen. Diese sind grundlegende Probleme, die zu Einschränkungen für Laserpointertracking im allgemeinen führen. Das hier vorgestellte Laserpointertracking bildet die Grundlage für LaserpointerInteraktion in realen Umgebungen. Sicher können die meisten der Interakti1 Position ( x, y, z) und Orientierung (r x , ry , rz ) 60 5 Laserpointer-Tracking onstechniken, welche für Laserpointer-Interaktion auf planaren Oberflächen entwickelt wurden, adaptiert werden. Darüber hinaus bietet eine nicht planare Umgebung jedoch neue Möglichkeiten und Herrausforderungen. Diese sind jedoch nicht Bestandteil dieser Arbeit. 61 6 Szenenakquise Dieses Kapitel beschäftigt sich mit der Akquise der das Kamerasystem umgebene Szene. Die einfachste Form der Szenenakquise ist ein Panoramabild, das in der Regel aus mehrern Bildern zusammengesetzt wird. Es ermöglicht einen Rundumblick in alle Richtungen, jedoch nur für einen Betrachtungspunkt – nämlich jenen, von welchem aus das Panoramabild aufgenommen wurde. Um die Szene aus beliebigen Positionen synthetisch rekonstruieren zu können, benötigt man neben der Photometrie auch Informationen über die Geomentrie. Das in dieser Arbeit vorgestellte Kamerasystem ist in der Lage, sowohl die Photometrie, als auch die Geometrie der sie umgebenen Szene zu erfassen. Dies resultiert in einem texturierten Geometriemodell der Szene, welches aus beliebigen Positionen und Blickrichtungen betrachtet werden kann. 6.1 Geometrieakquise In Kapitel 4.3.2 wurde gezeigt, wie es mit der Detailkamera und dem Lasermodul möglich ist, einzelne Punkte der Geometrie einzuscannen. Bei der so gewonnenen Punktewolke sind Nachbarschaftsbeziehungen bekannt, wenn für jeden Abtastpunkt P, neben den Weltkoordinaten ( X, Y, Z )T , die beiden Winkel (α, β) der Rotation des Systems gespeichtert werden. Mit diesem Verfahren besteht die Möglichkeit, die umgebene Geometrie in einer beliebigen räumlichen Auflösung aufzunehmen und als triangulierte Geometrie darzustellen. Das bedeutet, dass die Punkte der Punktewolke mit ihren Nachbarn zu Dreiecken zusammengefasst werden, welche die Oberfläche der Geometrie beschreiben. Die Qualität des gewonnen Geometriemodells ist ab- 62 6 Szenenakquise Abbildung 6.1: Gescannte Geometrie mit verschiedenen Abtastraten, beginnend bei einer geringen Auflösung von 202 Punkten (Dauer ca. 10 min) ( a), einer etwas höheren Auflösung von 402 Punkten (Dauer ca. 32 min) (b) und zuletzt mit 602 Abtastpunkten (Dauer: ca. 68 min) (c). hängig von der gewählten Abtastrate. Je höher die Abtastrate desto, genauer das Modell, aber auch desto größer die Speicher- und Zeitkosten. Möchte man die Umgebung beispielsweise mit einer räumlichen Auflösung von einem Grad aufnehmen und geht man davon aus, dass nur die obere Hemisphäre aufgezeichnet wird, so kommt man auf 360 ∗ 90 = 32400 Abtast- punkte. Dauert das Messen eines Punktes eine Sekunde, so dauert der Kalibrierungsprozess 32400 Sekunden. Das sind neun Stunden. Nicht nur die zeitlichen Kosten sind hoch sondern auch die Datenmengen. Durch einfache Trinagulie- rung besteht die gescannte Geometrie im oben genannten Fall aus ∼ 64800 Dreiecken. Diese sind auf moderner Grafikhardware zwar noch in Echtzeit1 darstellbar, möchte man allerdings einen Strahl mit der Geometrie schneiden – wie es Laserpointer-Tracking vorraussetzt – so kann dies nicht in Echtzeit stattfinden. Abbildung 6.1 zeigt eine Umgebung, gescannt in drei verschiedenen Auflösungen, gerendert in Wireframe-Darstellung. In Abbildung 6.2 wird das am höchsten aufgelöste Modell in weiteren Darstellungen gezeigt – die Dreiecke werden als Oberflächen gerendert. Zwei Farbcodierungen sind exemplarisch zu sehen: zum einen die Abbildung der Normale jedes Dreiecks auf die RGB-Kanäle (b), zum anderen eine Visualisierung der Tiefe (c). 1 mit einer Framerate von > 25fps 63 6 Szenenakquise Abbildung 6.2: Gescannte Geometrie gerendert in Wireframe-Darstellung ( a), mit Farben als Funktion der Tiefe (b) und mit Farben als Funktion der Normalen (c). 6.1.1 Effiziente Geometrieakquise Befindet man sich in einem Gebäude, so besteht die Umgebung im Normalfall aus größeren, planaren Flächen. Scannt man diese Umgebung mit einer uniformen Auflösung ein, so wird eine Wand, die durch zwei Dreiecke repräsentierbar wäre, durch tausende Dreiecke dargestellt. Dieses Problem ließe sich in einem Postprocessing Schritt beheben, der das gescannte Geometriemodell anschließend vereinfacht, ohne wesentliche Informationen zu verlieren. Das löst allerdings nicht das Problem der langen Aufnahmedauer. Die Alternative wäre, eine geringere Abtastauflösung zu verwenden, was aber zum Verlust höherfrequenter Details führt. Im Folgenden wird ein adaptiver Scanalgorithmus vorgestellt, der die Dauer der Aufnahme der Umgebung und gleichzeitig die aus der Aufnahme resultierende Datenmenge verringert. Progressiver Scanalgorithmus Die Idee dieses Algorithmuses ist es, die Umgebung zunächst mit einer geringen Abtastrate einzuscannen. Anschließend werden Bereiche, welche eine Ebene darstellen, so belassen, während der Rest rekursiv in einer feineren Auflösung gescannt wird. Anschließend wird in den feiner eigescannten Bereichen 64 6 Szenenakquise Abbildung 6.3: Triangulierungsschema des adaptiven Scannens wieder nach planaren und nicht planaren Bereichen sortiert usw. Das Abbruchkriterium der Rekursion ist eine definierte maximale Abtastrate. Dieses Verfahren führt in einer Umgebung mit großen planaren Flächen dazu, dass diese bereits früh erfasst werden und anschließend nur noch Ecken und Kanten betrachtet und genauer eingescannt werden. Anschließend werden die Abtastpunkte gemäß des Schemas in Abbildung 6.3 trianguliert. Abbildung 6.4 zeigt einen mit diesem Verfahren abgetasteten Würfel – als Extrembeispiel für die Kombination hoher und geringer geometrischer Frequenzen. Die Tiefenwerte wurden nicht in einer realen Umgebung mit Kamera und Lasermodul erfasst, sondern berechnet. In der Darstellung als Punktwolke (links) ist deutlich zu sehen, wie die Auflösung an den Kanten des Würfels steigt. Auf der rechten Seite ist das selbe Modell trianguliert dargestellt. 6.1.2 Probleme bei der Geometrieakquise Die Ergebnisse der Geometrieakquise sind nicht perfekt. Ein grundlegendes Problem ist, dass die Umgebung nur von einer Position aus abgetastet wird. Dies führt dazu, dass aus Sicht dieser Position verdeckte Geometrie nicht erfasst werden kann. Die Lösung dieses Problems ist einfach, dass man die Geometrie von mehreren Positionen aus aufzeichnet, sodass sämtliche Oberflächen in mindestens einem Scan enthalten sind. Anschließend müssen die gewonnenen Geometriemodelle zusammengefügt werden. 65 6 Szenenakquise Abbildung 6.4: Adaptive Abtastung eines Würfels (Simulation). Ein weiteres Problem sind nicht diffuse Oberflächen. Wenn der Laserstrahl reflektiert, oder gebrochen wird, so führt dies zu falschen Geometriepunkten. In der Evaluation der Kalibrierungen hat sich gezeigt, dass ebenfalls zu gut streuende Oberflächen problematisch sind (vgl. 4.4). Auch secondary scattering in Ecken und Kanten war zunächst ein Problem, das jedoch ganz einfach durch Erhöhung des Schwellwertes t eliminiert werden konnte. 6.2 Photometrieakquise Neben der Geometrie besteht die Möglichkeit, die Photometrie der Szene zu erfassen – zum Beispiel um die erfasste Geometrie damit zu texturieren. Dazu gibt es grundsätzlich zwei Möglichkeiten. Um eine hochauflösende Textur zu bekommen, ist es sinnvoll, die Detailkamera zu nutzen und mehrere von ihr aufgenommene Bilder zu einer großen Textur zusammenzufügen. Dieses Verfahren kostet jedoch etwas Zeit und ist somit nicht tauglich, um eine Echtzeittextur zu erhalten. Das Kamerabild der Kontextkamera kann hingegen als Echtzeittextur verwendet werden, da sie parallel die gesamte obere Hemisphäre erfasst. Allerdings hat sie eine wesentlich geringere räumliche Auflösung als die zusamengesetzte Textur. 66 6 Szenenakquise Abbildung 6.5: Die Ränder zwischen den Einzelbildern ( a) sind ohne Blending (b) störender als mit Blending (c). 6.2.1 Hochauflösende statische Textur Eine hochauflösende Textur kann durch das Zusammenfügen (stitching) einzelner Bilder der Detailkamera generiert werden. Dazu wird, wie bei der Geometrieakquise, die Detailkamera systematisch rotiert, um für diskrete Positionen ein Bild aufzunehmen. Die Pixel des Bildes werden anschließend in sphärische (u, v)-Koordinaten transformiert und in einer Textur abgespeichert. u und v entsprechen dabei den Winkeln α und β der Rotation um die beiden Achsen des Systems – skaliert mit dem Quotienten von der Auflösung der Textur und π, um auf Pixelkoordinaten zu kommen. Zunächst wird für jedes Pixel – genau wie beim Laserpointer-Tracking – der Vektor ~vw ( xw yw zw )T in Weltkoordinaten berechnet, der vom Ursprung des Systems in jene Richtung zeigt, aus der das Pixel affektiert wurde (vgl. 5.1.2). Anhand dieses Vektors werden die Winkel und entsprechend die u- und vKoordinaten errechnet. −zw √ arccos 2 2 res xw +zw u= π π − arccos √−zw 2 + z2 xw w v= res π π 2 π 2 − arccos + arccos √ √ 67 yw 2 + y2 + z2 xw w w yw 2 + y2 + z2 xw w w xw ≤ 0 (6.1) sonst xw ≤ 0 sonst (6.2) 6 Szenenakquise Die resultierende Textur soll ein möglichst homogenes Erscheinungsbild haben. Es soll nicht sichtbar sein, dass sie aus mehreren Bildern zusammengesetzt wurde und wo deren Grenzen liegen. Durch geringe Misregistrierung, sowie unterschiedliche Luminanzen in der Umgebung kommt es jedoch zu deutlich sichtbaren Grenzen. Um dem entgegenzuwirken, müssen zunächst sämtliche automatischen Einstellungen der Kamera, die die Helligkeit und die Farbtemperatur beinflussen, während der Aufnahmeprozedur statisch bleiben. Diese sind zum Beispiel Iris, Shutter und White Balacing. Darüber hinaus werden die Bilder mit einer linearen Rampe zum Rand geblendet. Dies führt zu weicheren Übergängen, jedoch nicht zu einem völlig konsistenten Bild. Das Blending setzt vorraus, dass sich die einzelnen Bilder überlappen. Ist die gesamte obere Hemisphäre aufgenommen und gemappt, so erhält man die fertige Textur, wie sie in Abbildung 6.6 zu sehen ist. In diesem Fall wurde die Textur aus 72 = 49 Einzelbildern zusammengesetzt; sie hat eine Auflösung von 1000 ∗ 1000 Pixeln. Die Aufnahme hat ca. 3 Minu- ten gedauert. Je größer man die Textur wählt, desto größer muss der Zoom der Detailkamera und die Abtastrate gewählt werden, um keine Löcher in der Textur zu bekommen. Der weisse Streifen in der Mitte der Textur resultiert aus einer Unterabtastung. Durch das Polarkoordinatensystem fallen sehr viele Pixel auf den Bereich über der Kamera. Dem Punkt senkrecht über der Kamera entspricht in der Textur die gesamte mittlere Zeile. Der Effekt tritt auf, da das Verfahren jedes Pixel der Kamerabilder an eine Stelle der Textur überträgt. Ein umgekehrtes Verfahren, welches für jedes Pixel der Textur das zugehörige Pixel der Kamerabilder sucht, kann diesen Effekt verhindern. Möchte man ein Geometriemodell mit dieser Textur rendern, so benötigt man für jeden Geometriepunkt (vertex) eine Texturkoordinate, die angibt, welches Pixel der Textur auf diesen Punkt gehört. Diese Texturkoordinate entspricht den Winkeln α und β des Punktes, bezogen auf die Position des Kamerasystems skaliert mit dem Quotienten von der Auflösung der Textur und π. Die Winkel α und β werden bei der Geometrieakquise für jeden Geometriepunkt im Modell gespeichert. Abbildung 6.7 zeigt die das Geometriemodell aus Abbildung 6.5 (c) texturiert mit der hochaufgelösten Textur aus Abbildung 6.6. 68 6 Szenenakquise Abbildung 6.6: Hochauflösende Textur; zusammengesetzt aus 49 Einzelbildern. 69 6 Szenenakquise Abbildung 6.7: Gescannte Geometrie, texturiert mit der hochaufgelöseten Textur 6.2.2 Geringauflösende Echtzeittextur Möchte man eine Echtzeittextur haben, um etwa Informationen über aktuelle Beleuchtung zu erlangen, so ist die Methode, aus diskreten Bildern von verschiedenen Kameraorientierungen eine Textur zu generieren, nicht praktikabel, da sie zu viel Zeit kostet. Die Kontextkamera nimmt in einer räumlich geringen Auflösung einen Großteil der oberen Hemisphäre auf. Ihr Kamerabild kann als Echtzeittextur verwendet werden. Dabei werden die Texturkoordinaten für jeden Punkt (vertex) des zu texturierenden Geometriemodells in Abhängigkeit von der aktuellen Position und Rotation des Systems berechnet. Die Berechnung erfolgt gemäß des vereinfachten Kameramodells für die Kontextkamera (vgl. 5.1.4). Zunächst wird der Vektor ~vw , beginnend beim Urspung der Kontextkamera Occ , in Weltkoordinaten zu Geometriepunkt P berechnet. ~vw = P − Occ 70 (6.3) 6 Szenenakquise Dieser Vektor wird normiert und aus dem Weltkoordinatensystem ins Kamerakoordinaten transformiert. ~vcc = Rs2cc · Rw2s · ~vw |~vw | (6.4) Anschließend werden die beiden Winkel δ und ǫ berechnet. Dabei ist δ der Winkel zwischen der Projektion des Vektors ~vcc auf die x − z-Ebene (y = 0) und dem Vektor (0 0 − 1)T , Der Winkel ǫ befindet sich zwischen ~vcc und dem senkrechten Vektor (0 1 0)T . Die Elemente von ~vcc heißen im Folgenden ~vcc = ( xcc ycc zcc )T . − z cc arccos √ 2 2 xcc +zcc δ= √ −2zcc 2π − arccos xcc +z2cc xcc ≤ 0 ǫ = arccos (ycc ) (6.5) sonst Mit Hilfe dieser Winkel lässt sich das zugehörige Pixel, das als Texturkoordinate für den Geometriepunkt P verwendet wird, wie folgt berechnen. 1 1 (u, v) = (cos δ · ǫ, sin δ · ǫ) k k (6.6) Die Echtzeittextur ist neben ihrer geringen Auflösung auch weniger genau als die hochauflösende Textur, da Verzerrungen durch die nicht nicht ganz perfekte Linse auftreten. Diese werden im vereinfachten Kameramodell nicht berücksichtigt. Abbildung 6.8 zeigt die Echtzeittextur und wie Geometrie mit ihr texturiert gerendert wird. Deutlich zu sehen sind die Begrenzungen, wo die Textur endet, oder schwarz wird. Diese rühren daher, dass das Fischaugen-Objektiv einen geringeren Öffnungswinkel als 180◦ besitzt. Dazu kommt, dass das Objekiv nicht wirklich mittig über dem CCD-Chip der Kontextkamera sitzt. Deswegen ist der sichtbare Bereich nicht symmetrisch, sondern abhängig von der Rotation des Systems und somit der Kontextkamera. 71 6 Szenenakquise Abbildung 6.8: Echtzeittextur ( a); gescannte Geometrie, texturiert mit Echtzeittextur (b, c). 6.3 Resumee Die Szenenakquise liefert keine Beschreibung der Szene, die für den Einsatz in CAD-Anwendungen oder ähnlichem genau genug ist. Jedoch ist die Genauigkeit der Geometrie ausreichend für Laserpointer-Tracking. Weitere Anwendungen sind denkbar, zum Beispiel die Geometrie zu verwenden, um korrekte Verdeckung von virtuellen Objekten in einer Video-See-Through Anwendung zu berechnen. Zusammen mit der erfassten Textur bietet die Szenenbeschreibung auch die Möglichkeit, mit der Szene zu interagieren, oder sie zu erweitern, ohne dass das Kamerasystem vor Ort sein muss. So können beispielsweise Architekten die aufgenommene Szene mit nach Hause oder ins Büro nehmen und offline mit ihr arbeiten. Das wichtigste Problem ist bei diesem Verfahren wieder die Verdeckung. Dadurch, dass sowohl Geometrie, als auch Photometrie nur von einem Standpunkt aus aufgenommen werden, fehlt der Szene alles, was von diesem aus verdeckt ist. Das heißt, dass sobald die Betrachtungsposition ungleich der Aufnahmeposition ist, es zu fehlerhafter Darstellung kommen kann, wenn dort Verdeckung aufgetreten ist. Abbildung 6.9 stellt abschließend nochmal die beiden Texturen an der gescannten Geometrie gegenüber. Aus dieser Perspektive aus dem Innenraum ist der Unterschied der Auflösung sowie die Misregistrierung der Echtzeittextur gut zu erkennen. Gut zu sehen ist auch, dass das Abtasten der Geometrie auf einer 72 6 Szenenakquise Abbildung 6.9: Gegenüberstellung der Echtzeittextur (oben) und der hochaufgelösten Textur (unten). 73 6 Szenenakquise nicht diffusen Oberfläche (in diesem Fall der Türklinke) zu einem Ausreißer im Geometriemodell führt. 74 7 Zusammenfassung und Ausblick Dieses abschließende Kapitel fasst noch einmal die wichtigsten Ergebnisse dieser Arbeit zusammen. Dabei werden auch Probleme diskutiert, die in zukünftiger Arbeit in Angriff genommen werden. Darüber hinaus befasst sich der Abschnitt 7.2 mit weiteren Möglichkeiten des Systems, die sich während der Arbeit entwickelt haben. 7.1 Zusammenfassung In dieser Arbeit wurde ein hybrides computergesteuertes Kamerasystem vorgestellt, dass sich dazu eignet, Laserpointer-Tracking in realen Umgebungen zu betreiben. Vom Aufbau und der Steuerung über dessen Kalibrierung wurde gezeigt, was das System kann und wie es funktioniert. Neben der Fähigkeit, einen Laserpunkt zu tracken bietet das System die Möglichkeit der Szenenakquise. 7.1.1 Kalibrierung Die statische Kalibrierung des Systems besteht aus mehreren Kalibrierungen der einzelnen Komponenten, die jedoch jeweils nur einmalig durchgeführt werden mussten. Für die dynamische Kalibrierung – also das Ermitteln von Position und Orientierung in einer Umgebung – wurden verschiedene Verfahren vorgestellt und evaluiert. Zum einen sind dies Verfahren, die auf einer pose estimation aus der Computer Vision basieren. Eine andere Möglichkeit ist das vorgestellte Verfahren, Geometriepunkte der Umgebung zu erfassen, anhand derer die Position und Orientierung des Systems ermittelt werden kann. 75 7 Zusammenfassung und Ausblick Ein Referenzmodell der Umgebung wird verwendet, um die Abweichung der gescannten Geometriepunkte zu realer Geometrie zu berechnen. Mit Hilfe eines Minimierungsverfahrens wird eine Transformation ermittelt, die diese Abweichung minimiert. Die Evaluation hat gezeigt, dass die Kalibration noch fehlerbehaftet ist. Dabei ist der Fehler die Summe vieler einzelner Fehler. Das fehlerbehaftete Referenzmodell mit samt der Referenzpunkte, welche zu jeder Kalibrationsmethode verwendet wurde, trägt einen Teil zum Fehler bei. Eine klare und pauschale Aussage, welches Verfahren das beste ist lässt sich anhand der Daten nicht machen. Um bessere Aussagen darüber treffen zu können, muss zunächst für ein korrektes Referenzmodell gesorgt werden. 7.1.2 Laserpointer-Tracking Das vorgestellte Kamerasystem ermöglicht Laserpointer-Tracking in beliebigen Umgebungen. Dies ermöglicht eine schnelle und intuitive Möglichkeit der Interkation mit einem Computer. Durch die motorgesteuerte Detailkamera ist es in der Lage den Laserpunkt zu verfolgen und zu lokalisieren. Verliert sie den Laserpunkt, so ist die Kontextkamera in der Lage, einen groben Hinweis zu geben, wo sich der Laserpunkt befindet. Die Arbeit hat einige Probleme und Einschränkungen erläutert. So ist es der Kamera auf spiegelnden Flächen zum Bespiel nicht möglich, den Laserpunkt zu finden. Das selbe gilt für den Fall, dass der Laserpunkt aus Sicht der Kamera verdeckt ist. Lichtquellen haben sich als störend herausgestellt, da das System sie nicht von einem Laserpunkt unterscheiden kann. Als Lösung dieses Problems wurden Masken verwendet, die in das Kamerabild gerendert werden, bevor es ausgewertet wird. So bietet das System eine zuverlässige Basis für Laserpointer-Interakion in realen Umgebungen. Die Genauigkeit der Kalibrierung ist ausschlaggebend für die Genauigkeit des Trackings. 76 7 Zusammenfassung und Ausblick 7.1.3 Szenenakquise Im letzten Kapitel wurde gezeigt, dass das Kamerasystem sich auch dazu eignen, Szenenakquise zu betreiben. Mit Hilfe des Lasermoduls kann die Umgebung systematisch abgetastet werden. Dabei werden jeweils Tiefeninformationen erfasst, resultierend aus der Abbildung des Laserpunktes im Kamerabild der Detailkamera. Um zu verhindern, dass planare Flächen überabgetastet werden wurde ein adaptiver Algorithmus vorgestellt, welcher die Abtastrate der Umgebung anpasst. Diese Art der Geometrieakquise spart Zeit und Daten gegenüber der Abtastung in einer konstanten Auflösung – ohne Details zu verlieren. Neben der Geometrie wurde auch die Photometrie der Szene erfasst um die Geometrie damit texturieren zu können. Zwei Verfahren wurden präsentiert, zum einen das Verwenden des Kamerabildes der Kontextkamera als Textur. Diese liefert eine kontinuierliche Echtzeittextur – jedoch mit geringer Auflösung und Qualität. Ein bessere Qualität hat der Verfahren geliefert, eine Textur aus einzelnen Kamerabildern der Detailkamera zusammenzusetzen. Das Problem hierbei ist die Konsistenz der Textur. Ein einheitliches Erscheinungsbild – als sei die Textur ein Foto – ist, trotz Konstanz sämtlicher Kameraparameter und einem weichen Überblenden zwischen den Bildern, nicht erreicht worden. Jedoch geben die erfassten Szenen, wenn man sie als texturierte Geometriemodelle darstellt, einen guten Eindruck der Szene, die aus beliebigen Blickrichtungen betrachtet werden kann. 7.2 Ausblick 7.2.1 Laserpointer-Tracking Das Laserpointertracking, wie es in dieser Arbeit vorgestellt wurde, kann ausschließlich Punkte auf Oberflächen der Geometrie (Wand, Decke ...) definieren. Man spricht in diesem Fall von einem 2,5 DOF1 Eingabegerät. Es ist aber 1 Degrees of Freedom (Freiheitsgrade) 77 7 Zusammenfassung und Ausblick yL xL zL Abbildung 7.1: 6 DOF Laserpointertracking mit Hilfe eines Beugungsgitters durchaus wünschenswert, an mehr Freiheitsgrade zu gelangen. Zum einen ist momentan völlig unbekannt und auch unerheblich, wo sich der Benutzer und damit auch der Laserpointer befindet. Zum anderen ist es gerade in stereoskopischen Anwendungen intressant, mit Objekten zu Interagieren, die sich nicht auf der physikalischen Wand befinden, sondern davor oder dahinter. Die Position und Orientierung des Laserpointers kann ermittelt werden, indem man zwei um 90◦ versetzte Beugungsgitter unmittelbar vor den Laserpointer montiert. Seine Projektion besteht dann nicht mehr nur aus einem Punkt, sondern aus einer Matrix von Punkten. Ist diese Matrix bekannt, kann man, mit Hilfe eines Pose Estimation Algorithmuses für die extrinsische Kalibrierung einer Kamera, die Pose des Laserpointers ermitteln. Die Bildpunkte sind statisch und entsprechend der Beugung des Laserstrahls, während die Objektpunkte deren Abbildungen auf der Oberfläche sind. So lässt sich ein 6 DOF Tracking des Laserpointers realisieren, was vergleichbar mit einem Stylus ist. Möchte man jedoch über eine Distanz einen Punkt im Raum direkt definieren, so eignet sich das Verfahren nicht. Mit Hilfe von Stereoskopie lässt sich – 78 7 Zusammenfassung und Ausblick PR P PL Abbildung 7.2: Stereoskopischer Laserpointer bei bekannter Betrachterposition – ein Punkt im Raum für den Betrachter, mit Hilfe von zwei Abbildungen des Punktes P auf einer Oberfläche, darstellen. Einer entspricht der perspektivischen Abbildung für das linke Auge PL , der andere jener für das rechte Auge PR (vgl. Abbildung 7.2). Diese Darstellung ist eindeutig und umkehrbar. So lässt sich mit einem System aus zwei Laserpointern, verbunden mit Headtracking, jeder Punkt im Raum definieren. Damit jedes Auge nur den für ihn bestimmten Laserpunkt sieht und ausserdem die Kamera bzw. der Computer die Möglichkeit hat, die beiden Punkte einem Auge zuzuordnen, scheint Zeit-Multiplex sinnvoll zu sein. Das heisst, der Benutzer trägt eine Shutterbrille und die beiden Laserpointer werden – zur Brille synchron – geshuttert. Außerdem muss die Kamera synchronisiert werden um den erkannten Laserpunkt dem richtigen Auge zuordnen zu können. Neben der Entwicklung erweiterter Methoden des Laserpointertrackings besteht Bedarf, auf diese Trackingmethoden angepasste Interaktionstechniken zu entwickeln. Das gilt sowohl für das in dieser Arbeit vorgestellte 2,5 DOF Tracking, als auch für die beiden oben angerissenen Möglichkeiten. 79 7 Zusammenfassung und Ausblick 7.2.2 Szenenaquise Diese Arbeit hat die Szenenakquise als einen netten Nebeneffekt vorgestellt, den das Kamerasystem einem bietet. Die Ergebnisse sind sicher ausbaufähig. Das Verfahren lässt sich durch Parallelisierung mit mehreren Laserpunkten beschleunigen [28]. Ausserdem kann ein Algorithmus, welcher den Bildinhalt berücksicht, zu besseren Ergebnissen der Bildkomposition für die hochauflösende Textur führen [26]. Neben der Gewinnung von Geometrie und Photometrie sind Lichtquellen eine für das Laserpointer-Tracking wichtige Komponente. Im Absatz 5.4.1 wird beschrieben, wie sie Laserpointer-Tracking stören und dass das Verwenden einer Maskierung eine einfache Möglichkeit der Problembehebung darstellen. Die Masken werden bislang manuell definiert, eine automatische Akquise störender Lichtquellen kann die Generierung solcher Masken automatisieren. 7.2.3 Kamerasystem Die Kalibrierung des Kamerasystems ist bis dato noch zeitraubend und wenig zuverlässig. Hier besteht noch Handlungsbedarf für weiterführende Arbeit. Eine Idee ist es, das System mit Sensoren, die die Orientierung ermitteln auszustatten. Zusätzlich werden einige wenige Tiefenwerte gemessen. Konkret reicht ein Orientierungssensor in Verbindung mit einem Kompass aus, um die gesamte Orientierung zu ermitteln. Fünf Tiefenwerte von orthogonalen Strahlen geben anschließend Aufschluss über die Position. Neben der Weiterentwicklung des Setups bietet dieses weitere Anwendungsmöglichkeiten neben Laserpointer-Tracking und -interaktion. Diese Arbeit hat mehr am Rande vorgestellt, wie es mit dem System möglich ist, Geometrie sowie Photometrie der Umgebung aufzuzeichnen. Als wesentliche Einschränkung wurde die Verdeckung herausgestellt. Stellt man das System an mehreren Positionen auf, so besteht die Möglichkeit, die jeweils gewonnenen Informationen über die Umgebung zu vereinen und somit bei geschickter Wahl der Positionen sämtliche Verdeckung zu elimieren. Darüber hinaus ist auch die 80 7 Zusammenfassung und Ausblick Aquise globaler Beleuchtungseffekte denkbar, oder die Gewinnung einer Reflectancemap. Außerdem eignet sich das kalibrierte System zur automatischen Kalibrierung beliebig vieler Projektoren. Auch Video-See-Through hat kurz in der Arbeit Verwendung gefunden, um die Masken für störende Lichtquellen in den Videostream der Detailkamera zu integrieren. Dieses Verfahren bietet jedoch weitere Möglichkeiten, die reale Umgebung zu erweitern. Der wesentliche Vorteil gegenüber projektorbasierter Erweiterung ist, dass eine beliebig große Umgebung erweitert werden kann, ohne große Mengen von Projektoren zu benötigen. Diese Arbeit hat also die Grundlage gelegt für eine Menge zukünftiger Arbeit. Es gibt immer was zu tun! 7.3 Danksagung Diese Arbeit wäre ohne die Zuarbeit einiger Menschen nicht zustande gekommen, denen ich im Folgenden danken möchte. Zunächst danke ich Jun. Prof. Dr. Oliver Bimber für die Betreuung der Arbeit. Desweiteren danke ich dem Zweitprüfer der Arbeit Prof. Dr. Tom Gross, dass er sich die Zeit genommen hat, meine Arbeit zu studieren. Den wesentlichsten Anteil zum Gelingen dieser Arbeit verdanke ich meinen Eltern, Irmgard Schenk-Kurz und Dr. Lothar Kurz, ohne die ich vermutlich garnicht existent wäre. Ganz besonders danke ich Ferry Häntsch, der die Hardware gebaut und programmiert hat, für seine Unterstützung und Eigeninitiative, das Kamerasystem kontinuierlich zu erweitern und zu verbessern. Desweiteren bedanke ich mich bei Daniel Kolster der – trotz dessen, dass er selbst genug zu tun hat – sich bereit erklärt hat, diese Arbeit korrekturzulesen, und sie um hunderte Kommata bereichert hat. Ausserdem gilt mein Dank meinen sonstigen Laborkollegen, Freunden und anderen Menschen die mich unterstützt haben. Vielen Dank! 81 A Evaluation der Kalibrierungsverfahren Dieser Anhang zeigt Fotos der beiden Evaluationsumgebungen in denen die Kalibrierungsverfahren in Kapitel 4 evaluiert wurden. Die Räume befinden sich beide im Dachgeschoss der Bauhausstraße 11. 82 A Evaluation der Kalibrierungsverfahren Abbildung A.1: Bilder der ersten Testumgebung. Untere Reihe: Referenzmodell 83 A Evaluation der Kalibrierungsverfahren Abbildung A.2: Bilder der zweiten Testumgebung. Untere Reihe: Referenzmodell 84 B Schaltpläne 85 B Schaltpläne IC1 GND (TOSC2)PC7 (TOSC1)PC6 (TDI)PC5 (TDO)PC4 (TMS)PC3 (TCK)PC2 PC1(SDA) PC0(SCL) C4 IN OUT C3 GND (OC2)PD7 (ICP)PD6 (OC1A)PD5 (OC1B)PD4 (INT1)PD3 (INT0)PD2 (TXD)PD1 (RXD)PD0 R3 4,7k 16 15 8 19 24 27 28 R2 GND GND GND 4 20 10k GND@2 GND@1 USB IC3 D+ DVBUS GND GND 17 C7 100n JP1 1 2 X2-6 X2-4 X2-5 X2-3 16 15 14 13 12 11 10 9 GND MICROMATCH-6 Q2 BC549C VCCIO VCC USBDM USBDP NC _RESET NC OSCI OSCO 3V3OUT FT232RL TXD RXD _RTS _CTS _DTR _DSR _DCD _RI CBUS0 CBUS1 CBUS2 CBUS3 CBUS4 1 5 3 11 2 9 10 6 23 22 13 14 12 Laser Trigger GND MEGA32-A AGND GND GND GND TEST GND 100n IC2 7805 GND GND C8 GND GND 100n 26 25 24 23 22 21 20 19 SPI-INTE ERFACE I²C BUS X2-2 X2-1 T1 BPX81 GND GND GND Reflexkoppler for hor. reference pos. 25 7 18 21 26 1000µ GND X3-2 C6 100n X3-1 + POWER SUPPLY 8-24V X1-3 X1-4 X1-5 X1-6 3 2 1 44 43 42 41 40 R6 GND 18 6 39 VCC (SCK)PB7 (MISO)PB6 (MOSI)PB5 (SS)PB4 (AIN1/OC0)PB3 (AIN0/INT2)PB2 (T1)PB1 (T0/XCK)PB0 LED1 20µ AREF AVCC AGND GND +5V X1-1 MICROMATCH-6 X1-2 10k C5 GND GND GND + 17 5 38 XTAL1 R4 29 27 28 XTAL2 30 31 32 33 34 35 36 37 300 8 GND 1 2 7 16MHz C2 32p Q1 GND (ADC7)PA7 (ADC6)PA6 (ADC5)PA5 (ADC4)PA4 (ADC3)PA3 (ADC2)PA2 (ADC1)PA1 (ADC0)PA0 RESET 10k 1k +5V 4 R5 C1 GND 32p +5V R1 USB to RS232 Converter GND GND Abbildung B.1: Schaltplan der Hauptplatine (entworfen und konstruiert von Ferry Häntsch) 86 B Schaltpläne External Switch Two wire serial Interface 1 SDA SWI 20 1k Connect to GND or VBAT SWI /1/4W 2.7 nF 2 SCL VBAT 19 3 VDD OA1 18 4 GND GND 17 5 TST OA2 16 open OB1 15 GND GND 14 100 nF 1 µF Tantalum 100 nF 6 7 Connect to GND or VBAT M VBAT 8...29 V 1k 8 HW 9 10 OB2 13 CPN VBAT 12 CPP VCP 11 /1/4W 100 nF 2.7 nF 220 nF 16 V 220 nF 16 V 100 µF Abbildung B.2: Schaltplan der Schrittmotorcontroller. Nachdruck aus TMC222 DATASHEET) [33] 87 Literaturverzeichnis [1] K IRSTEIN , C. UND M UELLER , H. 1998. Interaction with a Projection Screen Using a Camera-tracked Laser Pointer. In Proceedings of the 1998 Conference on Multimedia Modeling (October 12 - 15, 1998). MMM. IEEE Computer Society, Washington, DC, 191. 5 [2] O LSEN , D. R. UND N IELSEN , T. 2001. Laser pointer interaction. In Procee- dings of the SIGCHI Conference on Human Factors in Computing Systems (Seattle, Washington, United States). CHI ’01. ACM Press, New York, NY, 17-22. 5 [3] P ECK , C. H. 2001. Useful parameters for the design of laser pointer interaction techniques. In CHI ’01 Extended Abstracts on Human Factors in Computing Systems (Seattle, Washington, March 31 - April 05, 2001). CHI ’01. ACM Press, New York, NY, 461-462. 6 [4] M YERS , B. A., B HATNAGAR , R., N ICHOLS , J., P ECK , C. H., K ONG , D., M ILLER , R., UND L ONG , A. C. 2002. Interacting at a distance: measuring the performance of laser pointers and other devices. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems: Changing Our World, Changing Ourselves (Minneapolis, Minnesota, USA, April 20 - 25, 2002). CHI ’02. ACM Press, New York, NY, 33-40. 6 [5] C HENG , K. UND P ULO , K. 2003. Direct interaction with large-scale display systems using infrared laser tracking devices. In Proceedings of the Asia-Pacific Symposium on information Visualisation - Volume 24 (Adelaide, Australia). T. Pattison and B. Thomas, Eds. ACM International Conference Proceeding Series, vol. 142. Australian Computer Society, Darlinghurst, Australia, 67-74. 6 88 Literaturverzeichnis [6] C AVENS , D., V OGT, F., F ELS , S., UND M EITNER , M. 2002. Interacting with the big screen: pointers to ponder. In CHI ’02 Extended Abstracts on Human Factors in Computing Systems (Minneapolis, Minnesota, USA, April 20 - 25, 2002). CHI ’02. ACM Press, New York, NY, 678-679. 6 [7] A HLBORN , B. A., T HOMPSON , D., K REYLOS , O., H AMANN , B., UND S TAADT, O. G. 2005. A practical system for laser pointer interaction on large displays. In Proceedings of the ACM Symposium on Virtual Reality Software and Technology (Monterey, CA, USA, November 07 - 09, 2005). VRST ’05. ACM Press, New York, NY, 106-109. 6 [8] X. C HEN UND J. D AVIS . 2001. LumiPoint: Multi-User LaserBased Interaction on Large Tiled Displays. Technical report, Stanford University. 7 [9] J. O H UND W. S TUERZLINGER . 2002. Laser pointers as collaborative poin- ting devices. In Proceedings of Graphics Interface 2002, 141-149. 7 [10] B I , X., S HI , Y., C HEN , X., UND X IANG , P. 2005. Facilitating interaction with large displays in smart spaces. In Proceedings of the 2005 Joint Conference on Smart Objects and Ambient intelligence: innovative Context-Aware Services: Usages and Technologies (Grenoble, France, October 12 - 14, 2005). sOc-EUSAI ’05, vol. 121. ACM Press, New York, NY, 105-110. 7 [11] M ATVEYEV, S. V. UND G ÖBEL , M. 2003. Direct interaction based on a twopoint laser pointer technique. In ACM SIGGRAPH 2003 Sketches & Applications (San Diego, California, July 27 - 31, 2003). SIGGRAPH ’03. ACM Press, New York, NY, 1-1. 7 [12] M ATVEYEV, S. V. UND G ÖBEL , M. 2003. The optical tweezers: multiple- point interaction technique. In Proceedings of the ACM Symposium on Virtual Reality Software and Technology (Osaka, Japan, October 01 - 03, 2003). VRST ’03. ACM Press, New York, NY, 184-187. 7 [13] C RUZ -N EIRA , C., S ANDIN , D.J. UND D E FANTI T.A. 1993. Surround- screen projection-based virtual reality: the design and implementation of the CAVE. In Proceedings of the 20th annual conference on Computer graphics and interactive techniques. 135-142. 7 89 Literaturverzeichnis [14] B IMBER , O., G RUNDHÖFER , A., Z EIDLER , T., D ANCH , D., PAKOS , UND KA- P. 2006. Compensating Indirect Scattering for Immersive and Semi- Immersive Projection Displays. In Proceedings of IEEE Virtual Reality (IEEE VR’06), 7 [15] V OIDA , S., P ODLASECK , M., K JELDSEN , R., UND P INHANEZ , C. 2005. A study on the manipulation of 2D objects in a projector/camera-based augmented reality environment. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems (Portland, Oregon, USA, April 02 - 07, 2005). CHI ’05. ACM Press, New York, NY, 611-620. 7 [16] G OODRIDGE , S. G. 1995. The environment understanding interface: detecting and tracking human activity through multimedia sensors. In Proceedings of the 1995 Conference of the Centre For Advanced Studies on Collaborative Research (Toronto, Ontario, Canada, November 07 - 09, 1995). K. Bennet, M. Gentleman, H. Johnson, and E. Kidd, Eds. IBM Centre for Advanced Studies Conference. IBM Press, 24. 8 [17] U KITA , N. UND M ATSUYAMA , T. 2002. Real-time multi-target tracking by cooperative distributed active vision agents. In Proceedings of the First international Joint Conference on Autonomous Agents and Multiagent Systems: Part 2 (Bologna, Italy, July 15 - 19, 2002). AAMAS ’02. ACM Press, New York, NY, 829-838. 8 [18] Z HOU , X., C OLLINS , R. T., K ANADE , T., UND M ETES , P. 2003. A master- slave system to acquire biometric imagery of humans at distance. In First ACM SIGMM international Workshop on Video Surveillance (Berkeley, California, November 02 - 08, 2003). IWVS ’03. ACM Press, New York, NY, 113-120. 8 [19] Q URESHI , F. Z. UND T ERZOPOULOS , D. 2005. Surveillance camera sche- duling: a virtual vision approach. In Proceedings of the Third ACM international Workshop on Video Surveillance & Sensor Networks (Hilton, Singapore, November 11 - 11, 2005). VSSN ’05. ACM Press, New York, NY, 131-140. 8 [20] Y OSHIMI , B. H. UND P INGALI , G. S. 2002. A multimodal speaker detection and tracking system for teleconferencing. In Proceedings of the Tenth ACM 90 Literaturverzeichnis international Conference on Multimedia (Juan-les-Pins, France, December 01 06, 2002). MULTIMEDIA ’02. ACM Press, New York, NY, 427-428. 9 [21] S TRUBBE , H. UND L EE , M. S. 2001. UI for a videoconference camera. In CHI ’01 Extended Abstracts on Human Factors in Computing Systems (Seattle, Washington, March 31 - April 05, 2001). CHI ’01. ACM Press, New York, NY, 333-334. 9 [22] L IAO , C., L IU , Q., K IMBER , D., C HIU , P., F OOTE , J., UND W ILCOX , L. 2003. Shared interactive video for teleconferencing. In Proceedings of the Eleventh ACM international Conference on Multimedia (Berkeley, CA, USA, November 02 - 08, 2003). MULTIMEDIA ’03. ACM Press, New York, NY, 546554. 9 [23] L IU , Q., K IMBER , D., F OOTE , J., W ILCOX , L., UND B ORECZKY, J. 2002. FlySPEC: a multi-user video camera system with hybrid human and automatic control. In Proceedings of the Tenth ACM international Conference on Multimedia (Juan-les-Pins, France, December 01 - 06, 2002). MULTIMEDIA ’02. ACM Press, New York, NY, 484-492. 9 [24] C HEN , Y., C LARK , D. W., F INKELSTEIN , A., H OUSEL , T. C., UND L I , K. 2000. Automatic alignment of high-resolution multi-projector display using an un-calibrated camera. In Proceedings of the Conference on Visualization ’00 (Salt Lake City, Utah, United States). IEEE Visualization. IEEE Computer Society Press, Los Alamitos, CA, 125-130. 9 [25] P INHANEZ , C., K JELDSEN , R., TANG , L., L EVAS , A., P ODLASECK , M., S UKAVIRIYA , N., UND P INGALI , G. 2003. Creating touch-screens anywhere with interactive projected displays. In Proceedings of the Eleventh ACM international Conference on Multimedia (Berkley, CA, USA, November 02 - 08, 2003). MULTIMEDIA ’03. ACM Press, New York, NY, 460-461. 9 [26] H EIKKILÄ , M. UND P IETIKÄINEN , M. 2005. An image mosaicing module for wide-area surveillance. In Proceedings of the Third ACM international Workshop on Video Surveillance & Sensor Networks (Hilton, Singapore, November 11 - 11, 2005). VSSN ’05. ACM Press, New York, NY, 11-18. 10, 80 91 Literaturverzeichnis [27] B AHMUTOV, G., ET AL . 2005. Depth Enhanced Panoramas. Second International Conference on Video, Vision, and Graphics. Edinburgh, July 2005. 10 [28] B AHMUTOV, G., P OPESCU , V., UND M UDURE , M. 2006. Efficient large scale acquisition of building interiors. In Proceedings of the Eurographics 2006. EG 06. Vienna, Austria. 10, 80 [29] B RENT, R.P. Algorithms for minimization without derivatives. PrenticeHall, Engelwood Cliffs, NJ, 1973. 38 [30] S CHERFGEN D. Kollision von Strahl und Dreieck. http: //www.scherfgen-software.net/index.php?action= tutorials&topic=collision_2 (Stand: 12.11.2006) 51 [31] I NTEL C ORPORATION . Open source computer vision library reference manual, December 2000. http://sourceforge.net/projects/ opencvlibrary/. (Stand: 12.11.2006) 24, 32 [32] A LEXANDER box V ELIZHEV. GML C++ Camera Calibration Tool- http://research.graphicon.ru/calibration/gml-c+ +-camera-calibration-toolbox.html. (Stand: 12.11.2006) 24 [33] TRINAMIC M OTION C ONTROL G MB H & C O . KG. TMC222 - DATASHEET. Micro Stepping Stepper Motor Controller / Driver with Two Wire Serial Interface. (V. 1.05 / October 21, 2005). VII, 87 92