Vorlesung 05 - Monokulare Tiefenrekonstruktion¶
Datum: 22.04.2026
Ziele¶
- Deep Learning Modelle zur monokularen Tiefenrekonstruktion verstehen
- Time-of-flight Imaging verstehen
- Was gibt es für 3D Datenstrukturen?
- Wie funktioniert der ICP Algorithmus?
Drehbuch¶
| Inhalt | Dauer in min | Unterlagen |
|---|---|---|
| Begrüßung und Check-In Lernziele | 5 | miro |
| Monokulare Tiefenrekonstruktion mit Deep Learning | 25 | 3DCV-10-MonoDL.pdf |
| Update Lernziele | 5 | miro |
| Time-of-flight imaging | 15 | 3DCV-11-TimeOfFlight.pdf |
| Update Lernziele | 5 | miro |
| 3D Datenstrukturen | 30 | 3DCV-12-Volume.pdf (bis Folie 22) |
Links¶
- Meshlab
- Stanford 3D Scanning Repository
- Stanford Bunny History
- Wikipedia: Iterative Closest Point
- Wikipedia: Octree
- Wikipedia: kd-tree
Protokoll¶
Es gibt eine Aufzeichnung der Vorlesung namens "3DCV-05-Mono.mp4", die in diesem Ordner verfügbar ist.
Hier die von Notion erstellte Zusammenfassung der Vorlesung:
Ankündigungen und Neuigkeiten¶
- OpenAI hat GPT-Image 2.0 veröffentlicht, das hochrealistische Bilder generieren kann, die kaum von Screenshots zu unterscheiden sind
- Die Bildqualität ist sehr beeindruckend, mit korrekter Perspektive und Fluchtpunktberechnung
- Aufnahme der Vorlesung läuft mit Zoom und Notion-Transkription
Wiederholung: Homogene Koordinaten¶
- Homogene Koordinaten unterscheiden zwischen Punkten (letzte Koordinate = 1) und Vektoren (letzte Koordinate = 0)
- Rechenregeln sind intuitiv: Punkt + Vektor = Punkt, Punkt - Punkt = Vektor, Vektor + Vektor = Vektor
- Diese Konvention wird in der Computergrafik verwendet, um Punkte und Bewegungen zu unterscheiden
Deep Learning für Tiefenschätzung¶
- Deep Learning ermöglicht monokulare Tiefenschätzung aus einzelnen Bildern durch Vorwissen über die Welt
- Supervised Learning benötigt RGB+Depth Datensätze mit Millionen von Bildern
- Wichtige Datensätze: NYU (400.000 Bilder), KITTI (Karlsruhe Straßenbilder)
- Data Augmentation erweitert Datensätze durch Transformationen und synthetische Daten aus Game Engines
Entwicklung der Modelle¶
- Erste Ansätze 2014 mit NYU und KITTI Datensätzen zeigten grundsätzliche Machbarkeit
- MiDaS ermöglichte Zero-Shot Cross-Dataset Transfer, benötigte aber 6 GPU-Monate Training
- Depth Anything (2024) von ByteDance/TikTok zeigte noch bessere Ergebnisse
- Depth Anything nutzte 1,5 Millionen gelabelte Bilder plus ungelabelte Daten mit Teacher-Modell
- Funktioniert sehr gut auch für unrealistische Szenen, KI-generierte Bilder und Comics
- Bereits Version 3 verfügbar, die aus mehreren Bildern oder Videos 3D-Modelle erstellen kann
Time-of-Flight (ToF) Kameras¶
Grundprinzip und Messtechnik¶
- ToF-Kameras messen die Laufzeit von moduliertem Infrarotlicht zur Tiefenbestimmung
- Moduliertes Signal (z.B. Sinuswelle mit 20 MHz) wird ausgesendet und die Phasenverschiebung gemessen
- Phasenverschiebung ist proportional zur Distanz
- Vier Messpunkte pro Periode ermöglichen Berechnung von Phase, Amplitude und Intensität
- Integration Time liegt zwischen 50 und 3000 Mikrosekunden
Hardware und Technologie¶
- Spezieller Chip kombiniert Pixelarray, Analog-Digital-Converter und Temperaturkompensation
- Azure Kinect Chip: 5,4 x 9,8 mm Größe
- Microsoft hat Produktion eingestellt, wird aber noch von Firmen wie SICK für industrielle Anwendungen genutzt
Herausforderungen und Probleme¶
- Integrationszeit-Optimierung: Kurze Zeit für nahe Objekte, lange Zeit für ferne Objekte erforderlich
- Modulationsverzerrung: Schwierig, perfekte Sinuswelle zu erzeugen, führt zu systematischen Fehlern abhängig von der Tiefe
- Reflexionsunterschiede: Schwarze und weiße Flächen liefern unterschiedliche Messwerte
- Geringe Auflösung: Flying Pixels an Kanten durch gemittelte Tiefeninformationen innerhalb eines Pixels
- Multipath-Interferenz: Licht reflektiert über mehrere Wege, nicht nur direkt
- Azure Kinect nutzt drei Frequenzen zur Fehlerkorrektur
Lösungsansätze¶
- Light Guide für Hardware-basierte Signalmessung
- Mathematische Korrektur durch Messung und Modellierung
- Kalibrierung über den gesamten Messbereich
Anwendungen¶
- Body und Gesture Tracking (Xbox Kinect)
- Pflegeroboter und medizinische Anwendungen
- Automotive (Innenraumsensorik)
- Hand-Tracking im kleineren Bereich
- Funktioniert besser in Innenräumen als draußen (Sonnenlicht-Interferenz)
3D-Datenstrukturen¶
Verschiedene Repräsentationsformen¶
- Depth Maps/Range Images: Kompakt, aber abhängig vom Viewpoint, benötigt Kameramatrix für 3D-Rekonstruktion
- Punktwolken: 3D-Punkte mit optionalen Farbwerten, verlieren Nachbarschaftsinformationen
- Meshes: Verbundene Punkte als Dreiecke, ideal für Rendering mit Beleuchtungsrechnung
- Voxels: 3D-Pixel für volumetrische Darstellung, gut für Nebel und weiche Übergänge
- Signed Distance Functions (SDF): Mathematische Funktionen, die Oberfläche bei Wert 0 beschreiben
- Neural Radiance Fields (NERF): Neuronales Netz als Repräsentation, abhängig von Blickrichtung
- 3D Gaussian Splatting: 3D-Gaussverteilungen mit Spherical Harmonics, schneller als NERF
ICP-Algorithmus (Iterative Closest Point)¶
- Ziel: Registrierung von zwei Punktwolken durch Finden der optimalen rigiden Transformation
- Drei Punktpaare reichen für eindeutige Lösung (Horn, 1980er)
- Kernidee: Punkte, die am nächsten beieinander liegen, gehören zusammen
- Ablauf: Ausgangslage → nächste Punkte finden → Transformation berechnen → iterativ wiederholen
- Herausforderung: Effiziente Nearest-Neighbor-Suche erfordert 1 Million Distanzmessungen bei 1000x1000 Punkten
- Lösung: KD-Bäume reduzieren Komplexität auf log(n)
- Zahlreiche Varianten je nach Optimierungsziel (Geschwindigkeit, Stabilität, Outlier-Toleranz)
Ausblick¶
- Professor wird beim nächsten Mal MeshLab-Demo für ICP vorbereiten
- Nächste Vorlesung: KD-Bäume und Octrees für effiziente räumliche Datenstrukturen
- Nächster Termin: 29.4.2026
Errata¶
- Auf der Folie 11 zu Time-of-Flight-Kameras gab es einen Fehler in der Formel für die Phasenverschiebung. Die korrekte Formel lautet:
\(\text{Phase } \varphi = \arctan\!\left(\frac{S_3 - S_1}{S_2 - S_0}\right)\)
\(\text{Distance } D = \frac{c \varphi}{4\pi\omega}\)
\(\text{Amplitude } A = \frac{\sqrt{(S_3 - S_1)^2 + (S_2 - S_0)^2}}{2}\)
\(\text{Intensity } I = \frac{S_0 + S_1 + S_2 + S_3}{4}\)