CPSC 4820/6820 Applied Computer Vision
Spring 2022

TTh 11:00—12:15 Poole A102

Thu. Jan.13
  • course / assignmnet overview
  • basic image i/o (PPM, PGM images)
  • typical image processing nested for loop
  • 2D access to 1D array
  • "wraparound indices"
  • periodic image extension
Tue. Jan.18
  • OpenMP multi-core parallelization
  • basic convolution
  • separable filters
  • Sobel operators, see also: separable filters
Thu. Jan.20
  • Fourier Transform
  • basis vectors and functions
  • orthogonality and the dot product
  • projection onto basis
Tue. Jan.25
04 Assignment 01 due: basic image processing, RGB luminance conversion
  • example "bar chart" representation by basis functions
  • properties of basis functions
  • solving for coefficients
  • infinite support vs. compact support
Thu. Jan.27
  • the Discrete Wavelet Tranform (DWT)
  • scaling, dilating, shifting
  • unit square example
  • recipe for wavelet function from scaling function:
    \(\psi(x) = \sum_{k}(-1)^{k}c_{k+1}\phi(2x - k)\)
  • orthogonality of \(\phi\) and \(\psi\):
    \(\langle\phi,\psi\rangle = 0\)
  • recursive decomposition
Tue. Feb.01
06 Assignment 02 due: Sobel convolution
  • schematic for 1D wavelet decomposition with FIR filters
  • Haar wavelets
  • quadrature mirror filters
  • reconstruction
  • numerical example
  • schematic for 2D wavelet decomposition with FIR filters
Thu. Feb.03
  • imaging pipeline
  • when to normalize image
Tue. Feb.08
  • dwt code, main.c
  • pgm_idwt2d() call
  • make_wavelets(HAAR)
  • pgm_dwt2d() details (two-pass DWT)
  • extra things to do for DWT assignment
    • MSE against original image
    • edge detection via modulus maxima
    • compression simulation via wavelet coefficient decimation
    • anisotropic filtering via wavelet coefficient decimation
Thu. Feb.10
  • intro to video processing
  • video files as containers (of streams)
  • ffmpeg, ffplay, ffprobe
  • MPEG encoding
Tue. Feb.15
10 OpenCV install notes, including contrib modules, python sym links
Thu. Feb.17
11 OpenGL example
Tue. Feb.22
12 Assignment 03 due: Discrete wavelet transform

Thu. Feb.24
13 DEMO DAY: Students present their image processing work
  • short (e.g., 3 min) PowerPoint presentation
  • show images produced
  • show interesting stuff you implemented
  • give feedback, e.g., lessons learned, what was fun, what wasn't, ...

Face detection

  • Viola-Jones detector
  • integral image representation, Haar-like feature sets
  • machine learning approach
  • cascaded combination of classifiers
  • how to implement


Tue. Mar.01
14 Assignment 04 due: OpenCV video processing

Face detection and tracking

  • frame coherence (more or less) patterened after particle systems
    • face object is born
    • face object grows old, i.e., decays, decay = \(e^{-ka}\) where \(k\) is some constant (e.g., \(0.05\)) and \(a\) is age
    • face object dies
Thu. Mar.03
15 Intro to camera calibration
  • quick review of affine transoformations (rotations, translations)
  • intro to homography
  • solving the homography
Tue. Mar.08
16 Midterm
Thu. Mar.10
17 Camera calibration details
  • what is the homography matrix
  • intrinsic parameters
  • extrinsic parameters
  • distortion parameters
  • camera calibration in OpenCV
Tue. Mar.15
Dr. D. away
18 Lab Day
Thu. Mar.17
Dr. D. away
19 Assignment 05 due: OpenCV face detection and tracking

Tue. Mar.22
-- Spring Break
Thu. Mar.24
-- Spring Break
Tue. Mar.29
20 Final Project Proposals due (see previous year's projects)

Use: The ACM Publishing System (TAPS) Best Practices [templates]

DEMO DAY: Students present their face detection & tracking work

  • short (e.g., 3 min) PowerPoint presentation
  • show videos produced
  • show interesting stuff you implemented
  • give feedback, e.g., lessons learned, what was fun, what wasn't, ...

OpenCV camera calibration and pose estimation

  • chessboard parameters: know its configuration (important)
  • K, dist instrinsic parameters
  • rvec, tvec rotation, translation
  • pose estimation via drawAxes or projectPoints
  • projection using OpenGL
Thu. Mar.31
21 Assignment 06 due: OpenCV camera calibration and undistortion

More on camera calibration

  • how to use arrays of objpoints = [] and imgpoints = []
  • solving for rvec, tvec every frame with solvePnP()
  • analogy to 2D calibration using minimization of least squares

OpenCV ArUco marker detection

  • marker parameters: know its dictionary and size
  • using aruco.detectMarkers() to find markers
  • using aruco.estimatePoseSingleMarkers() to solve for rvec, tvec
Tue. Apr.05
22 Hotelling (Karhunen-Loeve) Transform, a.k.a. Principal Components Analysis
  • ellipse fitting
  • KLT computation
  • block coding
Thu. Apr.07
23 Fiducial marker papers
Tue. Apr.12
Assignment 07 due: OpenCV ArUco marker detection

Computational Photography

  • Fredo Durand's EG 2017 keynote address
Thu. Apr.14
High-Dynamic Range (HDR), bilateral filtering
Tue. Apr.19
DEMO DAY: Students present their marker detection work
Thu. Apr.21
Seminal Computer Vision papers
Tue. Apr.26
Final Project due
  • hand in a short writeup and/or a web page
Course Review
  • basic image operations, i/o
  • OpenMP parallelization
  • edge detection, convolution, Finite Impulse Reponse (FIR) filters
  • Sobel edge detection filters
  • Fourier Transform (FT), basis vectors
  • Discrete Wavelet Transform (DWT), wavelet filters
  • basic video processing, ffmpeg
  • OpenCV, video i/o
  • face detection & tracking
  • camera calibration, homography
  • fiducial marker detection & tracking
  • Karhunen-Loeve Transform (KLT) / Hotelling Transform
  • Principle Component Analysis (PCA), ellipse fitting
  • Computer Vision papers:
    • stereo registration
    • Canny edge detection
    • Kalman filter
  • Compuattional Photography
  • High Dynamic Range (HDR) tone mapping
  • bilateral (Infinite Impulse Reponse, IIR) filter
Thu. Apr.28
29 Reading Day
  • go through each others' projects before final presentations
Wed. May.04
30 Final Exam 3:00-5:30pm: Project Presentations