CS663 - Digital Image Processing

CS663 - Digital Image Processing

Instructor

Prof Suyash Awate / Ajit Rajwade

Motivation to take this course

After delving into the fields of ML & Blockchain for some time & doing a decent amount of web/app development, I wished to explore the domain of Image Processing & graphics. Browsing through the contents for this course made me realize that completing this course will not only equip me with all the fundamentals to build a new Photoshop (at least a minimalist one!), but also help me appreciate Computer Vision related techniques in a better fashion. Also, I felt that doing the assignments would allow me to hone my MATLAB skills. Hence, I decided to take up this course on “Digital Image Processing”.

Section

Just a single section. Large class (~150 students) with ~90% UGs, mostly from the CS & EE Departments, but one could find a very sparse population of UGs from other departments also.

Semester

Autumn‘19

Course Difficulty

This course deals with the fundamentals of various image processing techniques & allows students to implement the algorithms from scratch. It is math-heavy to some extent, but definitely coding heavy & with a total of 5 assignments, needs a major chunk of time each week. The exams are highly application oriented, although one may find a direct question about the proof of an algorithm occasionally. The course project is also pretty doable. If one is not familiar with Fourier transforms, ramping up will need some extra efforts. Overall difficulty could be rated as 7/10.

Time Commitment Required

The lectures for this course accounted for 3 hours each week. This course is a very assignment-heavy course & can easily take up 6-8 hours per week (sometimes even more). Completing the assignments directly helps in grasping the concepts related to techniques. Math behind the working of techniques needs additional attention in the form of 1-2 hours per week. Thus, this course expects a good deal of effort & time commitment from the student if (s)he wishes to make the most out of this course as well as get a good grade (8+).

Grading

The grading was pretty healthy, with 24 AA’s, 15 AB’s, 39 BB’s (out of 153 students) and the remaining to also follow similarly.

Attendence Policy

Attending classes was mandatory, with the general Institute Attendance Policy

Pre-requisites

No hard prerequisites. Prior knowledge of Linear Algebra fundamentals, some Signal Processing & familiarity with Fourier Transforms could work wonders in understanding & acing this course. MATLAB knowledge, although not a prerequisite, is highly recommended as it is needed to complete all coding assignments.

Evaluation Scheme and Weightages

40% Assignments, 10% Project, 25% Midsem, 25% Endsem

Topics Covered in the Course

The course kicked off with several fundamental algorithms for “Image Enhancement” (using Grey Level Transformations & different types of Filtering), followed by introduction to “Image Segmentation” (using Mean Shift and Edge/Corner Detection Algorithms). The first half of the course ended with a deep dive into “Fourier Analysis” (Fourier Transform, its applications & sampling). The second leg of the course started with introduction to “Principal Component Analysis (PCA)”, its applications in Face Recognition & Singular Value Decomposition (SVD). The next topic to touch upon was the “Discrete Fourier Transform” (including the FFT algorithm & its use in filtering images), followed by “Image Restoration” & various denoising techniques. The last phase of the course involved familiarization with “Image & Video Compression”, “Color Image Processing” & “Demosaicing”.

Mechanism of Instruction and Teaching Style

There were 2 instructors for this course. The first half was covered by Prof. Suyash Awate, while the second half was covered by Prof. Ajit Rajwade. Both the instructors used elaborate & self-explanatory slides for teaching, which was made available to the students promptly after each lecture. Hence, making class notes wasn’t the most obvious thing in this course. Both the instructors had considerably different styles of teaching, yet both were interesting in their own ways & were equally enthusiastic about the students’ learning. Personally, I had more interaction with Ajit Sir in the second half of the course, and would undoubtedly consider him to be one of the best instructors that I have been taught by at IIT Bombay.

Assignments and projects in the Course

A couple of tutorials were organized on request from the students to clarify the topics related to Discrete Fourier Transform, which turned out to be really fruitful - with Ajit sir explaining the concepts as well as illustrating with demos during the tutorial. Assignments were the biggest source of learning (& also had the maximum weightage for evaluation) in this course. A total of 5 assignments were required to be submitted, with each having a deadline 1-1.5 weeks post the announcement. They mostly involved MATLAB implementation of algorithms that were explained in class, along with some extra analysis in the form of hyperparameter tuning to arrive at visually more appealing results & analyse the trends. Assignments 4 & 5 also had a couple of theory questions. All assignments could be considered to be moderately difficult. The Course Project, along with its presentation after the endsem exams was another big source of learning. Students were asked to choose their topic from a long list of project ideas. Most of them involved implementing some advanced algorithms from research papers that build on the concepts introduced in this course. The project was to be done in groups of 2-3 & was pretty doable.

How strongly would you recommend someone for taking this course?

This course is a really interesting one for coding enthusiasts &I would strongly recommend them to take it up at some point in time. Although it requires a greater time commitment, it is definitely worth the effort.

When did you take this course? What will be the ideal semester to take this course? Any other course which can be done before this?

I took up this course in my 5th semester (Autumn ‘19). There is no such restriction on which semester to take this up because the class had a good mix from all years (3-4 year B.Tech & M.Techs). Doing some course that involves Signal Processing or Fourier Transforms would give you almost an unfair advantage to ace this course. For Mechies, taking up this course in the 5th semester (parallel with ME311: Microprocessors and Automatic Control can help you perform better in both courses because the parts of Fourier Transform covered in one course definitely complements the other).

Feedback on Exams

There were no quizzes for this course. Both the midsem & endsem exams were purely application-oriented, with room for some tricky & open-ended questions as well. They could be aced if one is thorough with all the basics & nuances of the algorithms discussed in class & is able to critically appreciate them. Ample amount of sample questions were provided before each exam & instructors were extremely approachable to clarify doubts over emails even on the day just before the exam.

References used

Main reference: “Digital Image Processing” by Rafael C. Gonzalez and Richard Woods, 3rd edition Other reference: Fundamentals of Digital Image Processing, by Anil K. Jain. Extra reference material was generously mentioned in the slides whenever needed.

Several useful links will be available on the course homepage

Review by: Tezan Sahu