Advanced Programming Techniques in Computer Vision (APTCV or APTiCV)
(Summer term 2007)
Course Description
This course covers many
aspects of state-of-the-art programming
techniques in practice, and their application to computer vision
related problems. During the lectures we discuss several programming
paradigms, address major technical problems, and typical mistakes.
While many of the introduced techniques exist in several programming
languages,
here we focus only on C++. Our aim is that by the end of the
course all
participants have a very solid C++ knowledge including many
advanced topics such as memory management, inlining, operators,
namespaces, generic programming, etc. Moreover, since all
exercises are from computer vision this course provides an
excellent practical experience for students interested in this domain.
Click here for an incomplete list of topics.
Click here for an incomplete list of topics.
Requirements
- C++
- This course introduces language elements that are considered to be advanced, and therefore we require students to know at least the basics of C++. If you are unsure about your knowledge click here for details.
- Computer Vision
- All assignments require some computer vision background. Even though we provide additional material when it is necessary for implementation details, we expect that all participants have attended the Computer Vision course. Due to our time schedule, it is also possible to attend Computer Vision at the same time (SS 2007) as this course.
Structure & Grading
- 3 SWS (about half lectures / half exercises)
- Lectures are grouped together in 2-3-hour blocks. In the beginning of the semester there are on every week, while in the second part of the semester there are less frequent.
- Assignments are given on a regular basis, but more effort is necessary during the second part of the semester.
- Students are allowed to work on the assignments in pairs.
- We have a 20 limit on the maximum number of students.
- Final grades are based on a closing oral exam, and on the submitted assignments.
- The course is given in English.
Exam location & requirements
- Exam dates: July 23 & July 24, 2007 (time: 9:00 - 17:00)
- Register for the exam: Send an email to dorko at mis.tu-darmstadt.de with a subject "aptcv exam registration". Let us know if you have a preference for the first or the second day. We will let you know your exact time by email.
- You can download a series of questions that might help you to prepare for the exam. (Note: these questions are just for guidance; the main script for the exam is the slides and the references that can be found on the slides.)
Course specific newsgroup & forum
To receive course related announcements, please register for the newsgroup aptcv@mis.informatik.tu-darmstadt.de. For registration click on the link.You can discuss the course content & assignment on the Fachschaftsforum of APTCV.
When & Where
Location: S2|02 C120Dates: Thursdays 13:30 - 16:05.
Lecture & Exercise Plan
| Date | Lecture | Exercise |
| Apr 19 | Introduction Compile & Link Function Signatures C++ Name Mangling POD & non-POD types, variable initialization Download Lecture #1 Handouts (pdf) (Last modified: 23.04.2007) | Exercise Sheet #1 Image Representation Download Exercise Sheet 1 (pdf) (no need to hand in) For hints see the last few slides from the Lecture. |
| Apr 26 | Callbacks Pointers Const correctness Namespaces Download Lecture #2 Handouts (pdf) (Last modified: 27.04.2007) Download Quiz 1 (pdf) (Discussion: May 3) Download Quiz 2 (pdf) (Discussion: May 3) | Exercise Sheet #2 Linear Filtering & Gaussian Averaging Convolution (part 1) Measuring the time. Download Exercise Sheet 2 (pdf) (no need to hand in) It is not necessary to hand in this exercise, however you can. Further assignments will make use of the developed code and will assume that you have this sheet solved. |
| May 3 | Memory Management Construction & Destruction Debugging & profiling Download Lecture #3 Handouts (pdf) (Last modified: 02.05.2007) Download Quiz 3 (pdf) (Discussion: May 10) Download Quiz 4 (pdf) (Discussion: May 10) | Exercise Sheet #3 Working on multi-scale Convolution (part 2) Download Exercise Sheet 3 (pdf) Assignment due May 10, 11am |
| May 10 | Important:
The lecture is in S1|03 - 23 Download Lecture #4 Handouts (pdf) (Last modified 09.05.2007) Temporaries Inlining Standard Template Library, part 1 Download Quiz 5 (pdf) (Discussion: May 24) | Exercise
Sheet #4 Histograms Download Exercise Sheet 4 (pdf) Download Supplementary file #1 for Exercise 4 (genhists.tar.gz) Download Supplementary file #2 for Exercise 4 (imclassify.tar.gz) Assignment due May 21, 11pm |
| May 17 | No lecture | No exercise |
| May 24 | Download Lecture #5 Handouts (pdf) (Last modified 23.05.2007) Standard Template Library, part 2 Implementation of Local Image Descriptors | Exercise Sheet #5 - counts for
final grade! Local Features Panoramas Exercise is marked by: - correctness - speed - programming style - small presentation Download Exercise Sheet 5 (pdf) Links to related reading: - Harris-Laplace detector. Relevant section: Section 2, pp. 4-6. - SIFT descriptor. Relevant section: Section 6, most importantly Section 6.1 pp. 14-16. - Example implementation of Image and Timer classes Assignment due June 20, 11pm (There will be NO extensions!) |
| May 31 | No lecture | No exercise |
| June 7 | No lecture | No exercise |
| June 14 | Download Lecture #6 Handouts (pdf) (Last modified 15.06.2007) Static objects & their initialization Singletons STL & efficiency Software Efficiency | No exercise |
| June 21 | During the lecture there will be an announcement and discussion of the next exercise sheet. Download exercise 6 (i.e. Lecture 7) presentation (pdf) | Exercise Sheet #6 - counts for
final grade! Grouping by appearance Download Exercise Sheet 5 (pdf) Exercise is marked by: - correctness - programming style Assignment due July 11, 11pm |
| June 28 | Templates: instantiation & specialization Download Lecture #8 & 9 & 10 Handouts (pdf) (Last modified 12.07.2007) | Discussion
of Exercise Sheet #5 submissions (short student presentations of exercise sheet 5) |
| July 5 | Templates:
Download Quiz 6 (pdf) (July 12) | No exercise |
| July 12 | Templates:
Download Lecture #8 & 9 & 10 Handouts (pdf) Last Modified (12.07.2007) | No exercise |
| July 19 | Available Image Libraries Image Processing and Generic Programming: An introduction to GIL. Future of C++ Download Lecture #11 Handouts (pdf) Last Modified (19.07.2007) | No exercise |
Suggested reading & on-line resources
Assignments
Please find the links to the assignment sheets above in the Lecture & Exercise Plan.There will be 6 assignment sheets altogether. The last 4 have to be submitted, and the last 2 will count for the final grade. You are allowed to work in pairs on the exercises.
Submission
To submit your solution please send an email to aptcv-exercises@mis.tu-darmstadt.deThe email should contain:
- Your name(s). If you solved the exercise together with someone, submit the results once, and do not forget to write both names (and email addresses) in the email body or include them in From/CC.
- Your group number
- The exercise sheet number.
- One archive (.tar.gz or .tar.bz2 or .zip) file with the compilable source code with a suitable Makefile. Double-check that you really attached the file!
Correction for your solution
When your submission is corrected you will receive a notification email with a link where you can on line access our corrections, suggestions, and your earned points. Each group will also receive a username and a password to access their solutions. Please do not give your password out to others.Contact
Lectures are given by Gyuri Dorko (should you have any questions about the course, feel free to ask him)The exercises are supervised by Michael Stark and Gyuri Dorko.
Office hours:
Gyuri Dorko: Tuesdays, 13:30 - 15:30, S202 / B107 (or ask an appointment by email).
Michael Stark: Wednesdays, 16:00-17:00, S202 / B104 (or ask an appointment by email).