Seminar - Objekterkennung durch Alignment

Download Report

Transcript Seminar - Objekterkennung durch Alignment

Hough-Transformation
Hough-Transformation
Die Hough-Transformation ist ein Verfahren zur Detektion kollinearer
Punkte.
Mit ihr können Objekte erkannt werden, die sich in geschlossener
parametrisierbarer Form darstellen lassen.
Beispiele hierfür sind Kreise, Ellipsen oder Linien.
Auf das Auffinden gerader Linien möchte ich hier etwas genauer
eingehen.
Definition:
Unter einer Geraden versteht
man im Sinne des HoughAlgorithmus eine Menge von
kollinearen Punkten.
Mathematische Definition
Im kartesischen Koordinatensystem wird eine Gerade normalerweise
durch ihre Steigung m und den y-Achsenabschnitt t beschrieben:
y = m*x + t
nach t aufgelöst ergibt das
t = -m*x + y
Hessesche Normalform
  
n  x  a   0
Einen der unendlich vielen Haltepunkte der Geraden bekommt man immer durch
Verlängerung (oder Stauchung) des Normalenvektors.
Es folgt:
 

n  x  pn   0



a ist der Haltepunkt und n ist die Normale mit . n  1
Aus

n 1
folgt:
  cos  0 

n  
 sin  o 
 cos  o  
    cos  o    x 
      p0  
  
n   x  a   
 sin  0    y 
 sin  0  
x  cos  0  y  sin  0  p0  0
p0  x  cos  0  y  sin  0
p0  x  cos  0  y  sin  0
Dieses Vorgehen nennt man „Gerade-zu-Punkt-Transformation“.
Binärbild
Die transformierten
Punkte des
Binärbildes im
Hough-Raum.
Die Hough-Transformation arbeitet vorteilhaft auf einem
Binärbild oder einem Gradientenbild.
Binärbild
Gradientenbild
Zielsetzung der Hough-Transformation:
•
Finden von vorgegebenen geometrischen Strukturen in
einem (segmentierten) Bild
•
Überprüft wird, ob einzelne Segmente der Referenzstruktur
ähnlich sind
•
Robust gegenüber Rauschen und systematischen Fehlern
•
Erkennt auch teilweise verdeckte (unvollständige) Strukturen
•
Ursprünglich zur Detektion kollinearer Bildpunkte verwendet
•
Referenzstruktur entsprechend eine Gerade
Hough-Algorithmus
Hough-Algorithmus








