Course: ELE488
Instructor: Ramadge
S 2015

Description of Course Goals and Curriculum

Image Processing is a mathematically rigorous introduction to the fundamentals of image processing. Prof. Ramadge revamped the course in Spring 2015, and since then has organized the course into two major sections. In the first half of the semester, students are introduced to fundamentals such as how computers represent images, what are pixels, what is the pinhole camera model, and how to use mathematical tools such convolution. In the second half, Prof. Ramadge covers basic probability and transitions into teaching how to use machine learning methods, such as principal component analysis, maximum likelihood estimation, and the support vector machine, for the purposes of image processing. The class is primarily driven by lectures, and for the most part the lectures cover modular topics, with topics occasionally taking more than one lecture. Prof. Ramadge supplements his lectures with his own typed up notes, which fully contain everything he covers in lecture and more. Prof. Ramadge has a fast and mathematically detailed approach to teaching that can be challenging to keep up with. His lecture notes contain many exercises that are useful for practicing beyond the examples he gives in class. However, he has very reasonable expectations on problem sets and exams, and does not expect all details to be recalled from his notes. Essential unlisted prerequisites for the class would be some form of linear algebra (MAT 202 or MAT 204) and programming experience (ideally at least up to COS226).

Learning From Classroom Instruction

The class is driven by lectures and “labs” (which are actually assignments).

a. Prof. Ramadge’s lectures were presented biweekly, in two formats: powerpoint slides (used mostly for the first half of the class), and blackboard lectures. It is useful to print the slides beforehand so you don’t need to worry about copying down all the details. The lectures are very well organized and largely self-contained, at least for the first half of the semester. However, each lecture also covers a lot of material, and missing one lecture can take a while to catch up on and learn on your own. There is opportunity to review and learn the lectures on your own, either through the slides, or through Prof. Ramadge’s typed up lecture notes. These can be considered the readings for the class, though they are normally released during or after the relevant lecture. They are very detailed and cover the material in the same rigor as Prof. Ramadge’s lectures, if not more, so they are very suitable for reviewing or learning the material on your own. The lecture notes also contain exercises that are sometimes used directly on assignments or exams, so it is very useful to do them if you have time. However, there are no solutions given for these exercises, so you must ask a TA for verification. Another useful resource that Prof. Ramadge gives are iPython notebooks containing example code for the concepts taught in lecture. This is useful for both learning how to apply the theory of certain techniques and doing the programming portion of assignments. At times, it can even feel like Prof. Ramadge gives out too many resources and it’s impossible to keep up with all of them and his lectures. My advice would be to keep up with reviewing the material and don’t let yourself fall behind by missing more than a single lecture. Note that in the second half of the class, the lectures begin to build more on each other (ex: learning probability fundamentals, applying it to MLE, than to SVMs)

b. The “labs” of the class take a time block in your schedule when you register, but aren’t actually held. They are the equivalent of programming assignments for the class. See the next section for details on them.

Learning For and From Assignments

Prof. Ramadge called his assignments “labs”, but they were released online and were meant to be completed on your own time, rather than a scheduled lab time. We had 8 labs total (only 7 graded), plus one final assignment, in Spring 2016. The labs were weekly for most of the first half of the semester, then were given every other week. The labs were always broken into two parts. The first part was a theoretical portion. Prof. Ramadge gives about 5 questions related to the theory and math presented in that week’s lectures. These were usually straightforward mathematical derivations or proofs, with some questions being taken directly from his lecture notes and exercises. Reading the notes, especially if you missed lecture, is almost a requirement for completing the assignments. The second part of labs is the computational part, aka the coding portion. Prof. Ramadge usually sets up an iPython notebook, which is an interaction python environment, where students must implement and test various techniques taught in class. Don’t worry if you don’t know python before, the first two assignments will introduce it. This portion of the assignment is different from assignments in classes like COS126 and COS226, because they usually require you to implement multiple smaller functions that are unrelated. However, the programming portions of the class are easily the most rewarding part, as you can to actually implement many functions and techniques that actually work outside of the simple test example. The skills developed here are a fantastic introduction to the field of image processing, and Python is an industry standard in this field and also machine learning and data science. It is often useful to look at the example notebooks that Prof. Ramadge provides before starting each week’s assignments, as you are allowed to use his example code (with citation).

The final programming assignment is a larger project, due on Dean’s Date. We were given a choice between a project on recognizing license plates and a project on face recognition. This will take much longer than normal assignments. Make sure to pick a partner you work well with on them (do not try to do it yourself). It is straightforward for the most part, but both assignments included an open-ended portion where you are supposed to experiment and analyze the results. Make sure to include detailed writeups in your Python notebook of your findings, as you are graded on your analysis of the material rather than whatever results you get. Prof. Ramadge also expressed interest in adding more options in the future.

There is a midterm and final for the class. Both are given in the same format, about 3-4 sections of 4 questions. These tests are very similar to the theoretical questions given in the labs, but generally a bit easier. Prof. Ramadge provides a sample test from previous years, which is useful to study. The trickiest part of the exam is they are closed note and no cheat sheet, which makes the tests much harder than the assignments since you will not have access to the detailed lecture notes. My best advice is to review the relevant parts of the labs and work with other students on the sample tests. Prof. Ramadge changes the questions, but the format and style of the questions are very similar for each year. If you still feel unprepared, do the exercises in the lecture notes. Some questions for exams are pulled straight from these exercises. However, don’t fret over the details. For the most part, Prof. Ramadge does not expect the same level of mathematical rigor that he presents in lecture, simply because he makes the tests closed notes. The exams are meant to test your understanding of the concepts, and many questions can be answered by recalling a definition and a related example. Time is rather limited on the midterm, so make sure not to get hung up on a part of a question.

External Resources

Prof. Ramadge recommends some external notes and resources for students who feel they need review in particular areas like linear algebra or probability, but the class is very well designed to be self-contained in the lecture notes and slides. You should not really need more. A useful resource that many students (including myself) turned to in the second half of the semester are the lecture notes from ORF309 (Probability) since they are a great reference.

What Students Should Know About This Course For Purposes Of Course Selection

The class is a great introduction to image processing, and very recommended to students interested in applications of image processing, computer vision, and/or machine learning. Prof. Ramadge assumes students have taken either MAT202 or MAT204 (linear algebra). It is also unspoken but assumed that students know basic programming skills, at least COS126 but ideally also COS226. Some other classes that would be useful are:

  • ORF309 is very useful if you’ve taken it and will be extremely helpful in the second half of the semester. Can be taken concurrently.
  • ORF350 is useful for the MLE portion of the second half of the semester, and has great overlap of material with this class.

There is some overlap in material with COS429. However, this class is sufficiently different, as it addresses topics at a much more mathematically rigorous level that COS429 in terms of assignments and exams. COS429 seems to be structured more on applications (theory is taught but not as rigorously tested) and has larger, longer assignments. ELE201 is useful as a natural introduction to signal processing and convolutions, and will make certain topics in the first half easier to understand.

The class is great for sophomores or juniors who are looking to get involved in image processing or computer vision. The mathematical rigor can seem daunting to some, but it is not just a theory class and has many application aspects that serve well to transition students to being exploring the field. For freshmen, it may be helpful to take some of the courses listed above first, to make sure you can get the most out of the class. For seniors, it may be harder to devote or split time between this class and thesis, since it can be rather time consuming, especially when the assignments are weekly. The material and design of the course is very well done, and a must-take for students at all interested in the area of machine vision.

Image Processing

Add a Strategy or Tip