Teamprojekt "The Calibration Game" (Modul INF-STD-10), WS 2011/2012
Marcus Magnor, Kai Ruhl
Beschreibung:
Photo Tourism von
Microsoft Research baut aus unzähligen Photos einer Szene eine
3D-Punktwolke zusammen und gibt an, wo die Kameras standen
(extrinsische Parameter) und wie sie eingestellt waren (intrinsische
Parameter). Letzteres, auch bekannt als "Kalibrierung", wird z.B.
durch Bundler
durchgeführt.
In diesem Teamprojekt soll Bundler um eine intuitive 3D-GUI
erweitert werden, und schrittweise mit Funktionalitäten für
größere Flexibilität ausgestattet werden. Dazu ein
Überblick über einen typischen Bundler-Run:
- Die intrinsischen Parameter werden über eine Kameraliste
geschätzt.
- In allen Bildern werden 2D-Featurepunkte (z.B. SIFT)
identifiziert;
damit
werden Bildteile einander zugeordnet.
- Eine Grobkalibrierung ordnet den Kameras grobe Positionen im Raum
zu und erstellt aus den Featurepunkten 3D-Punkte.
- Eine Feinkalibrierung optimiert (z.B. durch sparse bundle
adjustment) Kameraparameter und 3D-Punkte iterativ.
- Ein Outputfile enthält Kameraparameter und 3D-Punkte.
Das Teamprojekt enthält, je nach Anzahl Teilnehmer, eine
variable Anzahl von Zielen aus der folgenden Liste:
- Eine OpenGL GUI zeigt die Kameras, 3D-Punkte, und Bilder an, und
zeigt die Zuordnung von Bildern und 3D-Punkten.
- User input erlaubt einer Spielfigur das Laufen auf den Bildern
(als Landscape) und das Entkommen in andere Bilder durch Warptunnel in
den 3D-Punkten.
- User input erlaubt eine manuelle Adjustierung der
2D-Featurepunkte in den Bildern; alternativ auch die Definition neuer
Korrespondenzen. Die Feinkalibrierung wird mit den verfeinerten
Korrespondenzen neu gestartet.
- User input erlaubt das Zuordnen von 2D-Featurerpunkten in
Tiefenbildern zu RGB-Bildern.
Dies erlaubt den Einsatz von Tiefenkameras,
wie der Microsoft Kinect, und deren automatischer Kalibrierung.
- Der 2D-Featureschritt wird beibehalten, die Grobkalibrierung wird
herausgelöst und z.B. in Python mit CUDA re-implementiert.
- Die Ansteuerung der Feinkalibrierung wird herausgelöst und
z.B. in Python mit CUDA re-implementiert.
Das Teamprojekt umfasst ca. 180 Stunden und 5 Leistungspunkte pro
Person (variiert je nach Studienordnung [docs]).
Das Gesamtziel hängt damit von der Anzahl Teilnehmender ab.
Inhalt:
Neben den grundlegenden Inhalten
(Modulhandbuch
Bachelorstudiengang Informatik
) werden
folgende Inhalte vermittelt:
- Softwareentwicklungsaspekte
- Berücksichtigung von Usability-Aspekten in der
Softwareentwicklung
- Sinnvolle Integration von externen Softwarebibliotheken
- Technische Aspekte
- Programmierung in
C++ und in
Python
- Verwendung von 3D-Grafik (z.B.
OpenGL,
SDL,
Ogre3d)
- Verwendung von Bildverarbeitungsbibliotheken (z.B.:
OpenCV)
- Zielplattform ist Linux, aber auch Windows ist möglich
(Entwicklung von Cross-Plattform Code ist erstrebenswert)
- Organisatorische Aspekte
- Gemeinsame Arbeit in einer Gruppe von ca. 5-10 Studierenden
- Wechselnde Projektleitende
Es wird Wert gelegt auf eine gute Teamkultur. Alle Studenten
sollen an einem Ort zusammenarbeiten und sich abstimmen, um ein
Forschungs- oder Industrieumfeld zu simulieren.
Anforderungen:
- Software Engineering 1 (INF-SSE-01)
- Programmieren I (INF-PRS-02)
- Programmieren II (INF-PRS-03)
- Softwareentwicklungspraktikum (INF-SSE-15)
- Programmierkenntnisse in C++ sind empfohlen.
- Programmierkenntnisse in OpenGL sind empfohlen.
Hinweise:
Parallel zum Teamprojekt dürfte folgende Veranstaltung für
viele interessant sein.
- Praktische
Aspekte der Informatik:
Neben einer Einführung in das Programmieren mit C++ wird auch das
Arbeiten mit diversen wichtigen Entwicklungstools erklärt und
geübt.
Literatur und Links:
- Bundler: Structure from Motion
- VisualSFM: Bundle adjustment using GPU programming
- Software carpentry: Good tutorials for basic Python
- OpenGL mit SDL: Simple direct media layer
- GPU mit CUDA: Nvidia specific graphics card programming
- OpenCV: Computer vision library
- Richard Szeliski: Image stitching tutorial, Einführung in die Bildverarbeitung zum Panorama bauen. Dabei werden u.A. Koordinatensysteme, zylindrische Projektionen und Featurepunkte behandelt.
- Forum: The official TP1 forum.
- Calibration Game: The official project website.
Kontakt:
Kai Ruhl (ruhl
cg.tu-bs.de)

-
-
- Teaching
- TP 2011/2012