TeachingWs09CPP

Chair for Computer Aided Medical Procedures & Augmented Reality
Lehrstuhl für Informatikanwendungen in der Medizin & Augmented Reality

Projekt Systementwicklung: Bildverarbeitung und Computer-Graphik mit C++

von Prof. Dr. Nassir Navab, Tobias Blum, Athanasios Karamalis, Stefan Holzer

Typ: Projekt Systementwicklung MODUL Module IN0012
ECTS: 10 Credits
SWS: 6
Wöchentliches Treffen: dienstags, 16:00-18:00 Uhr im Raum MI 03.13.010
Programmierberatung: freitags 14:15 - 15:15 Uhr, schaut einfach bei uns im Büro vorbei

Anmeldung bei
Für die Anmeldung benötigen wir folgende Daten: Vorname, Name, Geburtsdatum, Matrikelnummer, Studiengang, Login (z.B. sunhalle, tum-email).
Eine spätere Anmeldung auch möglich


weitere Beispiele vorheriger Semester

Inhalt

C++: Programmer's Weapon of Choice.
Insbesondere auf dem Gebiet der Computer Graphik (Game Programming, Medizinische Bildverarbeitung etc.) wird die Programmiersprache C++ der Alternative Java in jedem Fall vorgezogen. In diesem Systementwicklungsprojekt wird Wissen zur Programmierung mit C++ in den Bereichen Bildverarbeitung, 3D Computergraphik und die Schnittstelle zur Shaderprogrammierung (GPU) mit GLSL vermittelt. Für die Bearbeitung und Implementierungen werden Teams zu je zwei Personen gebildet. Die Aufgaben werden unter Windows mit Visual Studio bearbeitet.
Das Systementwicklungsprojekt ist in zwei Abschnitte unterteilt.
Im ersten Abschnitt werden im Rahmen einer Vorlesung folgende Themen behandelt
  1. Versionskontrolle mit SVN, IDE (Visual Studio),
  2. C++ Compiler, Linker/Einbinden von Bibliotheken, Debuggen, Standard Template Library, Präprozessor, Objektorientierung, Pointer, Felder und Strukturen
  3. Grundlagen der Bildverarbeitung: Effektfilter, Kantenfilter
  4. Grundlagen von OpenGL (3D Computer Grafik), OpenAL, OpenInventor, GUIs mit QT
  5. Shaderprogrammierung GLSL: Vertex Animation, Beleuchtung, Multipass-Rendering für Image Post Processing, GPU Raycasting
Zusätzlich bereitet jede Gruppe einen kurzen Vortrag zu einem Thema ihrer Wahl vor.

Im zweiten Abschnitt des Systementwicklungsprojekts wird sukzessive eine komplexere Aufgabenstellung (kleines interaktives Spiel) erarbeitet. Die hierfür benötigten Programmiertechniken bauen auf den in Abschnitt eins des Systementwicklungsprojekts erarbeitet Techniken auf.

Wöchentlicher Ablauf

  • Montag 12:00 – Abgabe der Aufgaben (SVN commit)
  • Dienstag 16:00-18:00 – Wöchentliches Treffen
  • Dienstag-Montag – Implementierung der Aufgaben in Teams
  • Dienstag Abend - Neues Aufgabenblatt ist online

Aufgaben (vorläufig)

Datum Thema Folien Aufgabe Merkblatt/Lösungshinweise
20.10.2009 Hello World, Einführung in Visual Studio, Versionskontrolle SVN, Coding Guidelines C++ Einführung, SVN Blatt 1 Organisatorisches
27.10.2009 Bibliotheken, Standard Template Library STL, Bildverarbeitung Libraries, Graphik Blatt 2 Templates, Merkblatt SVN/Kontrollstrukturen, Merkblatt VS
03.11.2009 Qt, Videoverarbeitung Qt, OpenCV Blatt 3 Template, Video
10.11.2009 OpenGL Teil 1 3D Transformations, OpenGL Intro, Light Blatt 4  
17.11.2009 OpenGL Teil 2 Texturen, Blending, Nebel, Heightmaps Blatt 5 Texturen
24.11.2009 OpenGL Teil 3 Texture Mapping, Buffers, Partikel Blatt 6 Schwan
01.12.2009 GLSL GLSL Blatt 7 Blatt 7 Template
08.12.2009 Präsentation des Konzepts für die studentischen Abschlussarbeit Szenegraphen   3D Modellierung, Load3dsTemplate
         
