Digital Image Processing
Instructor: Dr. Nina Miolane
Affiliation: Geometric Intelligence Lab - UC Santa Barbara
Quarter: Spring 2024
Github: Link
Welcome to Digital Image Processing! This course introduces the principles and practice of transforming, analyzing, and understanding images using computational methods. You will learn how images are formed, represented, enhanced, and interpreted, with an emphasis on both theoretical foundations and practical algorithms used in modern computer vision and imaging systems.
Throughout the quarter, we will connect classical image processing techniques with contemporary applications, equipping you with tools that are broadly applicable across science, engineering, and data-driven disciplines.
Classes
-
in PHELP 1431, MW 10:00 AM - 11:00 AM (slides: ECE 278a's GitHub)
Notes:
- You are required to attend all the lectures.
- Do not enroll in other courses whose schedule is conflicting with this class.
- If you cannot attend all lectures, please drop this class.
Resources
The content of this class relies on the following excellent resources:
- Slides from B. S. Manjunath from previous years of ECE 278A.
- Textbook Computer Vision: Algorithms and Applications, by Richard Sweliski.
- Google Slides by Steve Seitz.
- Brown, M. S. (2019). ICCV 2019 tutorial on understanding color and the in-camera image processing pipeline for computer vision.
Python and Jupyter Notebooks
We will use:
- Python version 3.10 or higher as our programming language,
- Jupyter notebooks to run Python interactively in a web browser.
You should download Anaconda which will install everything you need to run Python 3.10+ and Jupyter notebooks:
- Anaconda: https://www.anaconda.com/download
If you have never used Python, please drop this class.
Grading
- Topics: 60%
- Projects: 40%
- Extra-credits (up to +10%):
- Helping classmates (on Slack): +8%
- Sending constructive feedback about the class: +2%
Topic Presentations (60%) - Teams of 2-3
Present a concept of image processing, through a Jupyter notebooks' slides that:
- Introduce the theory and seminal paper
- Implement in Python code
- Show a recent (2020+) work using that concept
Steps:
- Register on the GitHub README.md (first come / first serve)
- Submit your jupyter notebook in folder "topics" in ECE 278a GitHub repository
- Present it to the class (40min, 40 slides max)
Projects (40%) - Teams of 5 max
Put your skills in practice to tackle a project of your choice.
- Presentations in class: 06/03 and 06/05 (5 min per student)
Steps:
- Find a question and an image dataset from a research team at UCSB.
- Recommended: small datasets, where deep learning is not suggested.
- Submit code with a main notebook in folder "projects" of the ECE 278a GitHub
- Present to the class.
Course Content
| Week / Date | Description | Important Events |
|---|---|---|
| Module I: Image Formation Models (Weeks 1–2) | ||
| Week 1 |
Lectures 1 & 2: Geometric Primitives and Transformations |
|
| Week 2 |
Lectures 3 & 4: 2D to 3D Projections, Camera Parameters |
|
| Module II: Image Operators and Transforms (Weeks 3–4) | ||
| Week 3 |
Lectures 5 & 6: Linear Operators, Point Operators, Neighborhood Operators |
|
| Week 4 |
Lectures 7 & 8: Convolution |
|
| Module III: Feature Detection, Matching, Segmentation (Weeks 5–6) | ||
| Week 5 |
Lectures 9 & 10: Keypoint Detection and Mapping, Edge Detection |
|
| Week 6 |
Lectures 11 & 12: Contour Tracing, Segmentation Methods |
|
| Module IV: Image Alignment and Stitching (Weeks 7–8) | ||
| Week 7 |
Lectures 13 & 14: Matching Features |
|
| Week 8 |
Lectures 15 & 16: Image Alignment and Stitching |
|
| Module V: 3D Reconstruction (Weeks 9–10) | ||
| Week 9 |
Lecture 17 & 18: Triangulation, Structure from Motion |
|
| Week 10 |
Lecture 19 & 20: Active and Volumetric Stereo, Reconstruction in Biology |
|