3D-Objektverfolgung mit Stereokameras zur
Transcrição
3D-Objektverfolgung mit Stereokameras zur
3D-Objektverfolgung mit Stereokameras zur bildbasierten Navigation autonom fliegender Luftfahrzeuge Bachelorarbeit zur Erlangung des Grades eines Bachelor of Science (B.Sc.) im Studiengang Computervisualistik Florian Bäthge Betreuer: Dr.-Ing. Franz Andert, Deutsches Zentrum für Luft- und Raumfahrt (DLR), Institut für Flugsystemtechnik, Abt. Unbemannte Luftfahrzeuge Betreuender Professor: Prof. Dr.-Ing. habil. Holger Theisel, Otto-von-GuerickeUniversität Magdeburg, Fakultät für Informatik, Institut für Simulation und Grafik, Arbeitsgruppe Visual Computing Magdeburg, 2. April 2012 ii Erklärung Hiermit erkläre ich, dass ich diese Abschlussarbeit selbständig verfasst habe, keine anderen als die angegebenen Quellen und Hilfsmittel verwendet habe und alle Stellen, die wörtlich oder sinngemäß aus veröffentlichten Schriften entnommen wurden, als solche kenntlich gemacht habe. Darüber hinaus erkläre ich, dass diese Abschlussarbeit nicht, auch nicht auszugsweise, bereits für eine andere Prüfung angefertigt wurde. Florian Bäthge Magdeburg, 2. April 2012 iii Kurzfassung Unbemannte Luftfahrzeuge finden heutzutage in vielen Szenarien Anwendung. Da je nach Einsatzgebiet eine Kollision oder gar ein Absturz fatal wären, ist es für moderne autonome Flugsysteme unabdingbar, sich auch in unbekannten Umgebungen orientieren und Hindernissen ausweichen zu können. Dafür kommen immer häufiger Kamerasysteme, insbesondere Stereokameras, zum Einsatz, die eine optische Navigation ermöglichen. Im Rahmen dieser Bachelorarbeit wird ein Verfahren zur Gewinnung dreidimensionaler Vektordaten zur Bestimmung des optischen Flusses mithilfe von Stereokameras entwickelt und getestet. Um dies zu erreichen, werden über die Zeit homologe Punkte in beiden Kamerabildern detektiert und verfolgt. Die durch stereoskopische Betrachtung ermittelten dreidimensionalen Positionen und Bewegungsvektoren können dann zur relativen Bewegungsschätzung des Fluggeräts oder in weiteren Anwendungen zur Generierung einer Umgebungskarte genutzt werden. Die Ergebnisse des Verfahrens werden an Testdaten aus Flugversuchen und mit bekannten und vermessenen Objekten getestet. Abstract Nowadays, unmanned aerial vehicles (UAV) are used in many scenarios. Since a collision or even a crash would be fatal, it is important for a UAV to be able to navigate even in an unknown environment. To achieve this, camera systems, especially stereo camera systems can be used to optain an optical navigation solution. This bachelor thesis’ goal is to develop an algorithm to detect and track homologous points in a stereo image series over time. Using stereo-geometric calculations it is possible to calculate the position of those features in three-dimensional space. These points and vectors can be used to calculate relative position changes of the vehicle itself or in further projects to create an obstacle map of the environment. The results are validated using image data from a manual flight test on measured reference objects. Inhaltsverzeichnis Abbildungsverzeichnis vi Tabellenverzeichnis viii Abkürzungsverzeichnis ix 1 Einleitung 1.1 Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Versuchsträger ARTIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Aufbau der Arbeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 4 2 Grundlagen 2.1 Lochkameramodell . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Gewinnung von 3D-Informationen aus Stereobilddaten . . . . . . . . 2.2.1 Epipolargeometrie . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Standard-stereoskopischer Kameraaufbau . . . . . . . . . . 2.3 Kameraparameter . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Linsenverzeichnung . . . . . . . . . . . . . . . . . . . . . . 2.3.2 Rektifizierung . . . . . . . . . . . . . . . . . . . . . . . . . 2.4 Stand der Forschung . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1 Rekonstruktion von Raumpunkten aus Kamerabildern . . . . 2.4.2 Berechnung der relativen Eigenbewegung . . . . . . . . . . 2.5 Tracking und Stereo-Matching mittels eines Lucas-Kanade-Trackers 3 Implementierung 3.1 DIP-Framework . . . . . . . . . . . . . . . 3.2 Erkennen und Verfolgen markanter Punkte . 3.3 Stereo-Matching homologer Bildpunkte . . 3.3.1 Finden korrespondierender Punkte in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stereobildpaaren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 7 8 9 11 11 12 14 14 15 16 . . . . 19 19 22 24 24 iv Inhaltsverzeichnis 3.4 3.5 3.3.2 Kontrolltracking im rechten Bildverlauf . . . Koordinatentransformation und Filterung . . . . . . Berechnung der Eigenbewegung . . . . . . . . . . . 3.5.1 Bestimmung der relativen Kamerabewegung 3.5.2 Rekonstruktion der Flugbahn . . . . . . . . v . . . . . . . . . . . . . . . zwischen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . zwei Zeitschritten . . . . . . . . . 4 Evaluierung des Verfahrens 4.1 Auswertung von Flugversuchsdaten . . . . . . . . . . . . . . . . . . . . . 4.1.1 Stereobilddaten aus Kamerafahrt an einem Rollwagen . . . . . . . 4.1.2 Trageversuch mit Landmarken und nach vorne gerichteter Kamera 4.1.3 Flugversuch mit nach unten gerichteter Kamera . . . . . . . . . . 4.2 Landmarkenvermessung mit Hilfe eines Tachymeters . . . . . . . . . . . . 4.3 Genauigkeitsüberprüfungen an Referenzmessungen . . . . . . . . . . . . . 4.4 Bestimmung der Eigenbewegung und Vergleich mit Navigationsdaten . . 26 27 30 30 31 . . . . . . . 34 34 34 35 37 38 39 45 5 Zusammenfassung 5.1 Verfahren im Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Ausblick auf zukünftige Arbeiten . . . . . . . . . . . . . . . . . . . . . . . . 52 52 53 Literaturverzeichnis 55 . . . . . . . Abbildungsverzeichnis 1.1 1.2 Versuchsträger midiARTIS im Flugversuch . . . . . . . . . . . . . . . . . . . Aufbau des midiARTIS-Hubschraubers mit den wichtigsten Komponenten . . 2.1 2.2 2.3 2.4 2.5 2.6 2.7 Zentralprojektion . . . . . . . . . . . . . . . . . . . . . Herleitung der Zentralprojektion per Strahlensatz . . . . Schematischer Aufbau der Epipolargeometrie . . . . . . . Achsparalleler standard-stereoskopischer Aufbau . . . . . Entfernungsauflösung mit Stereokamera . . . . . . . . . Transformation zweier Kamerabilder zur Stereoanalyse . Featuretracking und Korrespondenzsuche in Stereobildern . . . . . . . . . . . . . . 6 6 8 9 10 13 18 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 DIP-Framework in Simulation und Flug . . . . . . . . . . . . . . . . . . . SPICE-Benutzerschnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . Filter-Pipeline im Experimentalcommander . . . . . . . . . . . . . . . . . . Einstellungsfenster der cl_FeatureTracker Klasse . . . . . . . . . . . . . . . Verfolgte Punkte im Kamerabild . . . . . . . . . . . . . . . . . . . . . . . Einstellungsfenster des entwickelten TrackedObjectsFilters . . . . . . . . . Stereo-Feature-Tracking: Verfolgte Punkte und Korrespondenzen . . . . . . Trackingbestätigung durch zeitliches Tracking in den rechten Kamerabildern Abweichung der vertikalen Disparität dy nach Entzerrung und Rektifizierung Verwendete Koordinatensysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 21 22 23 23 24 26 27 29 32 4.1 4.2 4.3 4.4 4.5 4.6 4.7 Korrespondierende Punkte im Bilddatensatz der Kamerafahrt . . . . . Korrespondierende Punkte im Bilddatensatz des Trageversuchs . . . . Korrespondierende Punkte im Bilddatensatz des Flugversuchs . . . . . Tachymeter Leica Viva TS15 zur Vermessung der Landmarken . . . . Entfernungsschätzung durch optische Analyse - Datensatz 1 . . . . . Entfernungsschätzung durch optische Analyse - Datensatz 2 . . . . . Vergleich der x-Position - optische Navigation und Navigationslösung . . . . . . . 35 36 38 39 41 43 46 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3 vi Abbildungsverzeichnis 4.8 Vergleich der y-Position - optische Navigation und Navigationslösung . . . . 4.9 Vergleich der Flughöhe - optische Navigation und Navigationslösung . . . . . 4.10 Vergleich der Trajektorie aus Navigationslösung und optischer Navigation aus Sicht von oben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.11 Vergleich x-Position aus Nav-Lösung und optischer Navigation mittels TransformationEstimationSVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.12 Vergleich y-Position aus Nav-Lösung und optischer Navigation mittels TransformationEstimationSVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.13 Vergleich Flughöhe aus Nav-Lösung und optischer Navigation mittels TransformationEstimationSVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii 47 48 48 49 50 50 Tabellenverzeichnis 1.1 1.2 Technische Daten des midiARTIS Flugversuchsträgers . . . . . . . . . . . . . Parameter der verwendeten Stereokamera . . . . . . . . . . . . . . . . . . . 3 4 2.1 Intrinsische Kameraparameter . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.1 Geeignete Parameter zum Stereo-Feature-Tracking . . . . . . . . . . . . . . 25 4.1 4.2 Werte der Landmarkenvermessung des TrackedObjectFilters zu Datensatz 1 . Werte der Landmarkenvermessung des TrackedObjectFilters zu Datensatz 2 . 42 44 viii Abkürzungsverzeichnis ARTIS Autonomous Rotorcraft Testbed for Intelligent Systems DIP Digital Image Processing Framework ICP Iterative Closest Point IMU Inertial Measurement Unit, Inertialsensorik OBDIP OnBoard DIP OGDIP OnGround DIP OpenCV Open Computer Vision Library RANSAC Random Sample Consensus SPICE Smart Program for Image Computing Experiments SVD Singular Value Decomposition UAV Unmanned Aerial Vehicle, Unbemanntes Luftfahrzeug KAPITEL 1 Einleitung Der Einsatz unbemannter Luftfahrzeuge stößt heutzutage in vielen Bereichen von Wirtschaft und Forschung auf großes Interesse. So lassen sich unbemannte Luftfahrzeuge in vielen Szenarien einsetzen, sei es zur Erkundung unwegsamen Geländes oder zukünftig sogar zur Unterstützung bei der Bergung von Menschen, beispielsweise bei Katastropheneinsätzen. Dabei steht auch besonders der Wunsch des autonomen Handelns der Luftfahrzeuge im Vordergrund, also das selbständige Fliegen und Ausführen von Aufgaben ohne direkte menschliche Kontrolle oder Steuerung. Um dies zu erreichen, sind moderne autonome, unbemannte Luftfahrzeuge häufig mit verschiedensten Sensoren ausgerüstet, zum Beispiel GPS, Radar, Laserscanner oder Kamerasysteme. Da insbesondere Sensoren wie GPS, welche Informationen von Satelliten empfangen müssen, unter gewissen Umständen gestört werden oder der Empfang ausfallen kann, rückt der Einsatz von Kamerasystemen zur optischen Navigation immer stärker in den Fokus. 1.1 Zielsetzung Ziel dieser Arbeit ist die Entwicklung eines Verfahrens zur Gewinnung von räumlichen Positionsinformationen verfolgter markanter Objekte (Features) auf Basis von Stereobilddaten. Dazu sollen in den Kamerabildern gut verfolgbare Merkmale bestimmt und deren Position im anderen Stereobild ermittelt werden. Anhand dieser Bildpositionen kann über stereogeometrische Berechnungen die Position dieser Punkte im Raum rekonstruiert werden. 1 1.2 Versuchsträger ARTIS 2 Die so ermittelten Punktdaten sind vielfältig einsetzbar und können beispielsweise zur sichtgestützten Navigation (visuelle Odometrie) oder zur Erstellung von Umgebungskarten zum Erkennen und Ausweichen von Hindernissen genutzt werden. In dieser Arbeit sollen die zu jedem Zeitschritt ermittelten 3D-Punktmengen dazu dienen, relative Bewegungsänderungen zu bestimmen und mit der durch GPS und IMU ermittelten Navigationslösung zu vergleichen. Um die Richtigkeit der ermittelten Werte zu zeigen, sollen die berechneten Raumpunkte mit aufgenommenen, vermessenen Landmarken verglichen werden. 1.2 Versuchsträger ARTIS Das Institut für Flugsystemtechnik des Deutschen Zentrums für Luft- und Raumfahrt (DLR) in Braunschweig verfügt mit der ARTIS-Reihe über eine Flotte von Hubschraubern verschiedener Größenordnungen. Diese sind mit Sensoren und Computern ausgestattet, um unterschiedliche Szenarien autonom fliegender Luftfahrzeuge (UAV) sowohl in der Simulation als auch im Flugversuch testen zu können. Abb. 1.1: Versuchsträger midiARTIS im Flugversuch Abbildung 1.1 zeigt den für diese Arbeit verwendeten Hubschrauber midiARTIS (technische Daten siehe Tabelle 1.1) im Flug. Abbildung 1.2 zeigt den modularen Aufbau des Fluggeräts. Der Hubschrauber kann je nach Versuchsszenario mit verschiedenen Kameras an der Vorder- 1.2 Versuchsträger ARTIS 3 seite ausgerüstet werden. Dafür stehen sowohl Mono-, Stereo- oder Infrarotkameras sowie ein Laserscanner zur Verfügung. Für die Aufnahme von Videodaten für diese Arbeit wurde der Hubschrauber mit einer zum Boden gerichteten Stereokamera der Firma Videre-Design ausgestattet. Die genauen Kameraspezifikationen können der Tabelle 1.2 entnommen werden. Für die Bildverarbeitungsprozesse steht im midiARTIS ein eigener Rechner zur Verfügung, welcher sich lediglich mit dem Aufzeichnen und Auswerten der Daten aus den optischen Sensoren beschäftigt. Über ein LAN-Interface kann der Bildverarbeitungsrechner mit dem Flugrechner kommunizieren und beispielsweise gewonnene Informationen aus Bildern dort in die Navigation oder Missionsplanung einfließen lassen. Die von den Kameras aufgezeichneten Bilddaten können dabei für das autonome Fliegen direkt an Bord des Hubschraubers im Bildverarbeitungsrechner ausgewertet und genutzt werden oder für eine Bearbeitung in der Simulation oder die Entwicklung neuer Verfahren gespeichert und später verarbeitet werden. GPS-Antenne Prisma Magnetometer Freewave-Antenne WLAN Sonar Stromversorgung Stereokamera IMU/GPS/Telemetrie Bildverarbeitungsrechner Flugsteuerrechner Abb. 1.2: Aufbau des midiARTIS-Hubschraubers mit den wichtigsten Komponenten Tab. 1.1: Technische Daten des midiARTIS Flugversuchsträgers Rotorkreisdurchmesser 1,9 m Rotordrehzahl 25 Hz Antrieb 1,5 kW Verbrennungsmotor Leermasse 6 kg Max. Abflugmasse 12 kg Flugsteuerrechner Intel P4 1,4 GHz, QNX Neutrino OS Bildverarbeitungsrechner Intel Core2Duo 1,5 GHz, Linux OS 1.3 Aufbau der Arbeit 4 Tab. 1.2: Parameter der verwendeten Stereokamera Hersteller/Typ Videre Design STOC Bildgröße 640 px × 480 px Bildfrequenz 30 Hz Brennweite 700 px Basisabstand 30 cm Neben den Bilddaten der Kameras kann der midiARTIS-Hubschrauber auch Daten des GPSSensors, der Inertialsensorik (IMU) oder eine daraus gefilterte Navigationslösung aufzeichnen, um Berechnungen an den Bildern auch in Bezug auf das geodätische sowie das Weltkoordinatensystem durchführen zu können. 1.3 Aufbau der Arbeit Im folgenden Kapitel wird der grundlegende Aufbau stereogeometrischer Kamerasysteme sowie die wichtigsten Berechnungsverfahren vorgestellt und erläutert. Dazu sollen die Grundlagen optischer Abbildungen auf eine oder mehrere Kameras erläutert werden, um einen Einblick in die Funktionsweise und typischen Charakteristiken von Stereokamerasystemen zu liefern. Außerdem wird dort ein Überblick über den aktuellen Stand der Forschung gegeben. Ausgehend aus den Anforderungen und den Erkenntnissen aus bisherigen Forschungsarbeiten wird dann der entwickelte eigene Ansatz kurz erläutert. Kapitel 3 soll einen tieferen Einblick in die Implementierung des geplanten Verfahrens bieten. Dazu wird eine grundlegende Übersicht über das verwendete Entwicklungsframework gegeben sowie die Integration des neuen Verfahrens in das System beschrieben. Des Weiteren wird in dem Kapitel das genaue Vorgehen zum Verfolgen markanter Punkte und die Rekonstruktion der Raumpunkte beschrieben. In Kapitel 4 werden die zur Verfügung stehenden Videodaten analysiert und die Ergebnisse des Verfahrens an Referenzwerten ausgewertet. Anschließend wird das Thema in Kapitel 5 zusammengefasst und ein Ausblick auf weitere Arbeiten gegeben. KAPITEL 2 Grundlagen In diesem Kapitel wird ein grundlegender Einblick in optische Abbildungen durch Kameras gegeben. Dabei werden die mathematischen Grundlagen von Projektionen auf Kameras und auch die geometrischen Zusammenhänge in Stereokameras erläutert, sowie die Eigenschaften realer Kamerasysteme näher gebracht. Des Weiteren wird ein Überblick über bestehende Forschungsarbeiten auf diesem Gebiet sowie über das entwickelte Verfahren gegeben. 2.1 Lochkameramodell Um geometrische Betrachtungen an Kamerasystemen durchzuführen, wird normalerweise von dem vereinfachten Lochkameramodell ausgegangen, da somit Punkte im dreidimensionalen Raum durch einfache geometrische Projektionen auf eine Bildebene abgebildet werden können. Das Lochkameramodell beschreibt dabei eine projektive Abbildung von Punkten aus dem sichtbaren Bereich des dreidimensionalen Raums R3 durch ein projektives Zentrum c auf eine projektive Bildebene B des Raums R2 , wobei c nicht auf B liegen darf [Fau95]. Der Abstand von Projektionszentrum und Bildebene wird dabei als Brennweite f bezeichnet. 5 2.1 Lochkameramodell 6 zc pc (xc ,yc ,zc ) c q(x,y) xc f yc Abb. 2.1: Zentralprojektion Abbildung 2.1 veranschaulicht die Zentralprojektion als skalierte, gespiegelte Projektion von Objektpunkten auf die Bildebene. Ein Punkt pc = (xc ,yc ,zc )T wird dabei wie in Abbildung 2.2 mittels xc yc T T (xc , yc , zc ) 7→ f ,f (2.1) zc zc auf einen Punkt qc der Bildebene abgebildet [HZ04, S. 153ff]. In homogenen Koordinaten ausgedrückt entspricht diese projektive Transformation einer Multiplikation mit der so genannten Projektionsmatrix P xc xc f xc f 0 0 0 y c yc (2.2) 7→ f yc = 0 f 0 0 zc zc 0 0 1 0 zc 1 1 zqc = Ppc (2.3) qc = (xc /z , yc /z)T . (2.4) y Bildebene zc yc c z y0 f Abb. 2.2: Herleitung der Zentralprojektion - Es gilt: y 0 = f yzcc (analoges gilt in x-Richtung) 2.2 Gewinnung von 3D-Informationen aus Stereobilddaten 7 Da üblicherweise der Ursprung des Bildkoordinatensystems nicht mit dem Durchstoßpunkt der optischen Achse übereinstimmt, muss zur Transformation der Punkte von Sensorkoordinaten in Bildkoordinaten, der so genannten inneren Transformation, um den Bildhauptpunkt (x0 ,y0 ) verschoben werden. Des Weiteren werden oftmals unterschiedliche horizontale und vertikale Brennweiten (fx , fy ) verwendet, wenn die Einheiten in x- und y-Richtung unterschiedliche Größen haben [And11], sowie eventuell eine Scherung s des Bildsensors, falls die Sensorachsen nicht orthogonal sind. Diese Parameter können somit zur intrinsischen Kamerakalibrierungsmatrix K zusammengefasst werden mit der Form fx s x0 K = 0 fy y0 . 0 0 1 (2.5) Gleichzeitig ist es durch diese Transformationsvorschrift auch umgekehrt möglich, die eigentlichen Bildkoordinaten zu normieren. Dabei kann man dann von einer Projektion mit der Brennweite f = 1 und dem Bildhauptpunkt (0,0) rechnen. Um die Raumposition eines Punktes nicht nur in Bezug auf die Kamera sondern auch auf das Weltkoordinatensystem zu bestimmen, muss in der so genannten externen Transformation auch die Translation t und Rotation R der Kamera selbst beachtet werden. Die externe Transformation pc = R pw + t kann dabei in die gesamte Transformation integriert werden. Somit kann man durch zqc = K [R|t] pw (2.6) einen Raumpunkt in Weltkoordinaten auf einen Bildpunkt abbilden. Bei der Abbildung von Raumpunkten auf eine Bildebene geht allerdings immer eine Dimension verloren. Somit ist es auch trotz der Kameraparameter nicht möglich, aus einem einzelnen Bildpunkt q(x,y) den ursprünglichen Punkt in R3 ohne weitere Informationen zu rekonstruieren. 2.2 Gewinnung von 3D-Informationen aus Stereobilddaten Um die bei der Projektion auf die Kamerabildebene verlorene Tiefeninformation von Raumpunkten rekonstruieren zu können, werden häufig Stereokameras eingesetzt. Bei solchen Kamerasystemen wird der (annähernd) gleiche Bereich von mehreren Kameras aufgenommen, was zusätzliche Informationen liefert und die Rekonstruktion der Punkte im Raum ermöglicht. 2.2 Gewinnung von 3D-Informationen aus Stereobilddaten 8 2.2.1 Epipolargeometrie Mathematisch beschrieben werden diese geometrischen Beziehungen durch die so genannte Epipolargeometrie [Luh00]. Abbildung 2.3 zeigt eine schematische Darstellung, welche die Epipolargeometrie mit zwei Kameras beschreibt. Ein Punkt pw wird dabei im linken Bild auf den Bildpunkt ql und im rechten Bild auf qr abgebildet. Betrachtet man nun einen weiteren Punkt p̂w , welcher auf der Geraden pw cl liegt, so wird deutlich, dass dieser im linken Bild ebenso auf ql abgebildet wird, im rechten Bild allerdings auf einen anderen Punkt q̂r . E pw p̂w ql l1 cl zl yl el er q̂r qr l2 zr xl xr cr yr R, t Abb. 2.3: Schematischer Aufbau der Epipolargeometrie Allgemein gilt dabei, dass die Linie pw cl im rechten Bild auf die Gerade er qr abgebildet wird sowie äquivalent die Linie pw cr auf die Gerade el ql . Das sind die so genannten Epipolarlinien. Die Punkte el und er werden als Epipole bezeichnet. Die Punkte cl , cr und pw spannen die Epipolarebene E des Punkts pw auf. Alle Punkte dieser Ebene werden auf die gleichen Epipolarlinien abgebildet. Die geometrischen Beziehungen der Punkte im Stereofall spiegeln sich in der so genannten 3 × 3-Essentialmatrix E und der 3 × 3-Fundamentalmatrix F wieder [Fau93; Lon87; Zha98]. An den verwendeten Kamerasystemen können diese durch die Kamerakalibrierung ermittelt werden. Durch diese Information vereinfacht sich das 2D-Korrespondenzproblem auf die Suche nach den korrespondierenden Features entlang der Epipolarlinie. Um diesen Vorteil möglichst einfach auch am Rechner nutzen zu können, wird mit Hilfe der Rektifizierung eine Art virtuelles achsparalleles Stereosystem erzeugt [AH88; TV98]. Sind die intrinsischen und extrinsischen Parameter der Kamera bekannt, können die beiden Stereobilder derart auf eine gleiche Bildebene rückprojiziert werden, dass alle Epipolarlinien horizontal verlaufen und korrespondierende Punkte fortan auf 2.2 Gewinnung von 3D-Informationen aus Stereobilddaten 9 der gleichen Bildzeile liegen. Man spricht dann von einem standard-stereoskopischen Aufbau. Die Rektifizierung und Entzerrung der Bildpunkte wird in Abschnitt 2.3 näher erläutert. 2.2.2 Standard-stereoskopischer Kameraaufbau Projektionslinie cl pc verschoben um b pc (xc ,yc ,zc ) zc zc cl d ql (xl ,yl ) f qr (xr ,yr ) yc xc b cr f yc xc qr (xr ,yr ) Abb. 2.4: Achsparalleler standard-stereoskopischer Aufbau Abbildung 2.4 zeigt den standard-stereoskopischen Aufbau mit zwei parallel ausgerichteten Kameras. Die zwei Projektionsstrahlen zeigen dabei, wie ein Raumpunkt pc über die beiden Projektionszentren cl und cr auf zwei Bildpunkte ql und qr der beiden Bildebenen abgebildet wird. Der Projektionsstrahl des Punkts pc auf das rechte Bild sowie der Bildpunkt qr wird in der Grafik auch um den Basisabstand b auf das linke Bild verschoben dargestellt, um den Zusammenhang der beiden Bildpunkte zu verdeutlichen. Da sich beim standard-stereoskopischen Fall beide Bildpunkte auf der gleichen Bildzeile befinden, existiert zwischen ihnen nur ein horizontaler Abstand d (Disparität). Somit lässt sich die Abbildung durch ein einfaches Strahlensatzproblem beschreiben und da sowohl Basisabstand b, Brennweite f und die Disparität d bekannt sind, ist auch die Bestimmung des Tiefenwerts (z-Richtung) möglich. 2.2 Gewinnung von 3D-Informationen aus Stereobilddaten 10 Relativ zum linken Kamerakoordinatensystem gilt dabei (xl − x0 ) f (yl − y0 ) yc = zc · f bf zc = . d (2.7a) x c = zc · (2.7b) (2.7c) Aufgrund der diskreten Natur der Pixel digitaler Kameras ist das Finden zusammengehörender Merkmale in beiden Bildern, und somit die Berechnung der Disparität, immer mit einer gewissen Ungenauigkeit verbunden. Allerdings liegt dieser Fehler bei modernen Algorithmen dank Interpolation im Subpixelbereich. Als realistische Werte gelten ∆d = 0,25 px [Wil98] oder ∆d = 0,5 px [SS02]. Bei zunehmender Entfernung des Punkts wird die Disparität deutlich kleiner und die Ungenauigkeit der Tiefenwerte nimmt zu zc f zc ∆yc = ∆d f zc2 ∆zc = ∆d . bf (2.8a) ∆xc = ∆d (2.8b) (2.8c) Gleichung 2.8c zeigt, dass die Ungenauigkeit der Tiefe quadratisch zunimmt [And11, S. 30], wie in Abbildung 2.5 dargestellt. Aufgrund der stark zunehmenden Ungenauigkeit bei höherer Tiefe sollten zu weit entfernte Punkte verworfen werden. Welche Grenzwerte dabei gewählt werden, hängt von der verwendeten Stereokamera ab. Für die verwendete Kamera wurde als Grenzwert zmax = 45 m gewählt, da die Tiefenungenauigkeit bei ∆d = 0,5 px dort bereits knapp 5 m beträgt. 6 ∆zc [m] 5 4 3 2 1 0 0 10 20 30 40 50 zc [m] Abb. 2.5: Entfernungsauflösung mit Stereokamera: b = 0,3 m, f = 700 px, ∆d = 0,5 px (durchgezogene Linie), ∆d = 0,25 px (gestrichelte Linie) 2.3 Kameraparameter 11 2.3 Kameraparameter Zwar lassen sich anhand des Lochkameramodells die generellen geometrischen Betrachtungen durchführen, allerdings verhalten sich reale Kameras nicht wie dieses optimale Modell. Aufgrund der verwendeten Linsen kommt es, insbesondere bei Linsen mit niedriger Brennweite, zu einer Verzeichnung des Bilds. Des Weiteren müssen spezielle Kameraeigenschaften wie unterschiedliche horizontale und vertikale Brennweiten oder ein leicht zur Bildmitte verschobenes optisches Zentrum betrachtet werden. Um also in praktischen Anwendungen genaue Ergebnisse zu erhalten, müssen verschiedene Parameter des Kamerasystems durch eine Kalibrierung ermittelt werden. Das verwendete Stereokamerasystem der Firma Videre Design verfügt dazu über Tools [SRI08], welche anhand einer Reihe von Aufnahmen eines Kalibrierungsmusters in verschiedenen Positionen des Bilds die intrinsischen und extrinsischen Parameter der Kamera ermitteln können. Für die intrinsischen Kameraparameter (siehe Tabelle 2.1) wird dabei das Modell von Brown [Bro71] verwendet. Tab. 2.1: Intrinsische Kameraparameter (x0 , y0 ) Kamerazentrum (px) fx , fy horizontale und vertikale Brennweite (px) κ1 , κ2 , κ3 Radiale Verzerrungsparameter τ1 , τ2 Tangentiale Verzerrungsparameter 2.3.1 Linsenverzeichnung Um für die Stereobetrachtung genaue Werte zu haben, muss besonders die Linsenverzerrung der Kameras berücksichtigt werden. [Bro71] und [TV98] beschreiben die radiale Verzeichnung eines Punkts qu (xu ,yu ) zu einem Punkt qd (xd ,yd ) in normierten Koordinaten mit xd = xu (1 + κ1 r2 + κ2 r4 + κ3 r6 ) + dx 2 4 6 yd = yu (1 + κ1 r + κ2 r + κ3 r ) + dy (2.9a) (2.9b) und r2 = x2d + yd2 . Der Grad der Verzerrung wird mit κ1 , κ2 und κ3 angegeben. dx und dy spiegeln dabei die tangentiale Verzeichnung wider dx = 2τ1 xu yu + τ2 (r2 + 2x2u ) (2.10a) dy = 2τ2 xu yu + τ1 (r2 + 2yu2 ). (2.10b) 2.3 Kameraparameter 12 Neben der radialen und tangentialen Verzerrung ermittelt das Kalibrierungswerkzeug auch die manchmal leicht unterschiedlichen horizontalen und vertikalen Brennweiten der Kamera sowie die Position des Kamerazentrums im Bild [SRI08]. 2.3.2 Rektifizierung Sind die relativen Orientierungen der Stereokameras zueinander bekannt, werden bei der Kalibrierung außerdem die 3 × 4-Projektionsmatrix P sowie eine 3 × 3-Rektifizierungsmatrix R bestimmt. Mit Hilfe der Rektifizierungsmatrix kann ein entzerrter Bildpunkt qd (xd ,yd ) so transformiert werden, wie er im rektifizierten Kamerabild liegt. Liegt die Projektionsmatrix P1 (hier am Beispiel der linken Kamera) in der Form p11 p12 p13 p14 p21 p22 p23 p24 p31 p32 p33 p34 (2.11) vor, mit den Zeilen pj = (pj1 , pj2 , pj3 ) (die vierte Spalte wird dabei nicht betrachtet) und den Kamerazentren c1 und c2 , so wird die Rektifizierungmatrix durch ((c1 × c2 ) × c1 )T R1 = (c1 × c2 )T p2 × p3 p3 × p1 p1 × p2 ((c1 − c2 ) × (c2 × c1 ))T (2.12) beschrieben [And06]. Gleiches gilt für die Rektifizierungsmatrix R2 der rechten Kamera, welche aus der Projektionsmatrix P2 gebildet werden kann. Zwei Bildpunkte q1 = (x1 ,y1 )T und q2 = (x2 ,y2 )T können dann durch Multiplikation der jeweiligen Rektifizierungsmatrix in ihre rektifizierten Bildpunkte transformiert werden: u1 u2 x2 x1 v1 = R1 y1 und v2 = R2 y2 . w1 1 w2 1 (2.13) Die rektifizierten Bildkoordinaten sind dann q10 = x01 y10 ! = u1 /w1 v1 /w1 ! und q20 = x02 y20 ! ! = u2 /w2 . v2 /w2 (2.14) 2.3 Kameraparameter 13 Anhand dieser Gleichungen lässt sich die komplette Verarbeitung der von den Kameras aufgezeichneten Punkten beschreiben. Die Punkte in Pixelkoordinaten werden normiert, entzerrt und rektifiziert. Anhand dieser Punkte können dann stereogeometrische Betrachtungen durchgeführt werden und der ursprünglich von den Kameras aufgezeichnete Raumpunkt rekonstruiert werden. Abbildung 2.6 zeigt das Schema der Verarbeitung der Bildpunkte der beiden Kameras. Raumpunkt p = (x,y,z)T Bildpunkt links (Pixelkoordinaten) q1 = (x1 , y1 )T Bildpunkt rechts (Pixelkoordinaten) q2 = (x2 , y2 )T Kameramatrix Kameramatrix Verzeichnungskorrektur Verzeichnungskorrektur Rektifizierung Rektifizerung Bildpunkt (normierte Koordinaten) q10 = (x01 , y10 )T Bildpunkt (normierte Koordinaten) q20 = (x02 , y20 )T Stereo-Matching und Raumpunktberechnung Rekonstruierter Raumpunkt p0 = (x,y,z)T Abb. 2.6: Transformation zweier Kamerabilder zur Stereoanalyse 2.4 Stand der Forschung 14 2.4 Stand der Forschung Verfahren zur Verfolgung markanter Punkte in Bildsequenzen sowie die Berechnung des optischen Flusses oder der Eigenbewegung spielen zunehmend in immer mehr Bereichen eine Rolle. So werden in den verschiedensten Bereichen der Forschung Verfahren zur Auswertung von Bildern mit dem Ziel der Gewinnung von Tiefenwerten entwickelt. Diese können sowohl auf Mono-, Stereo- oder gar Multikamerasystemen basieren oder Tiefeninformationen durch andere Sensoren nutzen. 2.4.1 Rekonstruktion von Raumpunkten aus Kamerabildern Für die Untersuchung von Stereobildern oder allgemein die Rekonstruktion von Tiefenwerten wurden dabei je nach Anwendungsfall verschiedene Verfahren entwickelt, um korrespondierende Punkte in Stereobildern zu finden. Auch für die Berechnung der Eigenbewegung existieren mehrere bekannte und zuverlässige Verfahren, die anhand von Punktdaten aus Bildern die Kamerabewegung bestimmen können. Bei den Anwendungen, die auf Monokameras und zusätzlichen Sensoren basieren, ist insbesondere die Arbeit von Kanade, Amidi und Ke [KAK04] zu nennen. Darin werden zur optischen Navigation eines autonomen Kleinhubschraubers mit Hilfe eines Lucas-Kanade-Trackers markante Punkte in einem Monokamerabild verfolgt und die Tiefe anhand von Daten eines Lasersensors bestimmt. Die so gewonnenen Raumpunkte dienen dann der Bewegungsschätzung und dem Mapping der Umgebung. Aufgrund ihres relativ günstigen Preises und dem Vorteil eines rein passiven Verfahrens (also ohne Aussenden eigener Signale, wie bei Radar oder Laser) verwenden viele Forschungsarbeiten Stereokamerasysteme für die Rekonstruktion von Raumpunkten oder die optische Navigation. Viele Arbeiten haben dazu das Ziel, Tiefenkarten (Disparity Maps) der gefilmten Umgebung zu erzeugen, also Bilder, welche anstelle der Farbwerte die Entfernung des Bildpunkts zum Kamerasensor codieren. Ein allgemeiner Algorithmus zur Berechnung einer Dense Disparity Map wird in [Fua93] gegeben. Konolige [Kon97] nutzt dazu die so genannte Area Correlation an einer kalibrierten Stereokamera zur Generierung von Tiefenkarten für das SRI Small Vision System. Agrawal, Konolige und Iocchi [AKI05] nutzen generierte Tiefenkarten aus Stereobildern, um die Bewegung einzelner, sich unabhängig bewegender Objekte zu bestimmen. Auch die Arbeit von Hirschmüller, Innocent und Garibaldi [HIG02a] zielt auf die Generierung einer dichten Tiefenkarte mittels kalibrierter Stereokameras ab. Dazu wird die so genannte 2.4 Stand der Forschung 15 Sum-of-Absolute-Differences-Korrelation auf rektifizierten Kamerabildern angewendet. Um Unstetigkeiten in bestimmten Bildbereichen ausgleichen, werden weitere Nachverarbeitungsschritte durchgeführt. Generell basieren die meisten Arbeiten in dem Bereich auf rektifizierten Bildern, da auf diesen effizient gerechnet werden kann und die Ergebnisse eine hohe Genauigkeit haben. Für die Rektifizierung von Stereobildern existieren dementsprechend auch mehrere Verfahren, um die Stereobilder so zu transformieren, dass diese dem standard-stereoskopischen Modell entsprechen. Dabei sind insbesondere die Arbeiten von Ayache und Hansen [AH88], Trucco und Verri [TV98] oder [SH10] zu nennen. Die Arbeit von Andert [And06] nutzt das bereits von Konolige [Kon97] präsentierte Small Vision System zur Erzeugung einer Tiefenkarte. Mit Hilfe dieser Tiefenkarte sollen am ARTISHubschrauber im Flug Objekte zur Kollisionsvermeidung detektiert werden. Das gleiche Verfahren zur Tiefenkartengenerierung wird auch von [Isl08] verwendet, um die Eigenbewegung des Hubschraubers zu bestimmen. Auch für die Anwendung in selbständig fahrenden Bodenfahrzeugen werden Stereokameras eingesetzt. [NNB06] zeigen ein Verfahren, welches Mono- als auch Stereokameras für die visuelle Odometrie einsetzen kann. Dabei werden über einen Harris-Detektor markante Punkte gefunden und Korrespondenzen gesucht. Im Stereofall wird dazu erst ein grobes Matching über einen bestimmten Bereich um das Feature durchgeführt und über eine genaue Korrespondenzsuche mittels normierter Kreuzkorrelation ausgewertet und verfeinert. Die so ermittelten Daten dienen dabei zur Lokalisierung des autonomen Bodenfahrzeugs und der Schätzung der Eigenbewegung. Ein weiteres Verfahren zum 3D-Feature-Tracking mit parallel ausgerichteten Stereokameras wird in [ZCL10] gegeben. Dort werden, ähnlich wie in dieser Arbeit präsentiert, Features im linken Kamerabild gewählt und verfolgt und die entsprechenden korrespondierenden Punkte im rechten Kamerabild gesucht. Dabei verwenden die Autoren für das zeitliche Tracken ein Blockmatching-Verfahren in einem bestimmten Bildbereich. Für das Finden korrespondierender Punkte im rechten Bild dient zur groben Lokalisierung der Bewegungsvektor des linken Bildes, da die Bewegung der Features in beiden Kameras annähernd gleich sein sollte. 2.4.2 Berechnung der relativen Eigenbewegung Auch für die Berechnung der Eigenbewegung aus den Kamerabildern gibt es verschiedene Ansätze. Zu den gängigen Verfahren zählt beispielsweise das auch in dieser Arbeit verwendete 2.5 Tracking und Stereo-Matching mittels eines Lucas-Kanade-Trackers 16 Iterative Closest Point-Verfahren (ICP) nach [MS06] und [BM92]. Zur Berechnung der Bewegung wird dabei das Least Squares Fitting von [AHB87] genutzt. Um den ICP-Algorithmus zur Bewegungsberechnung nutzen zu können, sollte eine geeignete Methode zum Ausfiltern von Außenseitern verwendet werden, beispielsweise das RANSAC-Verfahren. Ein alternativer Algorithmus zum Schätzen der Kamerabewegung mit Stereokameras wird in [HIG02b] gegeben. Anstelle von statistischen Methoden wie etwa RANSAC zur Eliminierung von Außenseitern wird dies durch ein zweiseitiges Tracking von Features gewährleistet, also dem Suchen korrespondierender Punkte vom linken im rechten Bild sowie in die andere Richtung. Stimmen die so gefundenen Korrespondenzen nicht überein, wird der Punkt verworfen. Zwar kann es dadurch eine hohe Anzahl von Außenseitern geben, allerdings sind die verbleibenden Features normalerweise von hoher Güte und eignen sich somit sehr gut für die Bestimmung der relativen Kamerabewegung. Die bisherigen Arbeiten zeigen, dass fast alle bekannten Forschungarbeiten, die Stereokameras zur 3D-Objektverfolgung nutzen, dies auf vorher rektifizierten Bilddaten oder durch die Nutzung vorher generierter Tiefenkarten machen. Als Verfahren für das Tracking und die Korrespondenzanalyse gibt es verschiedene Verfahren mit verschiedenen Vorteilen. Daher liegt es nahe, zu untersuchen, ob ähnlich genaue Ergebnisse auch auf nicht vorher rektifizierten Bilddaten erreichbar sind mit dem Ziel, dies zur optischen Navigation eines autonomen Kleinhubschraubers zu nutzen. 2.5 Tracking und Stereo-Matching mittels eines Lucas-Kanade-Trackers Der neue Ansatz hat das Ziel, eine Menge von räumlichen Punktkoordinaten markanter Features im Kamerakoordinatensystem mit Hilfe einer Folge von Stereobilddaten zu rekonstruieren und diese Punkte auch im zeitlichen Verlauf zu verfolgen. Dazu soll ein Algorithmus implementiert werden, welcher anhand der Disparität homologer Punkte in beiden Stereobildern die Raumkoordinaten berechnen kann. Um den Rechenaufwand zum Entzerren und Rektifizieren der Stereobilddaten gering zu halten, wurde der Algorithmus für ungefilterte Bilddaten entwickelt. Zwar beschränkt sich dadurch die Suche nach korrespondierenden Bildpunkten nicht nur auf eine Bildzeile, allerdings sind die Versuchskameras von vornherein parallel ausgerichtet und verfügen über große gemeinsame Bildbereiche, was den standard-stereoskopischen Fall zumindest annähert. 2.5 Tracking und Stereo-Matching mittels eines Lucas-Kanade-Trackers 17 Statt nun, wie in anderen Ansätzen üblich, korrespondierende Punkte in den Stereobildern anhand rektifizierter Bilder zu suchen, wird im neuen Ansatz ein Lucas-Kanade-Tracker [LK81] auf den ungefilterten, also nicht entzerrten und nicht rektifizierten, Bilddaten angewendet. Um die Genauigkeit der Berechnungen zu gewährleisten, werden lediglich die erkannten FeaturePunkte entzerrt und mit Hilfe der Rektifizierungsmatrix aus der Kamerakalibrierung in ihre rektifizierte Position transformiert. Abbildung 2.7 zeigt die entwickelte Verarbeitungs-Pipeline der Bilder. In Schritt 1 (siehe grüner Kreis) werden im linken Kamerabild markante Bildpunkte detektiert und in Schritt 2 mittels eines Lucas-Kanade-Trackers die korrespondierenden Bildpunkte im rechten Kamerabild gesucht. Entzerrt man nun zwei korrespondierende Punkte im linken und rechten Bild und rektifiziert sie durch Multiplikation mit der jeweiligen Rektifizierungsmatrix, besteht zwischen beiden Bildpunkten lediglich eine horizontale Disparität, siehe Schritt 3. Diese Disparitäten dienen nun dazu, die Tiefenkoordinate des Bildpunktes bezüglich des Kamerakoordinatensystems der linken Kamera zu bestimmen und somit den Raumpunkt zu rekonstruieren. Die so berechnete Menge von Raumpunkten kann nun im Schritt 4 in eine so genannte TrackedObjectsList gespeichert werden, welche dann weiterverwendet werden kann. Zusätzlich zum Bestimmen der 3D-Punkte während eines Zeitschritts werden in Schritt 5 die detektierten markanten Punkte über einen Lucas-Kanade-Tracker im linken Bild des Zeitschritts t1 wiedergefunden. Zusätzlich ist eine Validierung dieses Trackings möglich, indem man auch in den rechten Bilddaten im zeitlichen Verlauf die korrespondierenden Punkte verfolgt und die Ergebnisse vergleicht, um Außenseiter eliminieren zu können. Dieses Vorgehen wird dann in jedem Zeitschritt tn wiederholt. Durch die zeitliche Featureverfolgung aus Schritt 5 wird gewährleistet, dass die bestimmten Raumpunkte immer zum gleichen Objekt gehören. Ist ein verfolgtes Feature bereits als TrackedObject in der Liste gespeichert, wird dieses lediglich aktualisiert, sodass die aktuelle und die vorherige Raumposition gespeichert wird. Da auch die Raumkoordinaten aus dem vorherigen Zeitschritt bekannt sind, verfügt man ab dem zweiten Zeitschritt für ein verfolgtes Feature nicht nur über dessen räumliche Position, sondern auch über die relative Bewegung innerhalb des letzten Zeitschritts. 2.5 Tracking und Stereo-Matching mittels eines Lucas-Kanade-Trackers 2 t0 1 18 Korrespondenzen finden Linkes Bild (ungefiltert) Rechtes Bild (ungefiltert) Disparität bestimmen 3 4 5 t1 zeitliche Featureverfolgung TrackedObjectsList Linkes Bild (ungefiltert) (optionaler) Featurevergleich Rechtes Bild (ungefiltert) TrackedObjectsList t2 Linkes Bild (ungefiltert) Rechtes Bild (ungefiltert) TrackedObjectsList Abb. 2.7: Featuretracking und Korrespondenzsuche in Stereobildern KAPITEL 3 Implementierung In diesem Kapitel wird näher auf die Umsetzung des beschriebenen Verfahrens eingegangen. Dazu soll erst kurz die genutzte Test- und Entwicklungsumgebung erklärt und dann die wichtigsten Bestandteile der Implementierung aufgeführt und beschrieben werden. 3.1 DIP-Framework Für die Entwicklung und Simulation von bildverarbeitenden Verfahren steht in der Abteilung für unbemannte Luftfahrzeuge des DLR ein eigens entwickeltes Framework zur Verfügung. Dieses so genannte DIP-Framework ist in C++ geschrieben und ermöglicht die Nutzung und Entwicklung vieler Bildverarbeitungsalgorithmen und anderer relevanter Verfahren. Das Framework ist vielfältig sowohl direkt an Bord des Fluggeräts (OBDIP), an der mobilen Bodenstation (OGDIP) oder durch die Benutzerschnittstelle SPICE [Goo04] [Gut04] nutzbar. Abbildung 3.1 zeigt die Verbindung des DIP-Frameworks in der Testumgebung sowie im Flug [And06]. Dabei verwenden sowohl SPICE als auch OBDIP die gleichen Algorithmen, Bildverarbeitungsfilter und Schnittstellen. 19 3.1 DIP-Framework 20 L L SPICE R LAN Simulation OBDIP Flugsteuerung LAN R WLAN Bedienung/Anzeige OGDIP Bedienung/Anzeige Abb. 3.1: DIP-Framework für den Einsatz in der Simulations- und Testumgebung (links) und im Flug (rechts) Das SPICE-Programm (siehe Abbildung 3.2) ermöglicht dabei das Laden verschiedener Daten wie Kamerabilder, Sensordaten oder der Navigationslösung sowie das synchronisierte Abspielen der Daten, beispielsweise Bilddaten und Tiefenkarten oder Stereobilddaten. Zusätzlich zu den Bilddaten steht auf Wunsch auch die aktuelle gemittelte und gefilterte Position und Ausrichtung des Hubschraubers aus Daten des Flugrechners zur Verfügung, falls diese mit aufgezeichnet wurden. Um die geladenen Daten zu verarbeiten, können verschiedene modularisierte Filter in einer Verarbeitungspipeline kombiniert werden. Dafür stehen sowohl eigene Entwicklungen als auch die freie OpenCV-Bibliothek zur Bildverarbeitung zur Verfügung. Die Verarbeitung von Bild- und Sensordaten erfolgt dabei über so genannte Commander. Ein Commander ist dabei eine Zusammenstellung verschiedener Algorithmen und Filter für eine spezifische Aufgabe, beispielsweise die Generierung von Umgebungskarten, die Evaluierung der Umgebung zur Kollisionsvermeidung oder für die Kalibrierung von Kameras. Dafür hat jeder Commander im unteren Bereich der Benutzeroberfläche des SPICE-Programms einen Bereich für eigene Kontroll- und Steuerelemente. Besonders für die Entwicklung neuer Verfahren existiert ein so genannter Experimentalcommander. Statt einer Benutzeroberfläche, die speziell auf eine Aufgabenstellung ausgerichtet ist, können hier die einzelnen Filter und Verarbeitungsalgorithmen für Testzwecke kombiniert und zusammengestellt werden. Der modulare Aufbau des DIP-Frameworks im Experimantalcommander unterteilt sich in eine Pipeline von Bildfiltern, mit denen geladene Bild- und Sensordaten direkt verarbeitet werden können. Dazu gehören unter anderem bildverbessernde Operationen oder Algorithmen zur 3.1 DIP-Framework 21 Abb. 3.2: SPICE-Benutzerschnittstelle Erkennung und Verfolgung markanter Punkte, so genannter TrackedObjects. Aufbauend auf diesen TrackedObjects können dann in einer Pipeline von TrackedObjectsFiltern und einer Pipeline von TrackedObjectsListObservern für weitere Berechnungen wie die Rekonstruktion von 3D-Raumpunkten, die Berechnung der Kamerabewegung, zum Aufbau von Umgebungskarten, zur Filterung von Werten oder zur Kommunikation mit dem Flugrechner genutzt werden. Abbildung 3.3 zeigt den schematischen Aufbau eines Experimentalcommanders. Als Eingabe eines Experimentalcommanders dient die EnvironmentSensor -Klasse, die als Wrapper für die beliebigen optischen Sensoren dient. Zu jedem Zeitschritt t wird dabei das aktuelle Bild an den FilterMaster (linke Box) übergeben und darin von den verschiedenen eingesetzten Bildfiltern (ImageFilter ) nacheinander verarbeitet. 3.2 Erkennen und Verfolgen markanter Punkte 22 EnvironmentSensor Tr.Obj.List Experimentalcommander ImageFilter TrackedObjectsFilter Tr.Obj.ListObserver ImageFilter TrackedObjectsFilter Tr.Obj.ListObserver ImageFilter TrackedObjectsFilter Tr.Obj.ListObserver Abb. 3.3: Filter-Pipeline im Experimentalcommander Zu jedem Zeitschritt wird auch eine leere TrackedObjectsList erzeugt, die von den Bildfiltern gefüllt werden kann. Beispiel ist dafür der verwendete FeatureTracker, welcher die Position getrackter markanter Features in der TrackedObjectsList speichert. Als weitere Informationen können in den Filtern auch zusätzliche Informationen wie Kalibrierungsdaten oder weitere Sensorinformationen (z. B. Stereobilder oder Tiefenkarten) geladen werden. Nach der Verarbeitung durch die Bildfilterpipeline wird die TrackedObjectsList an eine Pipeline von TrackedObjectsFiltern und TrackedObjectsListObservern übergeben. TrackedObjectsFilter können dabei die einzelnen TrackedObjects löschen, bearbeiten oder neue hinzufügen, während die TrackedObjectsListObserver nur Lesezugriff auf die TrackedObjectsList haben. Die TrackedObjectsListObserver dienen im Normalfall zum Logging generierter Informationen, zum Beispiel von relativen Bewegungsdaten oder zur Übertragung von Daten an den Flugrechner. 3.2 Erkennen und Verfolgen markanter Punkte Für die Rekonstruktion von Raumpunkten anhand Stereobilddaten wie in Abschnitt 2.5 beschrieben, müssen zuerst markante Punkte im linken Kamerabild gefunden werden. Dazu wird die bereits existierende Filterklasse cl_FeatureTracker verwendet. Diese implementiert den von [ST94] entwickelten GoodFeaturesToTrack-Algorithmus aus der freien OpenCV-Bibliothek. Die so bestimmten Punkte im linken Kamerabild werden nun im Feature-Tracker im zeitlichen Verlauf mit Hilfe eines Lucas-Kanade-Trackers [LK81] verfolgt. Dazu dient die von [Bou00] entwickelte pyramidische Implementation des Lucas-Kanade-Trackers der OpenCV-Bibliothek. 3.2 Erkennen und Verfolgen markanter Punkte 23 Die cl_FeatureTracker -Klasse bietet viele Einstellungsmöglichkeiten, um die Anzahl der zu verfolgenden Punkte, den Mindestabstand zwischen den Punkten oder die Suchregion für neue Features zu wählen. Es ist außerdem möglich, die Tiefe der Bildpyramiden zu bestimmen, in denen getrackt werden soll sowie die Anzahl der Suchiterationen pro Ebene. Abbildung 3.4 zeigt das Einstellungsfenster der cl_FeatureTracker -Klasse. Abb. 3.4: Einstellungsfenster der cl_FeatureTracker Klasse Der Filter ist so ausgelegt, zu jedem Zeitschritt eine Mindestanzahl von Featurepunkten zu verfolgen. Gehen im zeitlichen Verlauf einige Features verloren, beispielsweise weil sie das Bild verlassen oder nicht wiedergefunden werden, wird mit Hilfe der goodFeaturesToTrack()-Funktion nach neuen markanten Punkten gesucht, um die Mindestanzahl der Punkte einzuhalten. Die verfolgten Features werden dazu zu jedem Zeitschritt als cl_TrackedObject gespeichert und zu einer TrackedObjectsList zusammengefasst. TrackedObjects speichern dabei die aktuelle und die vorherige Bildposition sowie weitere Informationen zu den Features wie zum Beispiel den rekonstruierten Raumpunkt. Verfolgte Punkte können mit Hilfe der Klasse cl_TrackedObjectsDraw als überlagerte Elemente auf den Bildern visualisiert werden. Abbildung 3.5 zeigt ein Kamerabild mit eingezeichneten verfolgten Punkten. Die aktuelle Bildposition eines Features wird dabei durch einen gelben Kreis dargestellt, die vorherige Position durch die Spitze der Linie am Kreis. Abb. 3.5: Verfolgte Punkte im Kamerabild 3.3 Stereo-Matching homologer Bildpunkte 24 3.3 Stereo-Matching homologer Bildpunkte Zur Rekonstruktion der Raumkoordinaten der getrackten Features dient ein so genannter TrackedObjectsFilter, welcher mit Hilfe von Informationen aus dem rechten Kamerabild die cl_TrackedObjects der cl_TrackedObjectsList aus dem FeatureTracker weiterverarbeitet. 3.3.1 Finden korrespondierender Punkte in Stereobildpaaren Wie in Abschnitt 2.5 beschrieben, muss zur Bestimmung des Tiefenwerts und somit der Raumkoordinaten, zu einem verfolgten Bildpunkt des linken Kamerabildes der korrespondierende Bildpunkt im rechten Bild wiedergefunden werden. Da die Bilddaten nicht entzerrt und rektifiziert sind, beschränkt sich die Korrespondenzsuche nicht nur auf eine einzige Bildzeile, da allerdings für die ARTIS-Hubschrauber nahezu parallel ausgerichtete Stereokameras verwendet werden, können die korrespondierenden Feature-Punkte im rechten Bild auch nur in einem gewissen Bereich liegen. Der schon für die Verfolgung der markanten Punkte im linken Kamerabild eingesetzte Lucas-Kanade-Tracker eignet sich daher auch hier sehr gut, um die korrespondierenden Punkte zu finden. Zum einen sehen aufgrund der Entfernung der aufgenommenen Objekte sowie der parallelen Anordnung die Features im linken und im rechten Bild nahezu gleich aus. Zum anderen ermöglicht der Feature-Tracker das Angeben initialer Schätzungen für die Position der korrespondierenden Punkte. Der entwickelte TrackedObjectsFilter arbeitet dazu mit der übergebenen TrackedObjectsList, welche die verfolgten Punkte enthät, dem linken Kamerabild sowie aus Performanzgründen der bereits berechneten Bildpyramide des FeatureTrackers. Zu jedem Zeitschritt wird mit Hilfe des Lucas-Kanade-Trackers versucht, für alle Punkte der TrackedObjectsList die korrespondierenden Punkte im rechten Bild zu finden. In der Benutzeroberfläche des TrackedObjectsFilters (siehe Abbildung 3.6) können verschiedene Suchparameter eingestellt werden, um das Tracking zu verbessern. Beispielsweise kann durch die WinSize-Option die Größe des Suchfensters variiert werden, also die Größe des Blocks, welcher als Feature wieder gesucht wird. Die optimale Einstellung ist dabei abhängig von der aufgenommenen Szene. Abb. 3.6: Einstellungsfenster des entwickelten TrackedObjectsFilters 3.3 Stereo-Matching homologer Bildpunkte 25 Um die Trackingergebnisse zu verbessern und trotzdem die Echtzeitfähigkeit (30 Hz Framerate) zu bewahren, sollte auch das Abschlusskriterium für das Tracking gut gewählt sein. Echtzeitfähig bedeutet in diesem Zusammenhang, die Bilddaten auch im Flug bei höheren Geschwindigkeiten und stärkeren Vibrationen ruckelfrei zu verarbeiten. Der FeatureTracker führt dabei entweder eine gewisse Anzahl an Iterationen aus oder bricht vorher ab, wenn sich das Suchfenster pro Iteration nur noch um einen geringen Wert verschiebt. Tests mit verschiedenen Videosequenzen ergaben, dass für ein ausreichend genaues Tracking 20 maximale Iterationen sowie ein von 0,005 px ausreichen und die Berechnung trotzdem ausreichend schnell durchgeführt wird. Die Tracking-Parameter sind in Tabelle 3.1 zusammengefasst. Zur Visualisierung der gefundenen korrespondierenden Feature-Punkte können mit Hilfe der cl_TrackedObjectsDraw Klasse Overlays auf das rechte Kamerabild gezeichnet werden. Abbildung 3.7 zeigt das linke und rechte Kamerabild eines Zeitpunkts t mit eingezeichneten getrackten Punkten (gelbe Kreise im linken Bild) sowie deren Position zum Zeitpunkt t − 1. Die Kreise im rechten Bild entsprechen der getrackten Position des Features. Das andere Ende der Linie im rechten Bild entspricht der Bildposition im linken Bild. Die Linie veranschaulicht dadurch die Disparität d der Punkte. Aufgrund eines möglichen Tracking-Fehlers sowie noch vorhandener radialer Verzerrung sind diese Linien nicht immer direkt horizontal, wie es beim standard-stereoskopischen Modell wäre. Auch kann es beim Tracken zu Fehlschätzungen kommen, besonders wenn die Features schwach texturiert sind oder das Bild sehr verrauscht ist. Daher ist in späteren Verarbeitungsschritten eine Filterung nötig. Parameter Wert Breite des Suchfensters 30 px Höhe des Suchfensters 10 px Maximale Iterationen 20 Minimale Suchfensterverschiebung 0,005 px Tab. 3.1: Geeignete Parameter zum Stereo-Feature-Tracking 3.3 Stereo-Matching homologer Bildpunkte (a) linkes Kamerabild 26 (b) rechtes Kamerabild Abb. 3.7: Stereo-Feature-Tracking: Verfolgte Punkte im linken Kamerabild mit korrespondierenden Punkten im rechten Kamerabild (grüne Kreise). Die Linien im rechten Bild repräsentieren die Disparität der ungefilterten Bildpunkte. Die Linien des linken Bildes stellen die 2D-Bewegung der Punkte dar. 3.3.2 Kontrolltracking im rechten Bildverlauf Um die Genauigkeit des Trackings zu verbessern und falsch erkannte Korrespondenzen zu eliminieren, ermöglicht der TrackedObjectsFilter auch das Tracken von Features im zeitlichen Verlauf der rechten Kamerabilder. Dazu wird versucht, ähnlich wie auch im linken Bild, die zum Zeitpunkt t − 1 gefundenen Features zum Zeitpunkt t wiederzufinden. Auch hierzu dient der Lucas-Kanade-Tracker. Idealerweise befinden sich zum Zeitpunkt t die erkannten FeaturePunkte aus dem links/rechts-Tracking und den Tracking im rechten Bildverlauf an der gleichen Stelle. Tests ergaben, dass dies aufgrund des Fehlers beim Tracking nur selten der Fall ist. Dennoch ermöglicht die Verfolgung von Features im rechten Bildverlauf eine gewisse Kontrolle. So können zum Beispiel weit auseinander liegende erkannte Feature-Positionen ein Indikator für eine Fehlschätzung sein und die Punkte somit verworfen werden. Abbildung 3.8 zeigt das überlagerte Ergebnis des Trackings im rechten Bildverlauf als rote Markierungen. Idealerweise müssten sowohl rote als auch grüne Markierungen an genau der gleichen Stelle liegen. Auf dem verwendeten Testrechner wird durch das zusätzliche Kontroll-Tracking der Rechenaufwand allerdings erkennbar höher, sodass die Framerate darunter leidet und das Verfahren je nach Rechner nicht immer flüssig mit 30 Hz läuft. Zwar ist das in einigen Situationen akzeptabel, führt aber bei der Bewegungsschätzung zu größeren Abweichungen und wird besonders bei größeren Fluggeschwindigkeiten kritisch. Da fast alle der vom Kontroll-Tracking verworfenen 3.4 Koordinatentransformation und Filterung 27 Abb. 3.8: Trackingbestätigung durch zeitliches Tracking in den rechten Kamerabildern Punkte auch in der späteren Verarbeitung gefiltert werden, bietet das Kontroll-Tracking zwar eine brauchbare Erweiterung, auf welche aber auch in vielen Fällen verzichtet werden kann. 3.4 Koordinatentransformation und Filterung Zwar ist es durch das optionale Kontroll-Tracking über den rechten Bildverlauf möglich, grobe Außenseiter zu eliminieren, allerdings ist es für eine ausreichend genaue Berechnung der Raumpunkte unabdingbar, weitere Außenseiter rauszufiltern. Zusätzlich müssen die erkannten Punkte so transformiert werden, dass sie dem standard-stereoskopischen Modell entsprechen, damit die in Abschnitt 2.2 hergeleiteten Gleichungen anwendbar sind. Dazu müssen zuerst alle Punkte, sowohl die getrackten Features im linken Bild als auch die korrespondierenden Punkte des rechten Bilds, entzerrt und rektifiziert werden. Zum Entzerren können die aus der Kamerakalibrierung gewonnenen Verzerrungsparameter κ1 , κ2 , κ3 , τ1 und τ2 verwendet werden. Das DIP-Framework verfügt dafür bereits über die Funktion pixelToSensorCoordinates(), welche die Punkte zum einen entzerrt und auch in normierte Kamerakoordinaten umwandelt. Da aus der Kamerakalibrierung neben den Entzerrungsparametern auch eine Rektifizierungsmatrix erzeugt wird, wurde die pixelToSensorCoordinates()-Funktion so erweitert, dass die entzerrten Punkte durch Multiplikation mit der Rektifizierungsmatrix auch an ihre entsprechende Position im rektifizierten Kamerabild transformiert werden. Das folgende Codebeispiel zeigt einen Ausschnitt der verwendeten pixelToSensorCoordinates()Funktion, die zum Normieren, Entzerren und Rektifizieren der Featurepunkte genutzt wird. 3.4 Koordinatentransformation und Filterung 28 Dabei werden die Punkte um den Bildhauptpunkt verschoben und mit dem Reziproken der Brennweite normiert. Anschließend werden die Gleichungen (2.9) und (2.10) angewendet, um den Punkt zu entzerren. Die entzerrte Koordinate wird anschließend noch mit der aus der Kalibrierung bekannten Rektifizierungsmatrix multipliziert (vgl. Gleichung (2.13)). Dies entspricht dabei der in Abbildung 2.6 dargestellten Abbildungspipeline. cl_3DVector p i x e l T o S e n s o r C o o r d i n a t e s ( cl_2DVector coordinates ) { // N o rm i e ru n g d e r K o o r d i n a t e n cl_2DVector i n _ v a l = c o o r d i n a t e s − o p t i c a l _ a x i s ; in_val . scale ( reciprocal_focal_length ) ; 1 2 3 4 5 // I t e r a t i v e s E n t z e r r e n d e s B i l d s c l _ 2 D V e c t o r temp = i n _ v a l ; d o u b l e r_2 , x , y ; f o r ( i n t j = 0 ; j < 2 0 ; j ++) { r_2 = i n _ v a l . s q u a r e L e n g t h ( ) ; x = i n _ v a l . getX ( ) ; y = i n _ v a l . getY ( ) ; in_val = ( temp − c l _ 2 D V e c t o r ( 2 ∗ d i s t o r t i o n . p1 ∗ x ∗ y+d i s t o r t i o n . p2 ∗ ( r_2+2∗x ∗ x ) , d i s t o r t i o n . p1 ∗ ( r_2+2∗y ∗ y ) +2∗ d i s t o r t i o n . p2 ∗ x ∗ y ) ) ∗ ( 1 / ( 1 + d i s t o r t i o n . k1 ∗ r_2 + d i s t o r t i o n . k2 ∗ r_2 ∗ r_2 + d i s t o r t i o n . k3 ∗ r_2 ∗ r_2 ∗ r_2 ) ) ; } 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 // R e k t i f i z i e r u n g d u r c h M u l t i p l i k a t i o n m i t Rect−M a t r i x c l _ 3 D V e c t o r norm_coord ( i n _ v a l , 1 . 0 f ) ; c l _ 3 D V e c t o r r e c t _ c o o r d = s t e r e o _ r e c t ∗ norm_coord ; r e c t _ c o o r d /= r e c t _ c o o r d . getZ ( ) ; return rect_coord ; } 21 22 23 24 25 26 Durch diese Transformation wird der standard-stereoskopische Fall angenähert, sodass die gefundenen korrespondierenden Punkte (nahezu) auf der gleichen Bildzeile liegen. Abbildung 3.9 zeigt die dennoch auftretende vertikale Abweichung der korrespondierenden Punkte einer Video- 3.4 Koordinatentransformation und Filterung 29 sequenz. Dazu werden die einzelnen vertikalen Disparitäten aller Features einer Videosequenz als Histogramm dargestellt. Die Rektifizierung hat zum Ziel, diese für alle Punkte möglichst nah an den Wert dy = 0 zu bringen. Das Histogramm zeigt, dass für die meisten Features der Betrag der vertikalen Disparität |dy | geringer ist als 0,0025 (grüner Bereich). Dies entspricht einem vertikalen Abstand von 1,75 px. Verfolgte Features mit einer größeren vertikalen Disparität als dy,max (roter Bereich) können somit auch verworfen werden. Das Histogramm zeigt eine leichte Verschiebung der vertikalen Disparität in den positiven Bereich. Dies lässt sich auf kleinere Ungenauigkeiten der Rektifizierungsmatrix aus der Kamerakalibrierung zurückführen. Diese Verschiebung ist aber sehr gering, sodass die Rektifizierung dennoch als gültig angesehen werden kann. Da die mittlere vertikale Verschiebung der rektifizierten Punkte 0,0015 (entspricht 1,0455 px) beträgt, entspricht der gewählte Schwellwert dy,max einer deutlich kleineren Wert vertikalen Abweichung, in etwa 0,69 px. 1,600 1,400 1,200 Häufigkeit 1,000 800 600 400 200 0 −6 −5 −4 −3 −2 −1 0 1 2 dy (normierte Koordinaten) 3 4 5 6 ·10−3 Abb. 3.9: Abweichung der vertikalen Disparität dy nach Entzerrung und Rektifizierung Häufigkeitsverteilung der vertikalen Dispartität aller verfolgten Features einer Videosequenz Neben der vertikalen Disparität kann auch anhand der horizontalen Disparität dx gefiltert werden. So lassen sich auch für die horizontale Disparität zwei Schwellwerte dx,min und dx,max wählen, um Punkte, die zu nah an der Kamera sind oder zu weit von der Kamera entfernt sind und somit zu ungenau sind, zu verwerfen. Dies ist insbesonders notwendig, da 3.5 Berechnung der Eigenbewegung 30 die Tiefenungenauigkeit mit zunehmender Entfernung zur Kamera quadratisch wächst (vgl. Gleichung (2.8c)). Sofern die horizontale und vertikale Disparität eines Punktpaars innerhalb der bestimmten Grenzen liegt, kann nun mittels Gleichungen (2.7) die Raumkoordinate der Punkte in Kamerakoordinaten berechnet werden. Die so rekonstruierten 3D-Raumpunkte werden dann in den TrackedObjects gespeichert und können in weiteren Anwendungen beliebig genutzt werden. 3.5 Berechnung der Eigenbewegung Als Teil der Evaluierung des Verfahrens und um dessen Eignung zur optischen Navigation zu zeigen, sollen die gewonnenen Punktdaten dazu genutzt werden, zu jedem Zeitschritt die relative Bewegungsänderung des Fluggeräts zu bestimmen. In der Evaluierung soll dies dazu dienen, die Flugbahn des Hubschraubers zu rekonstruieren. 3.5.1 Bestimmung der relativen Kamerabewegung zwischen zwei Zeitschritten Zur Berechnung dieser relativen Eigenbewegung wurde ein so genannter TrackedObjectsListObserver implementiert, welcher die ermittelten Daten des TrackedObjectsFilters aus den Abschnitten 3.3 und 3.4 weiterverarbeitet. Der entwickelte TrackedObjectsListObserver filtert dazu aus den zur Verfügung stehenden TrackedObjects alle Objekte heraus, für welche sowohl die aktuelle sowie die vorherige 3D-Position bekannt sind. Die so gewählten Punktmengen können nun zur Bestimmung der Transformation zwischen den beiden Punktmengen und somit implizit auch der Kamera selbst genutzt werden. Für die Bestimmung der Eigenbewegung wird das so genannte Iterative Closest Point (ICP) Verfahren [MS06; BM92] verwendet. Eine effiziente und genaue Implementation dieses Verfahrens steht mit der freien PointClouds Library [RC11] zur Verarbeitung von Punktmengen zur Verfügung. Beim ICP wird anhand des Approximate-Nearest-Neighbor -Verfahrens iterativ eine Modellpunktmenge an eine Datenmenge angenähert und die entsprechende Transformation (Rotation und Translation) zwischen den beiden Punktmengen mittels Singulärwertzerlegung (SVD) bestimmt [AHB87]. Probleme könnten dann auftreten, wenn in den Punktmengen Symmetrien 3.5 Berechnung der Eigenbewegung 31 auftreten und somit die Transformation nicht mehr eindeutig ist. Da allerdings keine sprunghaften Änderungen der Punktmengen zwischen zwei Zeitschriten auftreten, ist das Risiko einer Fehlschätzung vernachlässigbar klein. Die Implementation der PointClouds Library unterstützt dabei zum Verwerfen von Außenseitern das so genannte RANSAC -Verfahren. Da die gewählte Implementation des ICP-Verfahrens die korrespondierenden Punkte aus beiden Zeitschritten selbst wählt, kann dies unter Umständen zu Fehlschätzungen und somit einer Abweichung der Bewegungsschätzung führen. Um dies zu untersuchen, wird in dieser Arbeit neben dem ICP-Algorithmus auch versucht, die Relativbewegung mit Hilfe der TransformationEstimationSVD-Klasse der PointClouds-Library zu bestimmen. Diese Klasse verwendet auch wie das ICP-Verfahren die Singulärwertzerlegung zur Bestimmung der Rotation und Translation, nutzt aber dafür die bereits gegebenen Korrespondenzen der Punkte aus zwei Zeitschritten. Nachteil dieser Klasse ist die fehlende Filterung von Ausreißern. Bei beiden Verfahren wird dann zu jedem Zeitpunkt, solange ausreichend korrespondierende Punkte vorhanden sind, die Translation und Rotation zwischen den beiden Punktmengen berechnet und als 3 × 3-Rotationsmatrix und Translationsvektor ausgegeben [Isl08]. 3.5.2 Rekonstruktion der Flugbahn Anhand der aus dem ICP-Algorithmus zu jedem Zeitpunkt t berechneten relativen Bewegung Vt lässt sich durch Akkumulation der Werte die Trajektorie des Fluggeräts rekonstruieren [Isl08]. Die relative Bewegung zwischen zwei Zeitschritten t − 1 und t lassen sich als 4x4-Matrix R11 R21 R31 t1 R 21 R22 R23 t2 Vt = R31 R32 R33 t3 0 0 0 1 (3.1) darstellen. Ausgehend von einer initialen Position und einer Orientierung P0 kann nun zu jedem Zeitpunkt t durch Multiplikation mit Vt die aktuelle Position ermittelt werden: O11 O12 O13 p1 O 21 O22 O23 p2 = Pt = Vt · Pt−1 . O31 O32 O33 p3 0 0 0 1 (3.2) 3.5 Berechnung der Eigenbewegung 32 Die ermittelte Position pt und die Orientierung Ot (als Rotationsmatrix) sind allerdings noch im Kamerakoordinatensystem und müssen, insbesondere zum Vergleich mit der Flugbahn der bestehenden Navigationslösung, in das globale Weltkoordinatensystem umgewandelt werden. Dazu sind, wie in Abbildung 3.10 dargestellt, eine Transformation in das Hubschrauberkoordinatensystem sowie von dort in das Weltkoordinatensystem notwendig. Mh→w yh xw xh Mc→h yw zh yc zw xc zc Abb. 3.10: Verwendete Koordinatensysteme Dafür können entweder die im Kamerakoordinatensystem bestimmten Positionen der Trajektorie durch Rotation und Translation in das Weltkoordinatensystem überführt werden (siehe [Isl08]) oder bereits die Startposition und -ausrichtung P0 auf die Position und Ausrichtung des Hubschraubers zum Beginn der Auswertung gesetzt werden. Die Transformation der Position und Ausrichtung von Kamerakoordinaten in das Hubschrauberkoordinatensystem besteht dabei aus der Rotation der Kamera am Hubschrauber (in drei Freiheitsgraden) und der Verschiebung vom Kamerazentrums zum Zentrum des Hubschraubers (siehe [CDL04]): Mc→h R11,c→h R12,c→h R13,c→h t1,c→h R R22,c→h R23,c→h t2,c→h = 21,c→h . R31,c→h R32,c→h R33,c→h t3,c→h 0 0 0 1 (3.3) 3.5 Berechnung der Eigenbewegung 33 Für die verwendete Aufnahme wurde die Kamera um 90° nach unten rotiert am Hubschrauber montiert. Mit der bekannten Verschiebung der Kamera (in [m]) zum Zentrum des Hubschraubers ergibt das 0 −1 0 −0,5 1 0 0 0,15 Mc→h = (3.4) . 0 0 1 −0,12 0 0 0 1 Allerdings ist dabei zu beachten, dass bei der Montage der Kamera auch geringe Abweichungen auftreten können und exakte Rotationswerte nur durch eine Kalibrierung gewonnen werden können. Dennoch sind die verwendeten Werte für eine Auswertung geeignet Mh→w R11,h→w R12,h→w R13,h→w t1,h→w R R22,h→w R23,h→w t2,h→w = 21,h→w . R31,h→w R32,h→w R33,h→w t3,h→w 0 0 0 1 (3.5) Um die berechnete Trajektorie an die der Navigationslösung anzugleichen, wurden für Mh→w die Werte der bekannten Position und Ausrichtung des Hubschraubers zum Startzeitpunkt der Analyse genutzt. Diese sind aus der Navigationslöung bekannt. Für die Auswertung lautet die Transformationsmatrix dann Mc→h −0,292254 0,943447 −0,156507 −22,587936 −0,951024 −0,269479 0,151440 8,983907 = . 0,100701 0,193101 0,975998 −4,040975 0 0 0 1 (3.6) Sind diese Transformationen bekannt, ist es möglich, die Startposition und -ausrichtung mit P0 = Mh→w · Mc→h (3.7) zu bestimmen. Auf diese so bestimmte Position P0 können nun wie in Gleichung (3.2) die relativen Bewegungen akkumuliert werden und somit die Trajektorie rekonstruiert werden. KAPITEL 4 Evaluierung des Verfahrens In diesem Kapitel soll das entwickelte Verfahren zur Bestimmung der Raumpositionen markanter Features und deren Verfolgung auf seine Richtigkeit und Genauigkeit untersucht werden. Dazu sollen zum einen die verwendeten Bilddaten der einzelnen Versuche bewertet und auf ihre Eignung zur 3D-Objektverfolgung untersucht werden. Des Weiteren sollen die Ergebnisse des Verfahrens auf ihre Genauigkeit untersucht werden, indem aufgenommene und vermessene Landmarken betrachtet werden sowie die geflogene Trajektorie des Hubschraubers mit Hilfe der gewonnenen Daten rekonstruiert wird. 4.1 Auswertung von Flugversuchsdaten Für die Entwicklung des Verfahrens und zur Auswertung der Ergebnisse stehen verschiedene Bilddaten aus kalibrierten Stereokameras zur Verfügung, die in verschiedenen Versuchen aufgezeichnet wurden. In diesem Abschnitt werden die zur Verfügung stehenden Videosequenzen analysiert und auf ihre Eignung für das Verfahren untersucht. 4.1.1 Stereobilddaten aus Kamerafahrt an einem Rollwagen Als erste Grundlage für die Entwicklung des Verfahrens zur Verfolgung markanter Punkte und zum Finden der korrespondierenden Punkte im anderen Stereobild konnte eine ältere Videosequenz einer auf einem Rollwagen montierten Stereokamera genutzt werden (siehe 34 4.1 Auswertung von Flugversuchsdaten 35 Abbildung 4.1). Zwar sind die Bilddaten der Videosequenz aufgrund der Überbelichtung, der ungenauen Ausrichtung und Kalibrierung der Kameras und fehlender sekundärer Daten wie einer Navigationslösung für eine genaue Evaluation ungeeignet, dennoch konnte daran gut das allgemeine Suchen korrespondierender Punkte in den Stereobildern entwickelt und getestet werden. Bei näherer Betrachtung der Bilddaten ist aufgefallen, dass aufgrund einer ungenauen Montage der einzelnen Kameras korrespondierende Punkte vertikal um ungefähr sechs Pixel verschoben sind. Zwar wird bei dem entwickelten Verfahren auch ein solcher Versatz durch Anpassung der Parameter bei der Suche nach korrespondieren Punkten kompensiert und die richtigen korrespondierenden Punkte gefunden, da allerdings für diese Videosequenz keine Referenzwerte vorlagen, wurde dieser Datensatz für die genaue Auswertung des entwickelten Verfahrens nicht weiter betrachtet. (a) linkes Kamerabild (b) rechtes Kamerabild Abb. 4.1: Korrespondierende Punkte im Bilddatensatz der Kamerafahrt 4.1.2 Trageversuch mit Landmarken und nach vorne gerichteter Kamera Um das entwickelte Verfahren genauer testen zu können, sollten Bilddaten aus einem Flugversuch dienen. Dazu sollte im November 2011 ein Flugversuch mit dem midiARTIS Hubschrauber durchgeführt werden. Da aufgrund eines technischen Defekts der Flugbetrieb nicht möglich war, wurden Bilddaten aus Bodennähe in einem Trageversuch aufgenommen. Zwar verfügen diese Videoaufnahmen nicht über alle Eigenschaften wirklicher Aufnahmen aus dem Flug, wie beispielsweise Störungen durch Vibrationen oder die dort auftretenden Objektentfernungen, die durch den Flug in größeren Höhen als beim tragen auftreten. 4.1 Auswertung von Flugversuchsdaten 36 Nichtsdestotrotz liefern die Bilder eine gute Grundlage, um das Verfahren genauer zu testen und auszuwerten. Im Gegensatz zu den Bilddaten der Kamerafahrt am Rollwagen verfügt die hier verwendete Stereokamera über eine integrierte Entzerrung und Rektifizierung der Bilddaten. Wie sich allerdings herausgestellt hat, ist diese nicht sehr genau, sodass trotz Rektifizierung korrespondierende Feature-Punkte einen vertikalen Versatz von ca. zwei Pixeln haben. Daher war es weiterhin notwendig, die Kamera manuell zu kalibrieren und im TrackedObjectsFilter selbst die getrackten Punkte erneut zu entzerren und zu rektifizieren. Somit bleibt auch das Grundziel des Verfahrens, auf ungefilterten Bilddaten anwendbar zu sein, erhalten. Abbildung 4.2 zeigt getrackte und korrespondierende Punkte zu einem Zeitpunkt des Trageversuchs. Dabei fällt besonders der schwarze Rand im rechten Bild auf. Dieser entsteht durch das interne Entzerren und Rektifizieren, welches innerhalb des Chips der Stereokamera selbst stattfindet. Da die Bilddaten auch für andere Experimente nutzbar sein sollen, wurden im gefilmten Bereich gut sichtbare Holzpfosten als Landmarken aufgestellt und mit einem Tachymeter vermessen, um genaue Referenzwerte für die Auswertung zu schaffen. Die vermessenen Landmarken wurden dann im Trageversuch aus verschiedenen Entfernungen mit einer nach vorne gerichteten Stereokamera aufgenommen. (a) linkes Kamerabild (b) rechtes Kamerabild Abb. 4.2: Korrespondierende Punkte im Bilddatensatz des Trageversuchs Die auf Abbildung 4.2 dargestellten getrackten Punkte zeigen deutlich die Schwachstellen des Algorithmus. So werden beispielsweise am Himmel Punkte in Bereichen mit relativ homogenen Hintergrund gefunden und verfolgt, was zu einem ungenauen Gesamtergebnis führt, da die Tracking-Ergebnisse dort sehr ungenau und schwankend sind. Die dort erkannten Punkte können im Verfahren nicht immer als Ausreißer erkannt und gefiltert werden. 4.1 Auswertung von Flugversuchsdaten 37 Auch im unteren rechten Bereich des rechten Kamerabilds sind einige offensichtliche Fehlerkennungen sichtbar, da die dort gezeigten Linien nahezu horizontal verlaufen müssten. Ursache für diese Fehlerkennungen ist unter anderem ein starkes Bildrauschen, welches für den FeatureTracker markante Punkte an Positionen liefert, wo eigentlich keine sind. Auch werden durch die regelmäßige Textur des Bodens einige Korrespondenzen falsch eingeschätzt. Über eine Vorverarbeitung der Eingabebilder lässt sich dieses Rauschen allerdings vermindern und somit insbesondere die Fehlerkennungen am Himmel vermeiden. Auch die Erkennung am Boden wird dadurch besser, zeigt aber dennoch einige falsche Korrespondenzen. Aufgrund dieser doch vergleichsweise großen Störungen lassen die Bilddaten zwar eine Untersuchung mit Hilfe des Tachymeters zu, beinhalten aber für eine ausreichend genaue Berechnung der Eigenbewegung zu viele Ausreißer und zu wenige brauchbare Punkte. 4.1.3 Flugversuch mit nach unten gerichteter Kamera Da Bilddaten, die aus einem wirklichen Flugversuch aufgenommen wurden, noch andere Eigenschaften als bei einem Trageversuch aufweisen, sollte der erste Flugversuch wiederholt werden, was auch erfolgreich gelang. Im Gegensatz zum ersten Flugversuch wurden die Landmarken nun allerdings nicht stehend, sondern flach auf dem Boden liegend mit dem Tachymeter vermessen. Außerdem wurde die Stereokamera am midiARTIS-Hubschrauber nach unten gerichtet befestigt. Wie auch beim ersten Flugversuch wurde für die Bilder bereits die interne Rektifizierung der Kamera genutzt, welche aber aufgrund der geringen Genauigkeit nicht ausreichend war und somit durch manuelle Kalibrierung verbessert werden musste. Auch zeigen die Bilder ein geringeres Rauschen und eignen sich dadurch besser für die Verfolgung mittels des LucasKanade-Trackers. Abbildung 4.3 zeigt getrackte Features mit korrespondierenden Punkten. Die auf dem Boden sichtbaren Pfähle mit Markierungen sind die an ihren Eckpunkten vermessenen Landmarken. Die Untersuchung der Kameradaten hat gezeigt, dass die meisten der Korrespondenzen passend gefunden werden und sich das Material somit sowohl für die Auswertung mittels der Tachymeterdaten eignet sowie für die Berechnung der relativen Eigenbewegung des Hubschraubers. 4.2 Landmarkenvermessung mit Hilfe eines Tachymeters (a) linkes Kamerabild 38 (b) rechtes Kamerabild Abb. 4.3: Korrespondierende Punkte im Bilddatensatz des Flugversuchs 4.2 Landmarkenvermessung mit Hilfe eines Tachymeters Die im Flugversuch aufgezeichneten Landmarken wurden für das Experiment mit einem Leica-Viva-TS15 -Tachymeter der Firma Leica Geosystems (siehe Abbildung 4.4) vermessen. Dafür wurde das Tachymeter an einem exakt vermessenen Georeferenzpunkt aufgebaut und ausgerichtet. Dafür stehen am Flugfeld zwei Messpunkte des DLR und der TU Braunschweig zur Verfügung. Das initialisierte Tachymeter ermöglicht so ein exaktes Einmessen von Punkten mit einer Genauigkeit im Millimeterbereich, auch in Bezug auf das geodätische Koordinatensystem. 4.3 Genauigkeitsüberprüfungen an Referenzmessungen 39 Abb. 4.4: Tachymeter Leica Viva TS15 zur Vermessung der Landmarken Für die Vermessung der Landmarken wurde dann ein retroreflektierendes Prisma an den Ecken der Landmarken positioniert. Durch Anpeilen dieses Prismas war es möglich, die Position der Punkte im Koordinatensystem des Tachymeters zu bestimmen. Das Tachymeter ist dabei auf etwa 3 mm bis 5 mm genau. Allerdings ist auch beim Positionieren des Prismas mit einer gewissen Ungenauigkeit zu rechnen. Aufgrund der hohen Genauigkeit dieser Punkte konnten die so bestimmten Eckpunkte als Referenzwerte für die Auswertung des TrackedObjectsFilters genutzt werden. 4.3 Genauigkeitsüberprüfungen an Referenzmessungen Da sich der midiARTIS-Hubschrauber im Flugversuch in einem Schwebeflug über den am Boden liegenden Landmarken befunden hat und die Kameras nach unten ausgerichtet waren, ermöglicht eine optische Auswertung der Bilddaten eine grobe Einschätzung der Genauigkeit des entwickelten Verfahrens. Da keine direkten Referenztiefenwerte oder -raumkoordinaten (z. B. durch andere Sensoren) in direktem Bezug zum Kamerabild vorhanden sind, muss ein 4.3 Genauigkeitsüberprüfungen an Referenzmessungen 40 anderer Weg gefunden werden, um die rekonstruierten Raumpunkte zu validieren. Zwar liegen durch die Vermessung mit Hilfe des Tachymeters Referenzpunkte vor, allerdings wäre insbesondere aufgrund von Ungenauigkeiten der Navigationslösung ein Umrechnen der ermittelten Punkte im Kamerakoordinatensystem in das Tachymeterkoordinatensystem zu fehlerhaft und somit für eine exakte Auswertung zu ungenau. Stattdessen lässt sich für eine solche Auswertung die bekannte Größe (Länge) der Pfähle der Landmarken ausnutzen. Diese wurden zum einen manuell per Maßband ausgemessen sowie deren Eckpunkte mittels des verwendeten Tachymeters vermessen. In diesem Abschnitt werden mehrere im Bild aufgenommene Landmarken in einem bestimmten Zeitraum der Videosequenz ausgewertet. Dazu wurde für jeden Datensatz ein kurzer Ausschnitt gewählt, welcher vollständig eine aufgenommene Landmarkenstange zeigt. Die Eckpunkte der Landmarkenpfähle wurden für die Auswertung im FeatureTracker markiert und verfolgt. Zu jedem Zeitschritt des Ausschnitts konnten so im TrackedObjectsFilter die Raumkoordinaten der Punkte in Kamerakoordinaten berechnet werden. Die Längen der einzelnen Landmarken sind durch die Vermessungsdaten des Tachymeters sowie ein manuelles Ausmessen bekannt. Im Idealfall entspricht die euklidische Distanz zwischen den beiden getrackten Punkten der vermessenen Länge der Landmarke. Mit zunehmender Entfernung zum Objekt, also den Landmarken, ist allerdings mit einer steigenden Ungenauigkeit zu rechnen. Die folgenden Datensätze zeigen Aufnahmen der flach auf dem Boden liegenden Landmarken mit der dazugehörigen Länge l sowie den vom TrackedObjectsFilter bestimmten Eckpunkten und deren Vergleich zur vermessenen Länge der Stangen. 4.3 Genauigkeitsüberprüfungen an Referenzmessungen 41 Datensatz 1 (a) linkes Kamerabild (b) rechtes Kamerabild Abb. 4.5: Entfernungsschätzung durch optische Analyse - Datensatz 1 Abbildung 4.5 zeigt ein Bild des gewählten Videoausschnitts mit der rot markierten Landmarke, an der die Punktdaten validiert werden sollen. Die manuelle Vermessung der Landmarke per Maßband ergab eine Länge von lmanuell = 3,0 m. Für den Vergleich wird allerdings die mit Hilfe des Tachymeters bestimmte Länge genutzt. In Tachymeterkoordinaten befinden sich die beiden Eckpunkte der Landmarke bei plmark0002 (−19,58700 , − 46,14591 , 0,29186) tachy plmark0003 (−17,20755 , − 48,01043 , 0,28724) tachy was einen euklidischen Abstand von ltachy = 3,023 m als Referenzwert ergibt. Tabelle 4.1 zeigt die vom TrackedObjectsFilter rekonstruierten Raumkoordinaten der verfolgten Eckpunkte der Landmarke in Kamerakoordinaten aus einer Flughöhe von etwa sieben Metern. Jede Tabellenzeile entspricht dabei einem ausgewerteten Zeitschritt. Die dritte Tabellenspalte zeigt die euklidische Distanz der beiden Eckpunkte, die in einem Frame rekonstruiert wurde. Die Abweichung dieser Länge zum Referenzwert ltachy ist in der vierten Spalte dargestellt. Die durchschnittliche Distanz zwischen den Punkten p1 und p2 ist leicht größer als der Referenzwert. Dies liegt aber an einigen wenigen Ausreißern, bei denen die Punkte nicht exakt getrackt wurden, beziehungsweise das Ergebnis der Korrespondenzsuche nicht exakt war. Allerdings liegen die auftretenden Abweichungen noch im Rahmen der in Abbildung 2.5 4.3 Genauigkeitsüberprüfungen an Referenzmessungen 42 Tab. 4.1: Werte der Landmarkenvermessung des TrackedObjectFilters zu Datensatz 1 Eckpunkt p1 Eckpunkt p2 Distanz Abweichg. [m] [m] (0,9145 , 0,4124 , 7,3642) (3,2935 , − 0,8769 , 6,3968) 2,8736 −0,1493 (0,7528 , 0,4744 , 7,2589) (3,3945 , − 0,8766 , 6,9347) 2,9848 −0,0381 (0,5940 , 0,5305 , 7,3396) (3,2779 , − 0,8413 , 7,0495) 3,0281 0,0051 (0,4317 , 0,5618 , 7,3329) (3,1580 , − 0,8194 , 7,1696) 3,0606 0,0377 (0,2840 , 0,5873 , 7,3974) (3,0042 , − 0,7941 , 7,1655) 3,0596 0,0367 (0,1554 , 06104 , 7,4707) (2,8459 , − 0,7698 , 7,0857) 3,0483 0,0254 (0,0483 , 0,6200 , 7,1541) (2,7933 , − 0,7503 , 7,2580) 3,0698 0,0469 (−0,0557 , 0,6677 , 7,2520) (3,0012 , − 0,7930 , 7,1576) 3,3893 0,3664 (−0,1508 , 0,7402 , 7,3279) (2,5923 , − 0,6371 , 7,2741) 3,0700 0,0471 (−0,2350 , 0,8290 , 7,3661) (2,4871 , − 0,5588 , 7,2098) 3,0595 0,0366 (−0,3225 , 0,9049 , 7,2962) (2,4148 , − 0,4913 , 7,2846) 3,0729 0,0500 (−0,4424 , 0,9930 , 7,4527) (2,3475 , − 0,4224 , 7,4261) 3,1287 0,1058 (−0,5911 , 1,0628 , 7,4634) (2,1645 , − 0,3391 , 7,2828) 3,0971 0,0742 (−0,7307 , 1,1082 , 7,6089) (2,0619 , − 0,2954 , 7,3402) 3,1371 0,1142 (−0,8464 , 1,1488 , 7,6407) (1,9561 , − 0,2535 , 7,3788) 3,1448 0,1219 (−0,9223 , 1,1515 , 7,3351) (1,8214 , − 0,2116 , 7,3258) 3,0637 0,0408 (−1,0067 , 1,2441 , 7,4409) (1,7498 , − 0,1350 , 7,3024) 3,0855 0,0626 (−1,0876 , 1,3188 , 7,3827) (1,6949 , − 0,0533 , 7,4657) 3,1036 0,0807 (−1,1524 , 1,4176 , 7,4188) (1,5862 , 0,0382 , 7,2606) 3,0705 0,0476 (−1,2003 , 1,4913 , 7,3434) (1,4846 , 0,1228 , 7,0848) 3,0247 0,0018 (−1,4181 , 1,7254 , 8,0265) (1,4425 , 0,2102 , 7,2591) 3,3268 0,3039 (−1,3692 , 1,7156 , 7,6221) (1,3590 , 0,2673 , 7,1093) 3,1310 0,1081 Mittelwert: 3,0923 m Standardabw.: 0,1039 m 4.3 Genauigkeitsüberprüfungen an Referenzmessungen 43 beschriebenen Entfernungsauflösung. Zu beachten ist dabei auch, dass für die Analyse zwei Punkte getrackt und deren Raumpositionen rekonstruiert werden müssen und sich der zu erwartende Fehler dadurch im Endergebnis kumuliert. Die Daten zeigen allerdings, dass aus einer Objektentfernung von etwa 7,5 m die Positionen der Landmarken ausreichend genau rekonstruiert werden können. Datensatz 2 (a) linkes Kamerabild (b) rechtes Kamerabild Abb. 4.6: Entfernungsschätzung durch optische Analyse - Datensatz 2 Als zweite Testsequenz wurde die Landmarke aus Abbildung 4.5 über einen zeitlichen Verlauf von 20 Frames analysiert. Die dort gezeigte Landmarke wurde im Flug aus einer Höhe von ca. 19 Metern aufgenommen und eignet sich somit gut dazu, das Verfahren auch bei größerer Objektentfernung zu analysieren. Die verfolgte Landmarke ist dabei im Bild wieder rot markiert. Das manuelle Ausmessen der Landmarke ergab eine Länge von lmanuell = 2,99 m. In Tachymeterkoordinaten befinden sich die beiden Eckpunkte der Landmarke bei plmark0029 (−33,08079 , − 49,25439 , 0,40573) tachy plmark0019 (−30,24416 , − 50,18602 , 0,37627) tachy was einen euklidischen Abstand von ltachy = 2,986 m als Referenzwert ergibt, der zur Analyse verwendet wird. 4.3 Genauigkeitsüberprüfungen an Referenzmessungen 44 Tab. 4.2: Werte der Landmarkenvermessung des TrackedObjectFilters zu Datensatz 2 Eckpunkt p1 Eckpunkt p2 Distanz Abweichg. [m] [m] (−6,6016 , − 2,4609 , 19,3209) (−3,3606 , 0,2888 , 19,5024) 4,2542 1,2683 (−5,9065 , − 2,1388 , 17,7945) (−2,9099 , − 2,1840 , 17,8505) 2,9974 0,0116 (−6,1209 , − 2,1741 , 18,9552) (−3,0405 , − 2,3069 , 19,5477) 3,1396 0,1538 (−5,9362 , − 2,0459 , 18,5986) (−2,9113 , − 2,2093 , 19,3785) 3,1280 0,1422 (−5,8265 , − 1,9985 , 18,5884) (−2,5915 , − 2,0122 , 17,9921) 3,2894 0,3036 (−6,2567 , − 2,0577 , 20,1973) (−2,6342 , − 2,0076 , 18,8550) 3,8634 0,8776 (−5,7096 , − 1,7828 , 18,9057) (−2,4538 , − 1,8519 , 18,4922) 3,2826 0,2968 (−4,9015 , − 1,4308 , 16,7056) (−2,3295 , − 1,7434 , 18,6603) 3,2455 0,2597 (−5,8354 , − 1,5659 , 20,6026) (−2,0322 , − 1,5255 , 18,0187) 4,5981 1,6123 (−5,4260 , − 1,3373 , 19,9539) (−1,8449 , − 1,3789 , 18,1854) 3,9941 1,0083 (−5,2026 , − 1,1053 , 19,5568) (−1,8683 , − 1,3015 , 19,3736) 3,3450 0,3592 (−4,8790 , − 0,9627 , 19,0739) (−1,7017 , − 1,2173 , 19,6419) 3,2376 0,2518 (−4,4196 , − 0,8482 , 17,9811) (−1,4070 , − 1,0555 , 18,2917) 3,0357 0,0499 (−4,7389 , − 0,9110 , 19,7296) (−1,3586 , − 1,0773 , 19,2415) 3,4193 0,4335 (−4,2163 , − 0,7898 , 18,2973) (−1,1220 , − 0,9958 , 18,3582) 3,1018 0,1159 (−4,0069 , − 0,7315 , 18,1950) (−0,9299 , − 0,9298 , 18,1897) 3,0834 0,0976 (−4,2511 , − 0,7162 , 19,7100) (−0,9684 , − 0,9654 , 20,7991) 3,4676 0,4818 (−4,1308 , − 0,6114 , 19,8927) (−0,7252 , − 0,7608 , 19,0395) 3,5139 0,5281 (−3,8449 , − 0,4390 , 19,2286) (−0,5945 , − 0,6304 , 19,2332) 3,2561 0,2703 (−3,6694 , − 0,2800 , 19,3143) (−0,4161 , − 0,4970 , 19,8035) 3,2970 0,3112 Mittelwert: 3,4275 m Standardabw.: 0,4275 m 4.4 Bestimmung der Eigenbewegung und Vergleich mit Navigationsdaten 45 Tabelle 4.2 zeigt die Ergebnisse des TrackedObjectsFilters zur Rekonstruktion der Eckpunkte der Landmarke sowie deren euklidische Distanz und die Abweichung zum Referenzwert ltachy . Die Daten zeigen, dass mit zunehmender Höhe auch die Abweichung steigt. Betrachtet man allerdings die zunehmende Tiefenungenauigkeit bei steigender Objektentfernung, welche durch den Stereoaufbau selbst bedingt ist, erkennt man, dass die gemessenen Abweichungen kleiner sind als der zu erwartende Fehler und somit als ausreichend genau angesehen werden können. Zusammenfassend zeigt die Auswertung der Datensätze, dass zwar mit zunehmender Tiefe die Unterschiede in den Werten der optischen Vermessung der Landmarken und den Ergebnissen des TrackedObjectsFilters größer werden, aber doch die Raumkoordinaten der Landmarken (beziehungsweise deren Eckpunkte) auch aus größerer Flughöhe noch ausreichend genau rekonstruiert werden können. 4.4 Bestimmung der Eigenbewegung und Vergleich mit Navigationsdaten Um die Eignung der zu jedem Zeitschritt bestimmten Relativbewegung der Kamera zur optischen Navigation zu zeigen, sollte die Flugbahn des Hubschraubers durch Akkumulation der relativen Bewegung rekonstruiert werden. Die mathematischen Grundlagen dafür wurden in Abschnitt 3.5.2 gezeigt. Zur Auswertung dienen dabei die Bilddaten aus dem Flugversuch mit nach unten gerichteter Kamera. Die Flughöhe beträgt für dabei zwischen 6 m und 20 m und Geschwindigkeiten von bis zu 5 m/s. Für die Auswertung wurden die Videos mit verschiedenen Frameraten zwischen 5 FPS und 25 FPS untersucht, um das Verhalten auf verschiedenen Rechnern zu testen. Da die Berechnung der Relativbewegung zu jedem Zeitschritt lediglich eine Näherung darstellt, ist im Verlauf der Flugbahn mit einer zunehmenden Ungenauigkeit zu rechnen. Um diesen Fehler möglichst gering zu halten, ist die Wahl passender Parameter für das ICP-Verfahren und die RANSAC Outlier Rejection ausschlaggebend. Die ICP-Implementation ermöglicht dabei die Einstellung der maximalen Anzahl an Iterationen sowie einen Wert min für die minimale Transformation während eines Durchlaufs. Das iterative Verfahren endet dabei entweder beim Erreichen der maximalen Iterationen oder wenn die Transformation während einer Iteration kleiner als der gewählte min -Wert ist. Für die RANSAC Outlier Rejection kann die Anzahl der Iterationen sowie der Grenzwert für das Verwerfen eines Punktes gewählt werden. Für die Auswertung wurde eine maximale Anzahl 4.4 Bestimmung der Eigenbewegung und Vergleich mit Navigationsdaten 46 Iterationen des ICP-Algorithmus von 100 gewählt, ein Epsilonwert von min = 1 · 10−8 m, 100 RANSAC-Iterationen und ein Grenzwert von 0.7m. Abbildung 4.7 zeigt den Vergleich der Position des Hubschraubers in x-Richtung des Weltkoordinatensystems aus den Daten der optischen Navigation (rot, durchgezogen) und der vom Flugrechner bestimmten Navigationslösung (schwarz, gestrichelt). Die Abbildung zeigt, dass zumindest während der ersten 15 Sekunden des Flugs die Position mit nur geringen Abweichungen approximiert werden kann. Ab Sekunde 20 nimmt die Abweichung allerdings deutlich stärker zu. Besonders auffällig ist das ab etwa Sekunde 45 auftretende starke Rauschen und Schwanken der Werte. Dies lässt sich durch eine höhere Flughöhe des Fluggeräts zu dem Zeitpunkt erklären und somit einer deutlich stärkeren Unsicherheit in den rekonstruierten Raumpunkten. Diese zunehmende Ungenauigkeit wirkt sich auch auf die Bewegungsschätzung aus. −10 x[m] −20 −30 −40 0 5 10 15 20 25 30 35 t[s] 40 45 50 55 60 65 70 Abb. 4.7: Vergleich der Position in x-Richtung aus optischer Navigation (rot, durchgezogen) und Navigationslösung (schwarz, gestrichelt) In Abbildung 4.8 zeigt die Position des Hubschraubers in y-Richtung über den zeitlichen Verlauf. Der schwarz gestrichelte Graph entspricht dabei wieder der Navigationslösung und der rote Graph den Ergebnissen der optischen Navigation. Der Vergleich der Bahnen zeigt, dass genau wie in x-Richtung die Flugbahn mit zunehmender Abweichung approximiert werden kann. Auch hier tritt ab Sekunde 45 ein stärkeres Rauschen der Position auf, was auch für ein stärkeres Anwachsen der Abweichung bewirkt. 4.4 Bestimmung der Eigenbewegung und Vergleich mit Navigationsdaten 47 y[m] 0 −20 −40 −60 0 5 10 15 20 25 30 35 t[s] 40 45 50 55 60 65 70 Abb. 4.8: Vergleich der Position in y-Richtung aus optischer Navigation (rot, durchgezogen) und Navigationslösung (schwarz, gestrichelt) Ein Vergleich der Flughöhe wird in Abbildung 4.9 gezeigt. Hier wird eine starke Abweichung deutlich, die ab Sekunde 16 beginnt und die Flughöhe stark ansteigen lässt. Ab Sekunde 23 tritt hingegen sinkt die Flughöhe wieder stark. Wie auch in den anderen Abbildungen tritt auch in z-Richtung ab Sekunde 45 ein stärkeres Rauschen auf. Der starke Knick im Plot der Flughöhe konnte auch durch eine Anpassung der RANSAC Parameter nicht ausgeglichen werden. Bei Betrachtung der Bilddaten ist allerdings aufgefallen, dass der Hubschrauber ab Sekunde 23 eine schnellere Richtungsänderung in x- und y-Richtung durchführt und somit an dieser Stelle auch sehr unstetig fliegt mit größerer Rotation um die xund y-Achse. Das könnte zumindest ansatzweise die plötzlich stark steigende Abweichung der Flughöhe erklärt. 4.4 Bestimmung der Eigenbewegung und Vergleich mit Navigationsdaten 48 −20 z[m] −10 0 10 20 0 5 10 15 20 25 30 35 t[s] 40 45 50 55 60 65 70 Abb. 4.9: Vergleich der Flughöhe aus optischer Navigation (rot, durchgezogen) und Navigationslösung (schwarz, gestrichelt) Diese starke Abweichung hat auch Auswirkungen auf die Position in x- und y-Richtung und erklärt auch die schnell wachsende Abweichung der x-Position ab Sekunde 20. Die Flugbahn aus Sicht von oben ist in Abbildung 4.10 dargestellt. y[m] 0 −20 −40 −60 −45 −40 −35 −30 −25 x[m] −20 −15 −10 −5 Abb. 4.10: Vergleich der Trajektorie aus Nav-Lösung (schwarz, gestrichelt) und optischer Navigation (rot, durchgezogen) aus Ansicht von oben Um diese starke Ungenauigkeit zu verringern, wurden verschiedene Parameter des ICPVerfahrens gewählt. Allerdings war es auch durch diese nicht möglich, die Ungenauigkeiten in 4.4 Bestimmung der Eigenbewegung und Vergleich mit Navigationsdaten 49 entscheidend zu verringern. Tests mit verschiedenen Schwellwerten für das RANSAC-Verfahren haben gezeigt, dass bei höheren Werten die Ungenauigkeiten bei höheren Flughöhen verringert werden konnten, dabei aber die Abweichungen bei geringeren Flughöhen größer wurden. Daher wurde die Implementation dahingehend erweitert, dass der Schwellwert dynamisch anhand der mittleren Entfernung der Kamera zu den Objekten gesetzt werden kann. Ebenso kann die Anzahl der RANSAC-Iterationen abhängig von der Anzahl der Features dynamisch gesetzt werden kann (siehe [Isl08]). Zwar konnte durch diese Anpassungen die Rechenzeit verkürzt werden, jedoch waren die Ergebnisse ähnlich zu denen mit fest gewählten Parametern. Eine weitere Erklärung für die plötzliche Abweichung der Flughöhe sind mögliche Fehlkorrespondenzen, die durch den ICP-Algorithmus verursacht werden. Daher wurde die Trajektorie auch mittels der TransformationEstimationSVD-Klasse rekonstruiert. Die Ergebnisse dieser Berechnung ist in den folgenden Abbildungen dargestellt. 0 x[m] −10 −20 −30 −40 0 5 10 15 20 25 30 35 t[s] 40 45 50 55 60 65 70 Abb. 4.11: Vergleich der x-Position aus Navigationslösung und optischer Navigation mittels TransformationEstimationSVD 4.4 Bestimmung der Eigenbewegung und Vergleich mit Navigationsdaten 50 y[m] 0 −20 −40 −60 0 5 10 15 20 25 30 35 t[s] 40 45 50 55 60 65 70 Abb. 4.12: Vergleich der y-Position aus Navigationslösung und optischer Navigation mittels TransformationEstimationSVD −20 z[m] −10 0 10 20 0 5 10 15 20 25 30 35 t[s] 40 45 50 55 60 65 70 Abb. 4.13: Vergleich der Flughöhe aus Navigationslösung und optischer Navigation mittels TransformationEstimationSVD Die Ergebnisse zeigen, dass einige der Störungen und Abweichungen, die bei Verwendung des ICP-Algorithmus auftreten, durch fehlerhafte Korrespondenzen innerhalb des ICP hervorgerufen werden. Abbildung 4.13 zeigt deutlich, dass in dem Bereich bei ab Sekunde 40 hier die Flughöhe deutlich besser approximiert wird, während der Bereich im in den Graphen des ICP-Algorithmus stark verrauscht ist. 4.4 Bestimmung der Eigenbewegung und Vergleich mit Navigationsdaten 51 Allerdings treten bei Verwendung der TransformationEstimationSVD-Klasse einige starke Sprünge auf, die auf Ausreißer zurückgeführt werden können. Diese werden in der Klasse aufgrund der fehlenden RANSAC Outlier Rejection nicht gefiltert und verfälschen somit stark das Messergebnis. Zusammenfassend lässt sich dadurch sagen, dass die rekonstruierten Raumpunkte für die optische Navigation geeignet sind, auch wenn in den Ergebnissen noch einige starke Abweichungen vorkommen. Im folgenden Kapitel werden daher im Ausblick noch einige Ideen zur Verbesserung der Ergebnisse präsentiert. KAPITEL 5 Zusammenfassung 5.1 Verfahren im Überblick Im Rahmen dieser Bachelorarbeit wurde ein Verfahren für die Verfolgung markanter Features und die Rekonstruktion der Raumkoordinaten dieser Features mit Hilfe kalibrierter Stereokameras entwickelt. Die Methode nutzt zum Verfolgen der Features und für das Finden korrespondierender Punkte eine effiziente Implementierung des pyramidischen Lucas-KanadeTrackers. Das bietet den Vorteil der Echtzeitfähigkeit des Verfahrens, was essentiell für eine robuste Navigation an einem UAV ist. Des Weiteren bietet der verwendete Tracker den Vorteil, dass die verwendeten Bilddaten nicht zwingend rektifiziert sein müssen und somit das Verfahren auch auf ungefilterten Bilddaten anwendbar ist. Um die Genauigkeit der ermittelten Punktkoordinaten zu gewährleisten, sollten über eine Kalibrierung der Stereokamera die notwendigen Parameter für die Berechnungen ermittelt werden und auch die Möglichkeit bestehen, einzelne Punkte in ihre Koordinaten im rektifizierten und entzerrten Bild zu transformieren, beispielsweise wie in der Arbeit verwendet durch eine Rektifizierungsmatrix R. Eine solche Rektifizierungsmatrix bietet den Vorteil, nicht das komplette Bild rektifizieren zu müssen, sondern lediglich die getrackten Bildpunkte und deren Korrespondenzen im Stereobild in ihre rektifizierten Koordinaten zu transformieren, um einen möglichst genauen Tiefenwert zu ermitteln. Die Einstellmöglichkeiten des FeatureTrackers sowie des TrackedObjectFilters ermöglichen eine Anpassung an verschiedene Situationen und Kamerasysteme, sodass auch in schlecht ausgerichteten Kameras erfolgreich Korrespondenzen gefunden und getrackt werden können. 52 5.2 Ausblick auf zukünftige Arbeiten 53 Das Verfahren läuft dabei robust und liefert je nach Kamerasystem und dort verwendeten Basisabstand für die optische Navigation ausreichend genaue Raumpunktdaten. Der Vergleich zur Höhe der Navigationslösung aus GPS und IMU hat dabei gezeigt, dass die rekonstruierten Tiefen der Punkte innerhalb des zu erwartenden Fehlerrahmens liegen. Schwachstellen bietet das Verfahren allerdings bei stark verrauschten oder extrem überbelichteten Bilddaten. Dort werden vom verwendeten Feature-Tracker unter Umständen einige markante Punkte in nicht optimalen Bereichen gefunden, die das Ergebnis verfälschen können. Sind die Bilddaten zu stark überbelichtet, kann das zu Problemen führen, wenn nur noch kleinere Bildbereiche ausreichend texturiert sind, um dort markante Features zu finden. Direkt bei der Auswertung der Bilddaten aus den Flugversuchen ist aufgefallen, dass besonders in geringer Flughöhe, also einer sehr geringen Distanz von Kamera zum gefilmten Hintergrund, die Korrespondenzen nicht immer automatisch gefunden werden und somit keine oder nur wenige gültige Raumkoordinaten berechnet werden können. Diese Einschränkung, die besonders beim automatischen Landen kritisch wird, kann unter Umständen durch eine Anpassung der Tracking-Parameter oder durch die Nutzung zusätzlicher Sensoren wie beispielsweise einem Sonarsensor als zusätzliche Tiefeninformation kompensiert werden. Um die Eignung der ermittelten Punktdaten für die optische Navigation zu testen, wurde mit Hilfe des Iterative-Closest-Point-Algorithmus und einer RANSAC Outlier Rejection ein Filter entwickelt, der aus zwei Punktmengen die relative Eigenbewegung des Fluggeräts rekonstruieren kann und zu jedem Zeitschritt die relative Bewegung als Rotationsmatrix und Translationsvektor ausgibt. Da die gewählten Korrespondenzen zwischen den Punktmengen im ICP-Algorithmus fehlerhaft sein können, die eigentlichen Korrespondenzen aber bekannt sind, wurde die Bewegung auch mit Hilfe der TransformationEstimationSVD-Klasse rekonstruiert, da dort die Korrespondenzen vorgegeben werden können. Zwar ist die damit durch Akkumulation der Werte ermittelte Flugbahn durch den dabei zunehmenden Fehler nicht so exakt wie die Positions- und Bewegungsdaten der Navigationslösung, dennoch dürften die Werte für eine Verbesserung der Navigation besonders bei Ausfall des GPS-Sensors beitragen können. 5.2 Ausblick auf zukünftige Arbeiten Die Schwachstellen des entwickelten Verfahrens geben einige Inspiration für zukünftige und weiterführende Arbeiten. In der Aufgabe des Trackings könnte ein zukünftiger Fokus auf einer genaueren Untersuchung der Genauigkeit des Trackings markanter Punkte liegen. Dies kann zum einen durch die Verwendung anderer Verfahren zur Bestimmung markanter Punkte im Bild geschehen, beispielsweise das SIFT - [Low04] oder SURF -Verfahren [BTG06]. Des Weiteren kann versucht werden, die Genauigkeit des Trackings durch das Finden optimierter Parameter 5.2 Ausblick auf zukünftige Arbeiten 54 für den Lucas-Kanade-Tracker zu finden, da diese je nach verwendetem Kamerasystem und der Leistung des Bildverarbeitungsrechners unterschiedlich sein können. So kann zum Beipiel eine Anpassung der Tiefe der Bildpyramiden sowie eine Erhöhung der Iterationen beim Tracken zu einem genaueren Ergebnis führen, wobei aufgrund des erhöhten Rechenaufwands allerdings ein Kompromiss gefunden werden muss. Hirschmüller [HG09] präsentiert dafür ein Filterverfahren, um die Akkumulation von Tracking-Fehlern im Subpixelbereich zu vermindern und somit die Genauigkeit des Trackings zu verbessern. Neben der allgemeinen Verbesserung des Trackings markanter Punkte und der Suche nach korrespondierenden Punkten im rechten Stereobild, stehen weitere Verfahren zur Filterung von Fehlschätzungen oder zum Eliminieren von Außenseitern zur Verfügung. Durch eine Betrachtung der Fehlerwerte aus der Ausgabe des Lucas-Kanade-Trackers ist es unter Umständen möglich, gefundene Korrespondenzen auf deren Genauigkeit und Richtigkeit zu untersuchen und somit falsche Korrespondenzen zu verwerfen. Der in dieser Arbeit festgestellte Offset der vertikalen Disparität lässt sich in zukünftigen Arbeiten auch für eine Verbesserung der aus der Kamerakalibierung gewonnenen Parameter einsetzen. Damit könnten sich die Ungenauigkeiten der Rektifizierung verkleinern und somit eine bessere Filterung der Ergebnisse erzielen. Statt dem in dieser Arbeit verwendeten Kontroll-Tracking über den rechten Bildverlauf könnte in zukünftigen Arbeiten auch alternativ das Suchen von Korrespondenzen vom rechten ins linke Kamerabild implementiert werden. Wird bei diesem Tracking der linke Bildpunkt möglichst exakt wiedergefunden, sind mit hoher Wahrscheinlichkeit die richtigen korrespondierenden Punkte gefunden. Zur Validierung der gemessenen Punkte könnte in zukünftigen Arbeiten der Vergleich mit Werten eines Laserscanners dienen. In Testaufnahmen mit verschiedenen Tiefen könnten so über das ganze Bild die Tiefenwerte der verfolgten Features auf ihre Genauigkeit untersucht werden. Dadurch lassen sich auch Ungenauigkeiten in den verwendeten Kamerasystemen feststellen, wie bereits von Isleib [Isl08] untersucht wurde. Nicht nur bei der Rekonstruktion der Raumpunkte, auch bei der Berechnung der relativen Kamerabewegung gibt es einige mögliche Erweiterungen und Verbesserungen für zukünftige Arbeiten. So könnte beispielsweise die zunehmende Tiefenungenauigkeit der Raumpunkte in der Stereobearbeitung betrachtet werden. Insbesondere im Punktwolkenmatching wäre dabei die Mahalanobis-Distanz interessant [Isl08]. Als weiterführende Arbeit wäre außerdem der Vergleich verschiedener Verfahren zur Berechnung der Kamerabewegung oder zur vorherigen Filterung von Außenseitern denkbar. Neben dem ICP-Verfahren, wie es in dieser Arbeit verwendet wird, könnte beispielsweise der Ansatz von Hirschmüller [HIG02b] genutzt werden. 5.2 Ausblick auf zukünftige Arbeiten 55 Des Weiteren besteht die Möglichkeit, den zunehmenden Fehler durch Verwendung so genannte Keyframes zu verkleinern. Dabei wird nicht nur die Bewegung der Punkte zwischen zwei Zeitschritten betrachtet, sondern auch deren Transformation über einen längeren Zeitpunkt berechnet, was zu einer geringeren Fehlerakkumulation führen kann. Primär soll die ermittelte Kamerabewegung dazu genutzt werden, die im Flugrechner erzeugte Navigationslösung zu verbessern, beziehungsweise bei einem Ausfall des GPS-Sensors (z. B. durch Signalabschattung oder Empfangsstörung) den von der IMU verursachten Drift zu kompensieren. Dadurch soll erreicht werden, dass auch in solch kritischen Situationen der Hubschrauber seine Position und Bewegung ausreichend exakt bestimmen kann, um nicht abzustürzen. Um dies zu erreichen könnte in weiterführenden Anwendungen die ermittelte Kamerabewegung an den Flugrechner übertragen werden, um in den dort verwendeten erweiterten Kalman-Filter einzugehen und in die Navigationslösung einberechnet zu werden. Gleichzeitig besteht durch die ständige Verbindung des Flugrechners und des Bildverarbeitungsrechners über LAN die Möglichkeit, während des Fluges die Sensordaten der Navigation zu benutzen, um die Bildverarbeitungsprozesse zu verbessern und zu beschleunigen. So ist bei diesem so genannten tight coupling, beispielsweise durch eine bekannte Bewegung in der Navigationslösung, ein A-priori-Wissen vorhanden, welches dem Feature-Tracker eine initiale Schätzung der Positionsänderung der Features zwischen zwei Zeitschritten gibt. Dieses Apriori-Wissen kann auch für die Berechnung der Eigenbewegung genutzt werden, um die dort verwendeten Verfahren zu beschleunigen und exaktere Ergebnisse zu ermöglichen. Literatur [AH88] N. Ayache und C. Hansen. Rectification of images for binocular and trinocular stereovision. English. Techn. Ber. RR-0860. INRIA, 1988. [AHB87] K. S. Arun, T. S. Huang und S. D. Blostein. „Least Squares Fitting of Two 3-D Point Sets“. Pattern analysis and Machine Intelligence, IEEE Transactions on PAMI-9.5 (Sep. 1987), S. 698–700. [AKI05] M. Agrawal, K. Konolige und L. Iocchi. „Real-time detection of independent motion using stereo“. IEEE workshop on Motion (WACV/MOTION). Jan. 2005. [And06] F. Andert. Stereobildbasierte Kollisionsvermeidung für einen unbemannten Kleinhubschrauber. Diplomarbeit. DLR / HU Berlin. 2006. [And11] F. Andert. „Bildbasierte Umgebungserkennung für autonomes Fliegen“. Dissertation. DLR FB 2011-09. Braunschweig: Technische Universität Carolo-Wilhelmina, 2011. [BM92] P. Besl und H. McKay. „A method for registration of 3-D shapes“. Pattern Analysis and Machine Intelligence, IEEE Transactions on 14.2 (Feb. 1992), S. 239 –256. [Bou00] J. Bouguet. Pyramidal implementation of the Lucas Kanade feature tracker. Techn. Ber. Intel Corporation, Microprocessor Research Labs, 2000. [Bro71] D. C. Brown. „Close-range camera calibration“. Photogrammetric Engineering 37.8 (1971), S. 855–866. [BTG06] H. Bay, T. Tuytelaars und L. V. Gool. „Surf: Speeded up robust features“. ECCV. 2006, S. 404–417. [CDL04] P. Castillo, A. Dzul und R. Lozano. „Real-time stabilization and tracking of a four-rotor mini rotorcraft“. 12.4 (2004), S. 510–516. [Fau93] O. Faugeras. Three-dimensional computer vision: a geometric viewpoint. Cambridge, MA, USA: MIT Press, 1993. [Fau95] O. Faugeras. „Stratification of three-dimensional vision: projective, affine, and metric representations“. J. Opt. Soc. Am. A 12.3 (März 1995), S. 465–484. 56 Literatur 57 [Fua93] P. Fua. „A parallel stereo algorithm that produces dense depth maps and preserves image features“. Machine Vision and Applications 6.1 (1993), S. 35–49. [Goo04] L. Goormann. „Objektorientierte Bildverarbeitungsalgorithmen zum relativen Hovern eines autonomen Helikopters“. Diplomarbeit. DLR / FH Braunschweig/Wolfenbüttel, 2004. [Gut04] O. Guth. „Biologisch inspirierte Bildverarbeitungsalgorithmen zur Realisierung eines Geländefolgefluges für einen autonomen Kleinhubschrauber“. Diplomarbeit. DLR / FH Braunschweig/Wolfenbüttel, 2004. [HG09] H. Hirschmüller und S. Gehrig. „Stereo matching in the presence of sub-pixel calibration errors“. Computer Vision and Pattern Recognition, 2009. CVPR 2009. IEEE Conference on. Juni 2009, S. 437 –444. [HIG02a] H. Hirschmüller, P. R. Innocent und J. Garibaldi. „Real-Time Correlation-Based Stereo Vision with Reduced Border Errors“. Int. J. Comput. Vision 47.1-3 (Apr. 2002), S. 229–246. [HIG02b] H. Hirschmüller, P. Innocent und J. Garibaldi. „Fast, unconstrained camera motion estimation from stereo without tracking and robust statistics“. Control, Automation, Robotics and Vision, 2002. ICARCV 2002. 7th International Conference on. Bd. 2. Dez. 2002, 1099 –1104 vol.2. [HZ04] R. Hartley und A. Zisserman. Multiple View Geometry in Computer Vision. Second Edition. Cambridge University Press, 2004. [Isl08] C. Isleib. „Bildbasierte Bewegungsschätzung eines unbemannten Helikopters“. Diplomarbeit. DLR / Universität Koblenz-Landau, 2008. [KAK04] T. Kanade, O. Amidi und Q. Ke. „Real-Time and 3D Vision for Autonomous Small and Micro Air Vehicles“. 43rd IEEE Conference on Decision and Control (CDC 2004). Dez. 2004. [Kon97] K. Konolige. „Small vision systems: hardware and implementation“. Eighth International Symposium on Robotics Research. 1997, 111–116. [LK81] B. D. Lucas und T. Kanade. „An Iterative Image Registration Technique with an Application to Stereo Vision“. Seventh International Joint Conference on Artificial Intelligence (IJCAI-81). 1981, S. 674–679. [Lon87] H. C. Longuet-Higgins. „Readings in computer vision: issues, problems, principles, and paradigms“. Hrsg. von M. A. Fischler und O. Firschein. San Francisco, CA, USA: Morgan Kaufmann Publishers Inc., 1987. Kap. A computer algorithm for reconstructing a scene from two projections, S. 61–62. [Low04] D. G. Lowe. „Distinctive Image Features from Scale-Invariant Keypoints“. Int. J. Comput. Vision 60.2 (Nov. 2004), S. 91–110. Literatur 58 [Luh00] T. Luhmann. Nahbereichsphotogrammetrie: Grundlagen, Methoden und Anwendungen. Wichmann Herbert, 2000. [MS06] A. Milella und R. Siegwart. „Stereo-based ego-motion estimation using pixel tracking and iterative closest point“. in IEEE International Conference on Computer Vision Systems. 2006, S. 21. [NNB06] D. Nister, O. Naroditsky und J. Bergen. „Visual odometry for ground vehicle applications“. Journal of Field Robotics 23 (2006), S. 2006. [RC11] R. B. Rusu und S. Cousins. „3D is here: Point Cloud Library (PCL)“. IEEE International Conference on Robotics and Automation (ICRA). Shanghai, China, Mai 2011. [SH10] H. Su und B. He. „A Simple Rectification Method of Stereo Image Pairs with Calibrated Cameras“. Information Engineering and Computer Science (ICIECS), 2010 2nd International Conference on. Dez. 2010, S. 1 –4. [SRI08] SRI. Small Vision System. Softwareversion 4.4f. SRI International. Mai 2008. [SS02] D. Scharstein und R. Szeliski. „A Taxonomy and Evaluation of Dense Two-Frame Stereo Correspondence Algorithms“. Int. J. Comput. Vision 47 (1-3 Apr. 2002), S. 7–42. [ST94] J. Shi und C. Tomasi. „Good features to track“. Computer Vision and Pattern Recognition, 1994. Proceeding CVPR ’94, 1994 IEEE Computer Society Conference. 1994, S. 593–600. [TV98] E. Trucco und A. Verri. Introductory Techniques for 3-D Computer Vision. Upper Saddle River, NJ, USA: Prentice Hall PTR, 1998. [Wil98] T. Williamson. A High-Performance Stereo Vision System for Obstacle Detection. Techn. Ber. CMU-RI-TR-98-24. Pittsburgh, PA: Robotics Institute, Carnegie Mellon University, Sep. 1998. [ZCL10] W. Zheng, Y.-H. Chang und Z.-Z. Li. „A study of 3D feature tracking and localization using a stereo vision system“. Computer Symposium (ICS), 2010 International. Dez. 2010, S. 402 –407. [Zha98] Z. Zhang. „Determining the Epipolar Geometry and its Uncertainty: A Review“. Int. J. Comput. Vision 27 (2 Apr. 1998), S. 161–195.