12.01.2010 Zwischenpräsentation      
         
02.02.2010 Testat und Präsentation der Abschlussarbeit      

Voraussetzungen

Es wird grundlegendes C/C++ Wissen vorausgesetzt. Das Projekt Systementwicklung beinhaltet jedoch zu Beginn eine kurze Einführung in die C++ Programmiersprache. Konzepte der Programmierung und der Objektorientierung, soweit in "Einführung in die Informatik I & II" behandelt, werden vorausgesetzt.

Voraussetzungen für den Erhalt der ECTS-Punkte

  • Einreichung der Aufgaben in Teamarbeit von zwei Teilnehmern bis spätestens Montag 12:00 Uhr
  • Aktive Mitarbeit bei den wöchentlichen Treffen
  • Abgabe der Projektaufgabe
  • Teamarbeit
  • Bestehen eines 5min Testats
  • Es besteht die Möglichkeit bis 10 Wochen nach dem Vorbesprechungstermin zurückzutreten, um zu vermeiden mit "Nicht bestanden (nicht erschienen)" benotet zu werden.

Wichtige Literatur und Tutorials

C++ Tutorial

C++ Referenzen

OpenGL

  • Dave Shreiner, Mason Woo, Jackie Neider, OpenGL Programming Guide 'The Red Book' kann auch hier eingesehen werden (Achtung! Behandelt nicht die aktuellste OpenGL Revision). Grundlegendes Buch für die Open Graphics Library, einer Softwareschnittstelle zur Graphik Hardware. Behandelte Themen sind u.a. das Zeichnen geometrischer Objekte, Farben, der Einfluss auf Licht auf eine Szene, die Repräsentation von Kameras, mit der eine Szene betrachtet werden kann und auch Hardware-nähere Techniken wie Antialiasing, Texture Mapping, oder Framebuffer Control.
  • Randi J. Roost, John M. Kessenich, Barthold Lichtenbelt, OpenGL Shading Language 2nd ed.
  • http://www.opengl.org

QT

  • QT 4.5. Reference Documentation: Komplete Dokumentation inklusive API Dokumentation und Tutorials.
  • Jasmin Blanchette, Mark Summerfield C++ GUI Programming with Qt 4: Lehrbuch für Einsteiger und Profis das mit einsichtlichen Beispielen Qt4 mit C++ vermittelt. Beinhaltet auch ein OpenGL? Beispiel. (Buch frei erhältlich per download. Auf Englisch)

Weiterführende Literatur und Tutorials

C++ Tutorials

C++ Referenzen

Advanced Programming with C++

OpenGL

English Version

General content

The Systementwicklungsprojekt is intended to teach C++ for Image Processing, Computer Graphics and Harware based Shader programming (GPU). You will be confronted with a summary about the basics of C++ e.g. preprocessing, compiling, linking, the language itself, version control (SVN). Further topics will be GUIs with QT, 3D Computer Graphics with OpenGL/OpenInventor, Shader programming, Sound with OpenAL.

Prerequisites

The Projekt Systementwicklung requires basic knowledge in C++. The concepts of OO Programming and other concepts as conducted in the Introduction to CS lecture are assumed.

Schein requirements

Active participation in the weekly meeting, submission of the implementation of the weekly assignments of part I, teamwork, and the presentation of the final assigment.




TeachingForm
Title: Bildverarbeitung und Computer-Graphik mit C++
Professor: Prof. Dr. Nassir Navab
Tutors: Tobias Blum, Athanasios Karamalis, Stefan Holzer
Type: Programmierpraktikum
Information: 10 ECTS credits
Term: 2009WiSe
Abstract: C++: Programmer's Weapon of Choice. Insbesondere auf dem Gebiet der Computer Graphik (Game Programming, etc.) wird die Programmiersprache C++ der Alternative Java in jedem Fall vorgezogen. In diesem Systementwicklungsprojekt wird Wissen zur Programmierung mit C++ in den Bereichen Bildverarbeitung, 3D Computergraphik und die Schnittstelle zur Shaderprogrammierung (GPU) vermittelt. Für die Bearbeitung und Implementierungen werden Teams zu je zwei Personen gebildet. Die Aufgaben werden unter Windows mit Visual Studio bearbeitet.


Edit | Attach | Refresh | Diffs | More | Revision r1.24 - 20 Apr 2010 - 14:30 - AthanasiosKaramalis

Lehrstuhl für Computer Aided Medical Procedures & Augmented Reality    rss.gif