Der (r,phi)-Raum wird diskretisiert (z.B. 1° oder 5° Stufen)
Die Radiusachse wird entsprechend der benötigten Genauigkeit
gewählt
Daraus entsteht ein endliches, zweidimensionales Feld (r,phi)
Dieses Feld wird als Akkumulator bezeichnet jedes Element im
Akkumulator entspricht einer Geraden im (x,y)-Koordinatensystem
(statt Geraden sind auch andere parametrisierte (paramterisierbare)
Referenzstrukturen nutzbar
z.B. Kreise -> drei Parameter (x,y,r) oder Ellipsen - fünf Parameter
(x,y,r1,r2,phi)
Der Akkumaltor wird mit Null initialisiert
Nun werden die Punkte des Bildes mit der Hough-Transformation in
den (r,phi)-Raum überführt und in den Akkumulator eingetragen (die
betroffenen Zellen werden inkrementiert)
Jedes Maximum im Akkumulator (Zellen deren Wert einen gegebenen
Schwellenwert/Genauigkeitswert überschreiten) repräsentiert genau
eine Gerade im Bild (Cluster evtl. auf einen Punkt reduzieren)
Ergebnis ist ein Bild mit Geraden ohne Anfangs- und Endpunkte
 Tracking

Ergebnis ist ein Bild mit Geraden ohne Anfangs- und Endpunkte
Dabei dienen die durch die
Hough-Transformation
gefundenen Geraden als
"Wegweiser" durch das
Originalbild.
 Tracking
Man fährt auf den
Geraden das Originalbild
ab und registriert wann
die Grauwertdifferenz
einen Schwellenwert
überschreitet und man
sich zu einer hohen
Warscheinlichkeit auf einer
Objektkontur befindet.
Ein interessanter Effekt ist, dass parallele
Geraden in einer Akkumulator-Spalte
stehen, da sie den selben Winkel phi
haben.
Kreiserkennung
(x,y)
r
Ellipsenerkennung
2. Modellbasierende
Objekterkennung
Die Objekterkennung ist das zentrale Problem der
Bildverarbeitung. Es beinhaltet die Identifikation und
Lokalisierung von gegebenen Objekten in einem Bild.
1. Alignment:
Unter Objekterkennung verstehen wir also hiefür,
das Erkennen von Zusammenhängen zwischen
einem Bild und einer bestimmten Ansicht eines
bekannten Objekts.
Es wird also geprüft, inwiefern ein Objekt aus einer
Modelldatenbank mit einem Bild übereinstimmt.
Beispiel: Alignment im 2D
Modell (2D)
Bild (2D)
(ai,am) und (bi,bm) sind Paare von korrespondierenden
charakteristischen Bild- und Modellpunkten.
Wir betrachten im Folgenden lediglich diese beiden Punktpaare!
Modell und Bild oben dienen nur der Anschauung!
Beispiel: Alignment im 2D
Schritt 1:
Verschieben der Modellpunkte, so dass bm = bi
Beispiel: Alignment im 2D
Schritt 2:
Rotation von am um bm, so dass die gedachten
Kanten aibi und ambm aufeinander liegen.
Beispiel: Alignment im 2D
Schritt 3:
Skalieren, so dass ai = am und bi = bm
Beispiel: Alignment im 2D
Zum korrekten Alignment im 2D bedarf es also
der Berechnung
eines Verschiebungsvektors,
eines Rotationswinkels,
und eines Skalierungsfaktors.
Hierzu ist das Wissen um zwei Paare
korrespondierender charakteristischer Bildund Modellpunkte notwendig.
Beispiel: Alignment im 2D
Die Berechnung des Alignments für diese Punktepaare ist damit
beendet.
Nun wird das ganze Modell anhand dieser Parameter
transformiert, und verglichen, wie gut das Alignment
tatsächlich war.
Es wird danach bewertet, wieviel Prozent der Kanten des
ausgerichteten Modells nun wirklich auf den Kanten des Bildes
liegen.
Ein erfolgreiches Alignment ist nämlich nicht automatisch die
Garantie für ein sinnvolles Match:
Beispiel: Alignment im 2D
Die Punktepaare könnten ungünstig gewählt worden sein:
Bild
Modell
Beispiel: Alignment im 2D
Die Punktepaare könnten ungünstig gewählt worden sein:
Aufwandsersparnis durch Alignment
Im Zweidimensionalen genügten zwei Punktpaare zur
Berechnung des Alignments. Wir werden später zeigen, dass
im Dreidimensionalen drei Punktpaare genügen.
Dies ist der Hauptgedanke hinter der Alignment-Idee!
Was gewinnen wir, wenn wir uns auf drei Punktpaare
beschränken können?
Aufwandsersparnis durch Alignment
Gegeben seien i charakteristische Bild-, und m charakteristische
Modellpunkte. Daraus ergeben sich p = i*m mögliche Paare von
Bild- und Modellpunkten.
Welche Paare führen zum besten Alignment?
Sei A im folgenden die Menge aller möglichen Paare:
A = { (c1, d1), ... , (ci, d1),
... ,
(c1, dm), ... , (ci, dm) }
Aufwandsersparnis durch Alignment
naiv:
jede mögliche Kombination dieser Punktpaare bildet ein
mögliches Match.
Aufwand: exponentiell
besser:
es genügen drei Punktpaare für ein mögliches Match.
Aufwand: kubisch
Der Alignment Algorithmus
Gegeben ist ein Bild I mit n Punkten.
ALIGNMENT
Für jedes Modell M (m ist die Anzahl der Modellpunkte)
Für jedes Tripel der Modellpunkte mache
Für jedes Tripel der Bildpunkte mache
Aufstellen der Hypothese, dass diese in
Korrespondenz sind und errechnen einer
Transformation basierend auf der
hypothetischen Korrespondenz.
Für jede der verbleienden m-3 Modellpunkte
mache
Anwenden der Transformation.
Finden einer Korrespondenz zwischen den
transformierten Modellpunkten und den
Bildpunkten.
Messen der Qualität der Transformation
(basierend auf der Anzahl der Modellpunkte,
die verkuppelt sind mit den Bildpunkten).
Im Folgenden: Alignment im Detail
Wie findet man charakteristische Bild- bzw. Modellpunkte?
Wie kann man diese Punkte klassifizieren, um
korrespondierende Bild- und Modellpunktpaare zu finden?
Wie berechnet man aus den drei Punktpaaren das Alignment,
also die Parameter für Rotation, Verschiebung und Skalierung?
Finden von charakteristischen
Bild- bzw. Modellpunkten
Finden von charakteristischen Punkten
Ziele:
Man versuche, möglichst Punkte mit unverwechselbaren
Eigenschaften zu finden, um die Zahl der Punktepaare gering
zu halten. Dies beschleunigt den Algorithmus.
Die Eigenschaften der Punkte sollten sich auch unter
Transformationen wie Rotationen möglichst wenig verändern.
Geeignete Punkte könnten z.B. Scheitelpunkte sein, oder
Eckpunkte, an denen viele Kanten aufeinandertreffen.
Finden von charakteristischen Punkten
Vorgehensweise:
(1) Aus einem Graustufenbild extrahiere man die Kanten
mittels eines geeigneten Filters.
(2) Man unterteile die Kanten an bestimmten Punkten in
einzelne Segmente.
(3) Zuletzt weise man jedem Segment einen oder zwei
charakteristische Punkte zu.
Finden von charakteristischen Punkten
1. Schritt: Kantenerkennung
Gegeben sei ein Graustufenbild. Daraus können mit geeigneten
Filtern die Kanten extrahiert werden.
Finden von charakteristischen Punkten
2. Schritt: Kantensegmentierung
Man unterteile die Kanten an den
Punkten, in denen sich die
Krümmung der Kante ändert, also
Linkskurven in Rechtskurven oder
Geraden übergehen, und
umgekehrt.
Im Bild sind diese
Krümmungsänderungen durch
schwarze Punkte gekennzeichnet.
Finden von charakteristischen Punkten
3. Schritt:
Definiere charakteristische
Punkte
Die Kanten sind nun in Links- und
Rechtskurven sowie gerade Stücke
eingeteilt.
Einer Kurve weise man ihren
Mittelpunkt als charakteristischen
Punkt zu, einem geraden Stück
seine beiden Endpunkte.
Klassifizierung von
charakteristischen Punkten
Klassifizierung von charakteristischen Punkten
Ziel:
Durch eine detaillierte Beschreibung eines Punktes kann die
Anzahl der möglichen Punktepaare von Bild und Modell
reduziert werden.
Die Anzahl an charakteristischen Punkten soll recht klein
bleiben, um den Algorithmus nicht zu verlangsamen.
Idee:
Beschreibung in mehreren Genauigkeitsstufen
Klassifizierung von charakteristischen Punkten
Man betrachte das Modell nach verschiedenen Glättungen,
z.B. durch einen Gauss-Filter.
Klassifizierung von charakteristischen Punkten
Nun teile man das Modell für jede Glättungsstufe in
Kantensegmente ein, wie zuvor beschrieben. Natürlich ergeben
sich jeweils andere Einteilungen.
Klassifizierung von charakteristischen Punkten
Nun teile man das Modell für jede Glättungsstufe in
Kantensegmente ein, wie zuvor beschrieben. Natürlich ergeben
sich jeweils andere Einteilungen.
Klassifizierung von charakteristischen Punkten
Nun teile man das Modell für jede Glättungsstufe in
Kantensegmente ein, wie zuvor beschrieben. Natürlich ergeben
sich jeweils andere Einteilungen.
Klassifizierung von charakteristischen Punkten
Man benutze die Kantensegmente der kaum gefilterten
Modelle, um die der stark gefilterten Modelle zu beschreiben.
Dies geschieht am einfachsten in einer Baumstruktur.
Klassifizierung von charakteristischen Punkten
Nun wird jedes Kantensegment noch nach bestimmten Kriterien
beschrieben:
Ist das Segment gerade (straight) oder gekrümmt (curved)?
Ist ein gekrümmtes Segment geöffnet (open) oder geschlossen
(closed)?
Entspricht das Segment einem einzelnen Kantensegment einer
schwächeren Filterung (single), oder gleich mehreren
(multiple)?
Klassifizierung von charakteristischen Punkten
Klassifizierung von charakteristischen Punkten
Da bei starker Filterung nur wenige Punkte übrigbleiben,
wählen wir diese aus, um das Alignment durchzuführen. Die
Punkte sind ja durch sehr viele Merkmale charakterisiert!
Gegebenenfalls kann es jedoch von Vorteil sein, Punkte eines
schwach gefilterten Modells zu verwenden.
Mehrstufige Alignments können bessere Resultate liefern,
obwohl der Aufwand kaum größer wird.
Berechnung des Alignments
Problem: Verzerrungen
Modell
Bild
Perspektivische
Projektion
Dem Betrachter nahe Objektteile wirken größer als gleichgroße,
weiter entfernte Objektteile!
Problem: Verzerrungen
Modell
Senkrechte
Projektion
Bild
Das Objekt sei so weit vom Betrachter entfernt, daß
Verzerrungen nicht wahrnehmbar seien. Nun wirkt lediglich das
Modell im Ganzen kleiner! Das kann leicht durch eine
Skalierung modelliert werden.
Berechnung des Alignments
Da wir die perspektivische Projektion durch senkrechte
Projektion und einen Skalierungsfaktor approximieren, sind
Distanzen, die sich (z.B. bei Drehungen) in z-Richtung ändern,
nicht interessant.
Wir werden sehen, dass drei Paare von korrespondierenden
Bild- und Modellpunkten ausreichen, um das Alignment zu
berechnen.
Wir berechnen also den Verschiebungsvektor, die
Rotationswinkel und den Skalierungsfaktor, um die drei Modellauf die drei korrespondierenden Bildpunkte auszurichten.
Berechnung des Alignments
Das 2D- Bild befindet sich in der x-y-Ebene; das Modell darüber
ist zwar ebenso zweidimensional, kann aber im Raum bewegt
werden, hat also dreidimensionale Ausdehnung.
Berechnung des Alignments
Verschiebung der Modellpunkte, so dass die x- und yKomponenten von am und ai gleich sind. Der Einfachheit halber
wählen wir die von ai von Anfang an gleich Null.
Berechnung des Alignments
Rotation um z-Achse, so dass die Kanten aibi ambm parallel
übereinanderliegen.
Berechnung des Alignments
Die Achsen des Koordinatensystems werden o.B.d.A so
gewählt, dass die y-Komponente von bi und bm gleich Null ist.
Berechnung des Alignments
Rotation um die y-Achse, so dass bi und bm dieselben x- und y
Koordinaten haben. Obwohl sich die z-Komponente von bm
auch ändert, interessiert sie uns nicht.
Berechnung des Alignments
Rotation um die x-Achse, so dass ci und cm dieselben x- und y
Koordinaten haben. Obwohl sich die z-Komponente von cm
auch ändert, interessiert sie uns nicht.
2. geometrisches Hashing:
Das geometrische Hashing oder allgemeiner die
Indexierungs Methode konstruiert während der Zeit des
Kompilierens eine Tabelle mit verschlüsselt
Modellinformationen.
Zur Laufzeit, werden die Hypothesen von den
Verbindungen zwischen einem Objekt und dem Modell
mittels der Tabelle nachgeprüft und dann wird die
gefundene Lösung bewertet.
Algorithmus
für das geometrische Hashing
Preprocessing
Die Hashtabelle H enthält “Kollisionslisten“
Für jedes Modell A:
1. Extrahiere die Features von A, seien dies A =
(A1, … ,An).
2. Für jede Basis a von Features in A:
Für alle übrigen Features Ai ist nicht Element von
a, i = N:
(a) Stelle das Feature Ai in Koordinaten c bezüglich des durch a defnierten
Koordinatensystems
dar.
(b) Quantisiere c in einen diskreten Wert c‘.
Trage die Information (A,a) in die Hashzelle
H(c‘) ein.
Die Laufzeit des Preprocessings ist
O(mn d+1)
für m Modelle mit je n Features, wobei jede
Basis aus d Features besteht.
Erkennungsphase des geomethrischen Hashing:
1. Extrahiere die Features von B, seien dies B =
(B1,…,Bn).
2. Wähle eine Basis b von Features in B:
Für alle übrigen Features Bi ist nicht Element
von b, i=N:
(a)Stelle das Feature Bi in Koordinaten c bezüglich des durch b defnierten
Koordinatensystems dar.
(b) Quantisiere c in einen diskreten Wert c’.
Jeder Eintrag (A, a) ist Element von H(c’) erhält
eine Stimme.
(c) Zähle die Stimmen aus für alle Paare von
Modellen und Basen (Histogramm). Paare
mit genügend vielen Stimmen entsprechen
potentiellen Treffern.
(d) Für jeden potentiellen Treffer (A, b):
Bestimme die optimale Transformation T
für die gematchten Features von A und B
und bewerte die gefundene Lösung.
3. Falls keine gute Lösung gefunden wurde,
wiederhole Schritt 2.
Die Laufzeit von Schritt 2 der Erkennungsphase ist
O(hn d+1)
wobei h die durchschnittliche Füllungsdichte der betrachteten
Hashzellen ist.
In günstigen Fällen ist
h = O(1),
jedoch kann schlimmstenfalls
h = mnd+1
sein.
Hinzu kommt noch die Laufzeit für die Bearbeitung der gefundenen
Treffer.