TeachingSs07CPP

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 Nassir Navab, Christoph Bichlmeier, Oliver Kutter, Stefanie Kettner, Moritz Blume

Typ: Projekt Systementwicklung MODUL IN0012
Generelle Studienplaneinordnung: BS-INF PF ab 5
Anmeldung bei
Für die Anmeldung benötigen wir folgende Daten: Vorname, Name, Geburtsdatum, Matrikelnummer, Hallen login (z.B. sunhalle), Studiengang.

ECTS: 10 Credits
SWS: 6
Wöchentliches Treffen: dienstags, 16:00-18:00 Uhr im Raum MI 03.13.010
Computer pool: 02.13.008
Programmierberatung: freitags 14:15 - 15:15 Uhr im Raum MI 02.13.008 (hier stehen wir für Fragen zur Verfügung)

ACHTUNG ACHTUNG Programmierberatung am 11.5.2007 entfällt. Ersatztermin 10.5.2007 16:00 - 17:00 Uhr im Raum MI 02.13.056.

Inhalt

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 grundlegendes Wissen zur Programmierung mit C++ vermittelt. Alle Beispielaufgaben für das Systementwicklungsprojekt kommen aus dem Gebiet Computer Grafik und Bildverarbeitung. Für die Bearbeitung und Implementierungen werden Teams zu je zwei bis drei Personen gebildet. Die Aufgaben werden mit GNU Compiler Collection (g++,gcc) bearbeitet.
Das Systementwicklungsprojekt ist in zwei Abschnitte unterteilt.
Im ersten Abschnitt werden grundlegende Konzepte der C++ Programiersprache, OpenGL und Team Based Software Engineering behandelt. Themen sind u.a.
  1. Tool für die Versionskontrolle SVN, Aktuelle IDEs (Visual Studio)
  2. C++ Compiler, Linker/Einbinden von Bibliotheken, Debuggen
  3. Präprozessor, Objektorientierung, Pointer, Felder und Strukturen, Standard Template Library
  4. Grundlagen der Bildverarbeitung
  5. Grundlagen von OpenGL (3D Computer Grafik), OpenAL, OpenInventor, GUIs mit QT, Shaderprogrammierung
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

Datum Thema Folien Aufgabe Merkblatt/Lösungshinweise
19.1.2007 Vorbesprechung      
17.4.2007 Einführung: Header-files, Präprozessor, Compiler, Linker Einführung , Versionskontrolle mit SVN Blatt01 Merkblatt_CPP, Merkblatt_SVN
24.04.2007 Einführung : Bildverarbeitung Bildverarbeitung Blatt02 ImageProcessing_Template.zip
01.05.2007 fällt aus      
08.05.2007 Einführung : Computergraphik mit OpenGL und GUIs mit Qt Einführung in Qt , Einführung in OpenGL Blatt03  
15.05.2007 OpenGL: Transformationen, Licht, Blending Transformationen und Beleuchtung in OpenGL Blatt04  
22.05.2007 OpenAL, Texturemapping, Nebel, Displaylisten, Heightmaps Heightmapping, Material, Texturen, Transparenz, Nebel, OpenAL, Displaylisten Blatt05  
29.05.2007 fällt aus      
05.06.2007 OpenGL: Textausgabe, Particle Engine, Gastvortrag Christopher Stapleton Partikelsysteme, OpenGL Text Ausgabe, Vortrag Christopher Stapleton: Blatt06  
12.06.2007 Einführung: GLSL für Animation und Beleuchtung GLSL Intro Blatt07 Blatt 7 Template
19.06.2007 Multipass-Rendering mit GLSL für verschiedene Effekte FBOs und Volume Rendering Blatt08 Aufg. 28 Template Aufg. 29 Template
26.06.2007 Präsentation der Abschlussarbeit      
03.07.2007        
10.07.2007        
17.07.2007 Testat und voraussichtliche Abgabe der Abschlussarbeit      

Teams

Team 1 - Kai Orend, Alexander Plopski, Lucia Giorio
Team 2 - Markus Vill, Andre Aichert
Team 3 - David Weisgerber, Martin Veith, Nicolas Dougoud
Team 4 - Andreas Wenger, Christian Kirst

Voraussetzungen

Es wird kein detailiertes C/C++ Wissen vorausgesetzt, jedoch fortgeschrittene Kenntnisse in mind. einer Programmiersprache. Das Systementwicklungsprojekt beinhaltet zu Beginn eine kompakte 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 bis drei Teilnehmern bis spätestens Montag 12:00 Uhr
  • Mindestens 8 von 9 Aufgabenblättern wurden korrekt bearbeitet
  • 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. 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 Representation von Kameras, mit der eine Szene betrachtet werden kann und auch Hardware-nähere Techniken wie Antialiasing, Texture Mapping, oder Framebuffer Control.

QT

Weiterführende Literatur und Tutorials

C++ Tutorials

C++ Referenzen

Advanced Programming with C++

OpenGL

  • Dave Shreiner, OpenGL Reference Manual 'The Blue Book' kann auch hier eingesehen werden. Es wurde von den OpenGL Software-Architekten geschrieben und sollte erst verwendet werden, wenn eine gewisse Sicherheit im Umgang mit C++ erreicht wurde. Es enthält alle relevanten OpenGL Methodiken und dazu Code-Beispiele
  • NEHE - An Excellent OpenGL Web Tutorial Tutorials und mehr zu OpenGL auf Englisch. Hier die deutsche Übersetzung.
  • Folgende Referenz ist eher für Interessierte nach dem Kurs. Sie beschäftigt sich mit der Frage, wie man OpenGL Aufrufe geschickt benutzt, damit sie noch schneller ausgeführt werden (OpenGL tuning). Auf Englisch.

English Version

General content

The Systementwicklungsprojekt is intended to teach you the basic concepts of C++. All assignments will focus on computer graphics and computer vision applications. You will be confronted with preprocessing, compiling, linking, the language itself, version control (SVN), makefiles, modern IDEs (Visual Studio), debugging, and a little on object orientation.

Prerequisites

The Systementwicklungsprojekt is intended to teach C++, so knowledge of it is not necessary. Knowledge of JAVA would be of great advantage. 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: Nassir Navab
Tutors: Christoph Bichlmeier, Oliver Kutter, Stefanie Kettner, Moritz Blume, Christopher Stapleton D. Med. Sandro Michael Heining
Type: Projekt Systementwicklung
Information: 10 ECTS credits
Term: 2007SoSe
Abstract: C++: Programmer's Weapon of Choice. Insbesondere auf dem Gebiet der Computer Graphik (Game Programming, etc.) wird die Prgrammiersprache C++ der Alternative Java in jedem Fall vorgezogen. In diesem Systementwicklungsprojekt wird grundlegendes Wissen zur Programmierung mit C++ vermittelt. Alle Beispielaufgaben für das Systementwicklungsprojekt kommen aus dem Gebiet Computer Grafik und Bildverarbeitung. Für die Bearbeitung und Implementierungen werden Teams zu je zwei bis drei Personen gebildet. Die Aufgaben werden in der ersten Woche mit der GNU Compiler Collection (g++,gcc) und danach mit Visual Studio bearbeitet.


Edit | Attach | Refresh | Diffs | More | Revision r1.40 - 01 Jul 2008 - 16:52 - ChristophBichlmeier

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