250 likes | 478 Views
Vortrag zum Vertieferpraktikum Photogrammetrie am IPB der Universität Bonn, im SS 2004 zum Thema Ableitung charakteristischer Bildmerkmale Lowe-SIFT versus PCA-SIFT von Volker Schuster. Überblick. Problembeschreibung. Skizzierung der Lowe-SIFT.
E N D
Vortrag zum Vertieferpraktikum Photogrammetrie am IPB der Universität Bonn, im SS 2004 zum Thema Ableitung charakteristischer Bildmerkmale Lowe-SIFT versus PCA-SIFT von Volker Schuster.
Überblick • Problembeschreibung. • Skizzierung der Lowe-SIFT. • Beschreibung der eigenen Implementierung des • Lowe-SIFT-Keypointextraktors. • Beschreibung des Lowe-SIFT-Keypointdeskriptors sowie • des PCA-SIFT-Keypointdeskriptors. • Performancevergleich der beiden Keypointdeskriptoren. • Matchingbeispiele (PCA-Sift).
Problem • Berechnung von Keypoints aus einem Bild die mit Keypoints aus • einem anderen Bild gematcht werden können. • Benötigen mehrere Hundert korrespondierende Punkte um • relative Orientierung zu bestimmen und daraus 3D-Modell abzuleiten. Lösung • Lowe-SIFT bzw. PCA-SIFT. • Robustheit gegenüber Änderungen in der Beleuchtung, projektive Verzerrungen, Aufnahmeperspektive und Bildrauschen. • Keypointdeskriptoren sind gut unterscheidbar. • Leider (vorerst) nur Grauwertbilder unterstützt.
Lowe-SIFT (Scale Invariant Feature Transform) Eingabe: Bild A. Algorithmus: 1. Extrahiere skalierungsinvariante Keypoints aus Bild A. 2. Diskretisiere die Richtungen der Bildgradienten in der Umgebung um einen Keypoint, z.B. N = 36 und berechne die Hauptrichtungen. 3. Berechne für jede Hauptrichtung des Keypoints einen Keypointdeskriptor.
Implementierung der Keypointextraktion
Implementierung der Keypointextraktion (Extremasuche im Skalenraum) • Es wird iterativ mit Gaussfiltern Gs gefaltet und danach verkleinert • B0 = A, B1 = Gs(B0), B2 = Gs(B1), B2‘ = Rs(B2) • B3 = Gs(B2‘), B4 = Gs(B3), B4‘ = Rs(B4), usw… • wobei s =1,5 gewählt wurde, • Gs(x, y) =1/(2ps2) * exp(-(x2+ y2) / (2s2)) • und Rs ein bilineares Resampling (incl. Antialiasing) ist. • Benachbarte Bilder B2i und B2i-1 werden (punktweise) Subtrahiert • C1 := B2- B1, C2 := B4- B3, … , Cn := B2n– B2n-1. • (Größenunterschiede der Ci werden durch bilineares Resampling angeglichen) • Die C1 bis Cnwerden DoG‘s (Difference of Gaussian‘s) genannt. • Verwendung von Bildpyramiden führt zu Laufzeitverbesserungen.
Implementierung der Keypointextraktion (Extremasuche im Skalenraum) • Definieren Fenster in Bild Ci: • Fd(Ci, r, c) := Ci(r-d:r+d, c-d:c+d). • In den Bildern C2bis Cn-1werden Bildpunkte Ci(r, c) mit • lokalen Extrema innerhalb des Fensters Fd(Ci, r, c) gesucht, • wobei d fest gewählt wird. • Ist der Grauwert Ci(r, c) ein Extremum in Fd(Ci, r, c) und gilt • (Ci(r, c) > Fd(Ci-1, r, c) Ù Ci(r, c) > Fd(Ci+1, r, c)) • Ú (Ci(r, c) < Fd(Ci-1, r, c) Ù Ci(r, c) < Fd(Ci+1, r, c)) • so wird das Tripel (r, c, i) weiter untersucht, • sonst wird das Tripel verworfen.
Implementierung der Keypointextraktion (Extremasuche im Skalenraum) • Beispiel für d = 1: • Es werden Extrema in 3 x 3 Fenstern • F1(Ci, r, c) := Ci(r-1:r+1, c-1:c+1) • gesucht, wobei 2 £ i £ n-1. Ci+1 Ci Ci-1
Implementierung der Keypointextraktion (Extremasuche im Skalenraum) • Das Tripel (r, c, i) definiert ein Extremum im Skalenraum. • Nachverarbeitung (Filterung): • Ist Ci(r, c) < T wird das Tripel verworfen. • Durch den Schwellwert T können durch Bildrauschen entstehende Extrema • eliminiert werden. • Liegt der Punkt (r, c) auf einer Kante, so wird das Tripel verworfen, d.h. • falls für das Verhältnis der Eigenwerte der Hauptachsen der Bildgradienten • in einer Umgebung um (r,c) • lmax / lmin > Vmax • gilt. Trifft dies nicht zu, wird das Tripel beibehalten. • Die Punktkoorinaten (r,c) werden mit Subpixelgenauigkeit geschätzt, • indem das Extremum in Bild Ci an der Stelle (r, c) interpoliert wird.
Der Lowe-SIFT-Keypointdeskriptor • Gegeben ist nun das Tripel (r, c, i). Sei K ÎN. • Um den Punkt (r, c) in Bild A wird ein Fenster der Größe • Z x Z gewählt, wobei Z = si * M ist und M = 4 * K. • Das Fenster wird dann auf die Größe M x M verkleinert und • bezüglich jeder Gradienten-Hauptrichtung normiert. • Da der Bildgradient aus der horizontalen und vertikalen • Ableitung besteht, ist dieser invariant gegenüber • Helligkeitsveränderungen im Bild. • Aus den Gradienten für jedes normierte Fenster • wird der Lowe-Sift-Keypointdeskriptor bestimmt.
Der Lowe-SIFT-Keypointdeskriptor • Das Fenster wird in 4 x 4 Pixel Felder aufgeteilt. • Beispiel: Für M = 8 erhält man 2 x 2 Felder • Für jedes Feld wird ein Richtungshistogramm mit 8 Einträgen • (für die Richtungen der Gradienten in dem Feld) erzeugt. • Bei 2 x 2 Feldern ergibt sich so die Zahl von 2*2*8 = 32 Einträgen, • die in dem sog. Featurevektor zusammengefasst werden. • Durch Normierung der Länge dieses Vektors wird Invarianz • gegenüber Kontraständerungen erreicht.
Der Lowe-SIFT-Keypointdeskriptor • Üblicherweise wird M = 16 gewählt. • Daraus ergeben sich 4 * 4 = 16 Felder und 4*4*8 = 128 Vektoreinträge. • Auch Gradienten in benachbarten Feldern haben Einfluss auf das • Richtungshistogramm eines Feldes. • Gradienten am Fensterrand werden schwächer gewichtet. • Nachteil: Optimale Schwellwerte für Gradientengewichtungen • müssen gefunden werden (bzw. sind unbekannt).
PCA-Sift • Fenster wird nicht in Felder unterteilt, sondern als Ganzes behandelt. • Konkrete Realisierung (im Programm): • Für ein 41 x 41 Fenster bestimme das 39 x 39 • Fenster der Gradienten. (39 * 39 = 1521) • Für jeden der 1521 Punkte bestimme • horizontale und vertikale Ableitung. • Fasse Ableitungen in einem Vektor Y zusammen • (2 * 1521 = 3042 Komponenten) und • normiere auf |Y|2 = 1. • Hat man genügend Trainingsvektoren aus einer Bildersammlung • gewonnen (z.B. 20000) dann bestimmt man die Kovarianzmatrix • Sdieser Vektoren.
PCA-Sift • Principal component analysis: • Bestimme Matrix A, wobei die j-te Spalte der Eigenvektor von S, • zum j-ten Eigenwert (der Größe nach geordnet) ist. • D.h. A = (v1, …, vm) und |l1| ³ |l2| ³ … • Der Vektor Z der Hauptkomponenten zum Eingabevektor Y • wird durch folgende Gleichung bestimmt: • Z = AT * Y. • In unserem Fall ist m = 3042. • Die ersten N (Haupt-)Komponenten von Z bilden den • PCA-Sift-Featurevektor. • Der Featurevektor speichert die Anteile von Y an den Richtungen • der N größten Varianzen der Trainingsvektoren. • Für m = 3042 hat sich N = 36 als optimal erwiesen.
Lowe-Sift versus PCA-Sift • Lowe-Sift-Featurevektoren haben (üblicherweise) • eine Dimension von 128. • PCA-Sift-Featurevektoren hingegen nur Dimension 36. • Matching von Keypoints geschieht durch Vergleich des • eukl. Abstandes zweier Featurevektoren. • (sowohl bei Lowe–SIFT als auch bei PCA-Sift) • => PCA-Sift-Featurevektoren können schneller in DB gesucht werden. • Implementierung des PCA-Sift-Keypointdeskriptors einfacher • als Lowe-Sift-Keypointdeskriptor (da nur Matrixoperationen). • Keine Gradientenschwellwerte für PCA-Sift-Keypointdeskriptor- • Berechnung notwendig.
Matchingbeispiele (PCA-Sift)
Literatur • 1. „PCA-SIFT: A More Distinctive Representation for Local Image Descriptors“ • Yan Ke, Rahul Sukthankar • School of Computer Science, Carnegie Mellon University • „Distinctive Image Features from Scale-Invariant Keypoints“ • David G. Lowe • Computer Science Department, University of British Columbia.