Upload
mfg-innovationsagentur
View
1.059
Download
2
Embed Size (px)
DESCRIPTION
Michael Kuzmin und Denis Smirnov Abschlusspräsentation Jahrgang 2010 Karl-Steinbuch-Stipendium MFG Stiftung Baden-Württemberg
Citation preview
3D Informationen aus 2D Bildern extrahieren
Michael Kuzmin | Denis Smirnov
Einführende Worte
Überblick I
Modelaufbau Kantendetektion
Canny-Algorithmus Hough-Transformation Tracking Points of Interest
Schnittpunkte von Geraden
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
03/29
Überblick II
Modelaufbau Brauchbare Bilder erstellen
Objektdetektion Objekt erkennen und extrahieren
Objektübereinstimmung (Template-Matching) Objekt in verschiedenen Bildern finden
Epipolargeometrie Rektifizieren der Bilder
3D Informationen Tiefeninformationen des Objektes ermitteln
Probleme/FazitModelaufbau | Objektdetektion | Objektübereinstimmung | Epipolargeometrie | 3D Informationen | Probleme
Modelaufbau
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
04/29
Modelaufbau
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
05/29
Kantendetektion
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
06/29
Kantendetektion
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
07/29
Sobel Laplace Prewitt Canny
Canny-Algorithmus
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
08/29
Sehr Robust
Verwendet den Sobel-Operator
Berechnet den Gradientenbetrag und die Gradientenrichtung des Bildes
Optimalität für folgende Kriterien:
Erkennung: alle tatsächlichen Kanten sollen gefunden werden
Lokalisierung: Abstand zwischen tatsächlicher und erkannter Kanten soll möglichst klein sein
Ansprechverhalten: keine Mehrfacherkennung von gleichen Kanten
Canny-Algorithmus
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
09/29
1. Glättung
2. Kantendetektion
3. Unterdrücken von Nicht-Maxima
4. Hysterese
Gauß’scher Glättungsfilter
• Rauschen Minimieren
Canny-Algorithmus
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
10/29
1. Glättung
2. Kantendetektion
3. Unterdrücken von Nicht-Maxima
4. Hysterese
Sobel-Operator in X-Richtung
Sobel-Operator in Y-Richtung
( )
Gradientenrichtung berechnen:
0°, 45°, 90°, 135°
Euklidischer Betrag:
Canny-Algorithmus
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
11/29
1. Glättung
2. Kantendetektion
3. Unterdrücken von Nicht-Maxima
4. Hysterese
Canny-Algorithmus
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
12/29
1. Glättung
2. Kantendetektion
3. Unterdrücken von Nicht-Maxima
4. Hysterese
non-maximum suppression
• ausdünnen der Kanten
• vergleich der Richtung von Nachbarpunkten
• Pixel entlang der Gerade übernehmen, alle anderen Pixel auf Grauwert 0 setzen
Canny-Algorithmus
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
13/29
1. Glättung
2. Kantendetektion
3. Unterdrücken von Nicht-Maxima
4. Hysterese
Ab welcher Kantenstärke wird ein Pixel als Kante identifiziert?
Hysterese:
• Zwei Schwellenwerte T1,T2 mit T1 ≤ T2
• Unterdrückt „schwache“ bzw. falsche Kanten
• „Zerreißt“ weniger Kanten als einfache Schwellenwertverfahren
Hough-Transformation
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
14/29
Voraussetzung: Binäres Gradientenbild
Erkennung von geometrischen Objekten Detektiert kollineare Punkte Erkennt Kreise und Geraden Allgemein: Erkennt Objekte die sich in
geschlossener parametrisierbarer Form darstellen lassen
Erschaffen eines Akkumulatorraums Dualraum (d,Ɵ)-Raum
Hough-Transformation
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
15/29
Hough-Transformation
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
16/29
Geradengleichung: y = m * x + t
Aufgelöst nach Y-Achsenabschnitt: t = -m * x + y
P(x|y) Q(m|t)
Hough-Transformation
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
17/29
Probleme bei Darstellung von vertikalen-Linien da Steigung ± ∞
Besser: Hessesche Normalform
Ortsvektor
Normalvektor
Abstand vom Ursprung
Statt (x,y)-Koordinate des Ortsvektors genügt der Winkel Ɵ:
Hough-Transformation
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
18/29
Codierung in den Hough-Raum: (d,Ɵ)-Raum
Jede Gerade kann durch einen Punkt im Hough-Raum dargestellt werden
Hessesche Normalform: Nach d aufgelöst:
Gerade-zu-Punkt-Transformation
Hough-Transformation
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
19/29
Akkululatorraum „säubern“ Cluster bilden Störeinflüsse beseitigen
Akkululatorraum analysieren Maximas auslesen Schwellenwerte überprüfen
Rücktransformation nach
Hough-Transformation
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
20/29
Geradenbüschel durch P(x|y) für alle Winkel zwischen 0 und π :
Hough-Transformation
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
21/29
Das selbe für mehrere Punkte:
Hough-Transformation
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
22/29
Mehrere Punkte:
Hough-Transformation
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
23/29
Hough-Transformation
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
24/29
Stellt eine Art „Brute-Force“-Algorithmus dar Eignet sich nur für das Vorhandensein von
„wenigen“ Geraden
Störanfällig bei falscher Quantisierung:
Tracking
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
25/29
Bestimmt Anfangs- und Endpunkt einer Strecke Über morphologische Filter Über Schablonen
Points of Interest
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
26/29
Punkte mit besonders markanten Merkmalen Eckpunkte Schnittpunkte von Geraden Veränderung der Intensität der Farbwerte
Kantendetektoren Moravec-Interest Operator
berechnet die mittleren quadratischen Gradientensummen
Harris-Kanten-Detektor Vollständig rotationsinvariant
Naives Verfahren Schnittpunkte von Geraden finden
Points of Interest
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
27/29
Markante Punkte über Schnittpunkte von Geraden Steigung berechnen:
Auflösen nach y:
Gleichsetzen:
Nach x auflösen:
x in y1 oder y2 einsetzen
Points of Interest
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
28/29
Zusammenfassung Part1
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
29/29
Modelaufbau
Zwei Bilder zur 3D Rekonstruktion nötig
Kamerapositionen leicht versetzt oder leicht um das Objekt rotiert
Je weiter ein Objekt entfernt ist, desto weniger Informationen können erschlossen werden
Optionale Kalibrierung der Bilder
Modelaufbau | Objektdetektion | Objektübereinstimmung | Epipolargeometrie | 3D Informationen | Probleme
Modelaufbau
Leicht versetzte Kamerapositionen
Modelaufbau | Objektdetektion | Objektübereinstimmung | Epipolargeometrie | 3D Informationen | Probleme
C1 C2
Modelaufbau
Leicht rotierte Kamerapositionen
Modelaufbau | Objektdetektion | Objektübereinstimmung | Epipolargeometrie | 3D Informationen | Probleme
C1C2
Modelaufbau
Nahaufnahmen des Objekts
Modelaufbau | Objektdetektion | Objektübereinstimmung | Epipolargeometrie | 3D Informationen | Probleme
Objektdetektion
Welcher Farbraum ist am besten geeignet? RGB, Grauwert, HSV, Lab, …
Wie detektiert man das Objekt in den Bildern? Nahaufnahmen Markierungen Kantendetektion GaussianBGModel
Modelaufbau | Objektdetektion | Objektübereinstimmung | Epipolargeometrie | 3D Informationen | Probleme
Objektdetektion
Modelaufbau | Objektdetektion | Objektübereinstimmung | Epipolargeometrie | 3D Informationen | Probleme
RGB
Objektdetektion
Modelaufbau | Objektdetektion | Objektübereinstimmung | Epipolargeometrie | 3D Informationen | Probleme
Lab
Grauwert
Objektdetektion
Modelaufbau | Objektdetektion | Objektübereinstimmung | Epipolargeometrie | 3D Informationen | Probleme
GaussianBGModel
Markierungen notwendig
Objektdetektion
Kantendetektion des Objekts Canny, Laplace, …
Problem der Parametrisierung von Algorithmen
Modelaufbau | Objektdetektion | Objektübereinstimmung | Epipolargeometrie | 3D Informationen | Probleme
Objektübereinstimmung
Points Of Interest in beiden Bildern suchen Mindestens 8 Stück notwendig!
Template-Matching der POIs auf beiden Bildern Nicht immer richtig!
Wie kann man sicher gehen, dass die gefundenen POIs auf beiden Bildern die selben sind? Nur manuell
Modelaufbau | Objektdetektion | Objektübereinstimmung | Epipolargeometrie | 3D Informationen | Probleme
Objektübereinstimmung
Modelaufbau | Objektdetektion | Objektübereinstimmung | Epipolargeometrie | 3D Informationen | Probleme
Braucht man die Korrespondenzpunkte überhaupt?
Epipolargeometrie
Berechnung der Fundamentalmatrix (3x3 Matrix) anhand der Korrespondenzpunkte
Mit Hilfe von Fundamentalmatrix die Epipolarlinien berechnen oder die Bilder rektifizieren
Was ist Epipolargeometrie und wozu werden Epipolarlinien benötigt?
Modelaufbau | Objektdetektion | Objektübereinstimmung | Epipolargeometrie | 3D Informationen | Probleme
Quelle: Wikipedia
Epipolargeometrie
Modelaufbau | Objektdetektion | Objektübereinstimmung | Epipolargeometrie | 3D Informationen | Probleme
Quelle: Wikipedia
Epipolargeometrie
Modelaufbau | Objektdetektion | Objektübereinstimmung | Epipolargeometrie | 3D Informationen | Probleme
Rektifiziertes Bild
Epipolargeometrie
Modelaufbau | Objektdetektion | Objektübereinstimmung | Epipolargeometrie | 3D Informationen | Probleme
Epipolarlinien in rektifizierten Bildern
3D Informationen
Erstellung des 3D Objektes Texturierung des 3D Objektes
Modelaufbau | Objektdetektion | Objektübereinstimmung | Epipolargeometrie | 3D Informationen | Probleme
Originalbild Tiefenbild
3D Informationen
Pro Textur das Eingangsbild entzerren Mapping-Qualität abhängig vom generierten
Objekt
Modelaufbau | Objektdetektion | Objektübereinstimmung | Epipolargeometrie | 3D Informationen | Probleme
Probleme
Viele Parameter erschweren die Automatisierung
Fehlerhaftes Template-Matching
Objektdetektion zu ungenau
Modelaufbau | Objektdetektion | Objektübereinstimmung | Epipolargeometrie | 3D Informationen | Probleme
Zusammenfassung Part2
Überblick | Modelaufbau | Kantendetektion | Hough-Transformation | Tracking | Points of Interest
29/29
Ergebnisse sind brauchbar für kleine Objekte Schwer realisierbar für Gebäude
Hoher Aufwand Rechenaufwand der Algorithmen Große Bildmengen Stark abhängig von Belichtung und Qualität der
Bilddaten
Fazit
Tiefeninformationen können berechnet werden
Großer Funktionsumfang von OpenCV
~500 Zeilen Code
Interessantes Themengebiet
Modelaufbau | Objektdetektion | Objektübereinstimmung | Epipolargeometrie | 3D Informationen | Probleme
Bessere Verfahren
29/29
Objektrekonstruktion mittels Videodaten Benötigt wird eine Stereoskopische Videokamera
oder andere Verfahren Andere Verfahren:
3D Rekonstruktion mittels Microsofts Kinect Besser: Asus Xtion
Warum Kinect/Asus Xtion Liefert von Haus aus Tiefeninformationen Videodaten ->Streaming
Sehr viele Bilder helfen alle Stellen des Objekts zu „beleuchten“
Klein und Handlich Ermöglicht es mit einem Laptop bequem ein Haus
von allen Seiten zu filmen Viel bekanntes wissen aus Microsofterfahrung
kann wieder verwendet werden Liefert schneller und bessere Ergebnisse als
einzelne Fotoaufnahmen
Microsoft Kinect Veröffentlichung: November 2010 Verfahren zur Berechnung des Tiefenbildes:
Light Coding Einschränkungen: Sonne und reflektierende
Oberflächen Distanz: 60cm bis 10m IR, RGB & Depth Bilder
OpenNI Framework für die Kinect Zugriff auf Joint-Informationen Einfache Gestenerkennung, vordefinierter
Gesten