Structure Fom Motion (

Course Objectives

This is an advanced course on graduate computer vision and computational photography. This course will explore image formation, image features, image segmentation, image stitching, image recognition, motion estimation, 3D point clouds and will touch upon basics of augmented reality.


Graduate level understanding of Linear algebra, Probability and a strong skillset of MATLAB programming. Knowledge of basic signal processing and other programming langauges like python and C/C++ is a bonus.

Reference Books

Other Good Computer Vision Courses and Tutorials

Course Work Load

This is an advanced graduate course inspired by the graduate level and PhD level courses from other universities. This course competes in content with advanced graduate courses and will probably one of the hardest vision courses out there. Hence, expect to put in a lot more work into this course as compared to other graduate level courses. For a taste of what this course has to offer take a look at the undergraduate version of this course offered last semester at CMSC 426: Image Processing.

This course will be very hands-on and will have a lot of projects. However, because this a graduate class in computer science and not engineering the class will also comprise of some math-heavy homeworks. Also, as this is a qualifier course for PhD in computer science, the course will have a midterm exam.

Course Structure

This course is designed to be very hands on and hence will have many projects. The projects have different weight-age due to their difficulty and work-load levels.

All the projects (5 or 6) combined will account to 70% of the grade. Each project will have different weight and is directly proportional to the difficulty of the project. There will be extra credit in all projects.

All the homeworks (3 to 5) combined will account for 20% of the grade. All the homeworks will have equal weightage.

There will be a take-home Midterm which accounts for the remaining 10% of the grade.

Each project/homework will have EXTRA CREDIT, try to do these.

Programming Environment

The programming assignments are required to be done in MATLAB R2015b (as we'll officially support it, all the starter and evaluation code will be in MATLAB R2015b - the same version as on the server). Note that the computer vision toolbox is not available for running on your personal laptops, so most of the time we'll post links to third party functions you can use. If we do not post any links for a particular project feel free to ask us on Piazza. PLEASE DO NOT USE ANY OTHER PROGRAMMING LANGUAGE IN THIS COURSE. Also, we will officially support ubuntu and a server will be available for the students' use. The server will have computer vision toolbox, however we might restrict the usage of some functions depending on the projects. A general rule of thumb is that if a built-in function completes a major chunk of the project you are not allowed to use that function.

Some of the projects might have mex files (C/C++ wrappers for MATLAB), compiling them on Ubuntu (linux) or MacOS is easy - if you don't know how to do this, please look it up. Mex files on windows is a pain and we will NOT help fix these issues (now is the time to switch from windows to linux (ubuntu 14.04 or 16.04 are recommended)).

We will most likely have an auto-grader for this course and most of the time if your code does not run on the auto-grader you'll get a ZERO. So please follow the input and output specifications if given. Please include comments in your code so that we can understand them. Also, name the variables sensibly. In all cost try to avoid loops in MATLAB code, they'll take forever to run and makes the grading process much harder for us (the harder the grading process, the lesser points you get). The class homepage has MATLAB speed up tricks on the bottom of the page, so please read them carefully.

Guidelines on Typesetting

Each project submission should be accompanied by a 4-6 page report (try to stick to the page limit) with a brief explanation of what you did for the project with a step-wise output (figures and lots of figures, do not forget this is a computer vision course) in LaTeX and IEEE double column format (Tex files will be provided with every project). Each homework submission will have a different LaTeX template which will be accompanied with the question paper pdf. Follow the LaTeX format and typeset all the math equations in LaTeX. We will not correct hand written solutions and solutions which have images of hand-written solutions. This is the standard followed in most of the top universities and we will stick to this.


Each project will have two sets of data, namely, Training set and Testing set. The training set will be released along with the project description and will be for you to test your codes. The testing set will be released on the day of the class or will be handed out in class (to see how robust your code is, our job is to try to break your code). Students will have to present after each project in class for about 5mins and talk about the results of testing and training set, the idea is to discuss about any new observations, any tips, tricks and modifications you might have done. Also, feel free to talk about the problems you might have had during the project. Class presentations need not have a power point presenation, you can use your report or just show pictures of your output or just talk with/without the whiteboard. You can volunteer to present for one/more projects, however it is MANDATORY to present for at-least one project excluding the final project. You need to include outputs of both the training and test set in your report - you are GRADED on this!

General Submission Guidelines

All the submissions should be made on ELMS. If your submission is above 50MB please upload your report to ELMS and the supporting files on google drive or dropbox with a link in a text file. The file types will be restricted to .zip and the reports should be in .pdf format typeset in LaTeX format given. Violating any of the submission guidelines will result in your assignment NOT being graded. Please follow the naming convention for the folder properly - this is needed for the autograder to run, if your UMD email ID is or, your folder name should be ABCD_xyz, where xyz will be the project number or homework number and this will be specified in the project description or homework description.

Using the Autograder

Details on how to use the auto-grader will be out soon. Note that HW0 has no auto-grader - so don't worry.

Late Policy

There will be a flat 20% penalty for submitting the HWs or Projects 1 day late, 40% penalty for submitting the HWs or Projects 2 days late. The projects will not be graded if submitted more than 2 days late. There will be 2 late days for the entire course. Please mention if are using a late day on your report - there will a placeholder for this in the template. Note that you cannot use any late days for HW0 and the final project. A student can submit an assignment (project/homework) late (after the due date) using the late day without any penalty. Using a partial day for a late day counts as the full day. For example, if the due date is today at 11:59:59 PM, and you submit tomorrow at 7AM or 7PM you have used one of your late days. If you forget to mention that you are using a late day, you'll automatically get a penalty and this will not be changed later. SO DO NOT FORGET TO MENTION IF YOU ARE USING LATE DAYS.

Project submissions are due at 11:59:59PM of the date indicated. If you have used up all your late days and have a medical or serious situation due to which you cannot submit the assignment on time and do not want late penalty do contact Nitin J. Sanket atleast 2 days before the due date.


We will be evaluating most of the assignments using an auto-grader. Hence, your code should run on a linux system with the same basic MATLAB packages available to you for this course. If for some reason if you have to use a different toolbox or programming language contact the TAs before doing so.


You are allowed to and encouraged to discuss the concepts regarding first four projects with up-to 2 other students. You MUST write the names of the people with whom you discussed in your report - place holders will be provided for these. If you are caught on a collaboration without appropraite citation such instances will be dealt with very harshly and typically result in a failing course grade.

Other important notes

The course projects might not synchronize well with class lectures as the projects and homeworks will run much faster than the class schedule can handle - we are aware of this and we expect you to understand this very well. The class will only talk about the concept basics you will need in the projects and the projects are going to be much harder and you are expected to go through books and Internet to learn the content on your own.

Contacting Nitin

Please do not hesitate to contact Nitin via email at or drop a post on piazza (private if you wish) for any help regarding the course or any other relevant queries. I will try my best to help you out to learn the content. If you send e-mails to just the email will automatically go to SPAM and I will not read it. Please email me only if it is urgent - use Piazza if possible!

Honor Code

Collaboration is encouraged, but one should know the difference between collaboration and cheating. Cheating is prohibited and will carry serious consequences. Cheating may be defined as using or attempting to use unauthorized assistance, material, or study aids in academic work or examinations. Some examples of cheating are: collaborating on a take-home exam or homework unless explicitly allowed; copying homework; handing in someone else's work as your own; and plagiarism.

You are allowed to and encouraged to discuss the concepts regarding projects with up-to 2 other students. You MUST write the names of the people with whom you discussed in your report. When it comes to formulating or writing solutions you must work alone. No collaboration is allowed on the homeworks and the final project. Any discussions on the homeworks must be cited. You may use free and publicly available sources, such as books, journal and conference publications, and web pages, as research material for your answers. (You will not lose points for using external sources.)

You may not use any service that involves payment, and you must clearly and explicitly cite all outside sources and materials that you made use of. I consider the use of uncited external sources as portraying someone else's work as your own, and as such it is a violation of the University's policies on academic dishonesty. Instances will be dealt with harshly and typically result in a failing course grade.

Unless otherwise specified, you should assume that that the UMD Code of Academic Integrity applies.

  Return to CMSC 733 Home  —  The cool image at top of page is from the Structure From Motion by Princeton University's Vision and Robotics Group

Web Accessibility