Hough Transformation, Umgang mit noise
Wähle geeignete Diskretisierung (Bins)(beispielsweise p, worüber man iteriert) im Akkumulator− Zu grob: Einzelne Bins erhalten zu viele Votes von Kantenpunkten die im Bildraumnicht zum gleichenModell gehören− Zu fein: Bins bekommen zu wenig Votes falls Kantenpunkte einer Linie im Bildraumnicht kollinear sind Kantenrichtung und Kantenstärke mit einbeziehen
Hough transformation Detektion von Ellipsen
[(x-x0)cosΘ+(y-y0sinΘ)]2/a2+[(x-x0)sinΘ-(y-y0)cosΘ]2/b2=1 Speicherbedarf und Rechenaufwand wegen des 5D Problemraums enorm hoch. Lösung: Aufteilung der fünf Parameter, z.B. zuerst das Zentrum (x0, y0) bestimmen und in einer zweiten Phase die restlichen drei Parameter (Radii a,b und Ellipsenrotation θ) bestimmen.
Hough Transformation beliebige parametrische Kurven
Ziel: Detektion einer beliebigen Kurve g(x, y, A) = 0 mit Parametervektor A = (a1, a2, . . . , am) algorithmus: seite 207 Zeitkomplexität: O(#Kantenpunkte · Nm−1) falls |Ak| = N; Reduktion auf O(#Kantenpunkte · Nm−2) bei Verwendung von Richtungsinformation
Probabilistic Hough Transform
• Verwende nur S ≪ U zufällig ausgewählte Kantenpunkte (S ~ 15%bis 25%)• Intuition: Zufällig ausgewählte Kantenpunkte enthalten i.A. weniger Noise und weniger Modelle die nur duch wenige Kantepunkte repräsentiert sind.
Randomized Hough Tranform
Annahme: Die Kontur lässt sich durch n Punkte eindeutig festlegen. Algorithmus:• Verschiedene n-Tupel von Kantenpunkten auf Zufallsbasis auswählen. Jedes n-Tupel legt ein Objekt der gesuchten Form eindeutig fest. Die entsprechende einzige Zelle im Akkumulatorinkrementieren.• Kombination mit Probabilistic Hough Transform möglich.
Konturdetektion mit dynamischer Programmierung
Gesamtlösung: Die optimale Kontur von 1. zur letzten Zeile hat die Gütec=0,1,...,N-1max CM-1,cWir müssen nur eine Gütematrix C, Größe MxN, vollständig aufbauen. algorithmus:die erste zeile auf ihre kantenstärke s(r,c) setzendurch die zeilen und spalten gehen, iterieren{C[r][c]=max(j=-1,0,1) {C[r-1][c+j]+s(r,c)} // das höchste aus der letzten zeile links und rechts benachbart, + die kantenstärkej*=arg max{j=-1,0,1) {C[r-1][c+j]+s(r,c)}zeiger[r][c] = (r-1,c+j); der zeiger von rc zeigt von der aktuellen reihe und spalte auf den benachbarten wert in der letzten zeile mit dem höchsten cwertdann maximum in der letzten zeile suchen und den zeiger zurückverfolgen
Konturdetektion mit dynamischer Programmierung:Detektion geschlossener Konturen
Input: grauwertbild oder bild der kantenstärke f(x,y) und Punkt (x0,y0) innerhalb der Kontur 1. Polar transformationfür p und l jeweils mit for durchiterieren:x=x0+ l cospy=y0+l sinpP[p][l]=f(x,y)2. Dynamische Programmierung in P mit der optimalen Kontur im Polarraum als ergebnis3. inverse Polar-transformation der optimalen Kontur vom polarraum zurück ins bild
Konturdetektion mit dynamischer Programmierung
21
Erweiterung: geschlossene Konturen mit Initialisierung• Annahme: Initiale Positionierung der Kontur vorhanden• Vorgehen: um die initiale Kontur herum einen Suchbereich konstruieren und die DP darauf beschränken• Anwendung bei beliebigen (nicht nur star-shaped) Konturen
Seam carving
Seam: Optimaler Pfad durch ein Bild mit 8er Nachbarschaft (von oben nach unten oder von links nach rechts)Seam carving Energiefunktion definiert die Wichtigkeit einzelner Pixel, e.g. quasi dynamische programmierung nur dass man die kleinsten nicht die größten sucht
Least Squares, Vorgehen:
1. Definiere geeignete Fehlerfuntkion 2. Berechne Ableitung dieser Funktion in Richtung der unbekannten Parameter3. Setze Ableitung gleich 0 und löse das Gleichungssystem für die unbekannten Parameter
Least Squares: Bestimmung von Geradengleichungen
Matrixgleichung aufm Zettel.
Bildentstehung, Begriffe, field of view berechnung
f = focal length (Brennweite)c = center of the cameravirutal image = Projektion des Bildes vor das Optische Zentrum;Sensorgröße d = die höhe des brennschirms?Brennweite (focal length) f = die weite von brennschirm zu linseField of view: φ = tan-1((d/2)/f) Da d konstant:→ Lange (große) Brennweite f => kleines Field of view φ→ Kurze (kleine) Brennweite f => großes Field of view φ
Linsenbedingte Artefakte bei Bildprojektion
Brechung des Lichtes mittels (nicht perfekten) Linsen kann zu fehlerhaften Artefakten führen:• Radiale Verzerrung • Parallele Linien sind nicht mehr parallel • Chromatische Aberration • Lichtwellen verschiedener Länge (Farbe) fokussieren auf verschiedenen Ebenen (unterschiedlicheBrechung) • Vignettierung • Durch Ungenauigkeiten bei Linsen (-arrays) kommt nicht alles reflektierte Licht eines 3D Weltpunktes auf dem Sensor an (insb. bei Pixeln am Rand des Sensors) • Mögliche Lösungen: • Benutze mehrere Linsen • Verwende algorithmische Lösungen
Bildentstehung Objektive mit vielen Linsen
• Da die “Realität nicht perfekt” simulieren Objektive mit mehreren Linsen das Pinhole Kamera Modell• Daher können wir im Folgenden die Mathematik für Pinhole Kameras annehmen• Daher:• Keine Artefakte• Kein “out of focus”
Modellierung der Kameraprojektion: Das Kamerakoordinatensystem
Pinhole Kamera Modell als Approximation• Center Of Projection (COP) (linse) ist im Zentrum(origin) der Projektionsebene (brennebene)(PP)• Wir verwenden das Standard-(x,y)-Koordinatensystem(right handed)• Positioniere PP vor COP (vereinfacht das Modell)• Kamera “schaut” in negative z Richtung• Weltpunkt (x,y,z) schneidet PPin (x’,y’,-d) mit d=Brennweite• Berechne Projektion auf (Schnitt mit) PP von (x,y,z) zu COP:(x, y, z) → (−d(x/z),-d (y/z), -d) Projektion auf PP• Verwerfe z-Komponente(x, y) → (−d(x/z),-d (y/z)) • Ist dies eine lineare Transformation?• Nein! Division durch ein nichtkonstantes z ist nicht linear!• z verändert sich mit jedem Punkt!
Homogene Koordinaten
transformation zu (x',y') ist nicht lineartrick: füge eine dimension hinzu(x,y) -> [x, y, 1] <- senkrechtund (x,y,z) -> [x,y,z,1] < senkrecht Rücktransformation (2D): [x,y,w] <senkrecht -> ((x/w), y/w))
Perspektivische Projektion
• In Homogenen Koordinaten ist die perspektivische Projektion eine lineare Transformation! 1 0 0 1 * x = x0 1 0 0 * y =y -> (f(x/z),f(y/z))-> u,v0 0 1/f 0 * z = z/f 1 <wichtig die gehört zum vektor
Perspektivische Projektion, projektionsmatrix
i.d.r wird benutzt 1 0 0 0; 01 0 0 ; 0 0 1/f 0 * x y z 1 = x y z/f => punkt -> x/z y/z falls matrix unbekannt, matrix mit variablen aufstellen, die gleichungen aufstellen für alle punkte nach bildpunkten, gleichungssystem auflösen
Two-view stereo vision: Achsenparallele Stereosysteme:
Distance p (tiefenwert )von mitte der kamera zu weltpunkt in der realität, f: ( die höhe der Bildpunkte ) (entfernung von bild zu kamera z achse) B :die entfernung der beiden Bildpunkte u1, u2: die entfernung von bild zur kamer auf x achse distance p = f * B/(u1-u2) disparity = u1-u2
Homographie:
man hat n punkt paar, ein Punkt in Bild 1 ein Punkt in Bild 2. w*p' = H*p oder seite 632