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

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:

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:

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