CPSC 4820/6820 Applied Computer Vision
Spring 2021

TTh 11:00—12:15 McAdams 114

DateL#Topic
Thu. Jan.07
01
  • 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.12
02
  • OpenMP multi-core parallelization
  • basic convolution
  • separable filters
  • Sobel operators
Supplemental:
Thu. Jan.14
03 Assignment 01 due: basic image processing, RGB luminance conversion
  • Fourier Transform
  • basis vectors and functions
  • orthogonality and the dot product
  • projection onto basis
Tue. Jan.19
04
  • example "bar chart" representation by basis functions
  • properties of basis functions
  • solving for coefficients
  • infinite support vs. compact support
Thu. Jan.21
05
  • 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
Supplemental:
Tue. Jan.26
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. Jan.28
07
  • imaging pipeline
  • when to normalize image
Supplemental:
Tue. Feb.02
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.04
09
  • intro to video processing
  • video files as containers (of streams)
  • ffmpeg, ffplay, ffprobe
  • MPEG encoding
Tue. Feb.09
10 OpenCV install notes, including contrib modules, python sym links
Thu. Feb.11
11 OpenGL example
Tue. Feb.16
12 Assignment 03 due: Discrete wavelet transform

Thu. Feb.18
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

Supplemental

Tue. Feb.23
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
Supplemental
Thu. Feb.25
15 Midterm (see class notes)
Tue. Mar.02
16 Intro to camera calibration
  • quick review of affine transoformations (rotations, translations)
  • intro to homography
  • solving the homography
Thu. Mar.04
17 Camera calibration details
  • what is the homography matrix
  • intrinsic parameters
  • extrinsic parameters
  • distortion parameters
  • camera calibration in OpenCV
Tue. Mar.09
18 Assignment 05 due: OpenCV face detection and tracking

Lab Day

Thu. Mar.11
19

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, ...
Tue. Mar.16
-- Spring Break
Thu. Mar.18
-- Spring Break
Tue. Mar.23
20 Final Project Proposals due

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.25
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. Mar.30
22 Hotelling (Karhunen-Loeve) Transform, a.k.a. Principal Components Analysis
  • ellipse fitting
  • KLT computation
  • block coding
Thu. Apr.01
23 High-Dynamic Range (HDR), bilateral filtering
Tue. Apr.06
24
Assignment 07 due: OpenCV ArUco marker detection

Fiducial marker papers

Thu. Apr.08
25
DEMO DAY: Students present their marker detection work
Tue. Apr.13
26
Seminal Computer Vision papers
Thu. Apr.15
27
Computational Photography
  • Fredo Durand's EG 2017 keynote address
Tue. Apr.20
28
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.22
29 Reading Day
  • go through each others' projects before final presentations
Wed. Apr.28
30 Final Exam 3:00-5:30pm: Project Presentations