Site Network: Personal | Oculus VR

Coursework and Tutorials

I have had the opportunity to teach and take classes spanning EE, CS, and Applied Math. Here I provide links to course materials and homework solutions which I have extended into general tutorials. In addition, source code is provided for do-it-yourself projects (e.g., 3D scanners, 3D displays, and decibel meters).


Computational Photography, 3D Reconstruction, and 3D Display

Build Your Own Glasses-free 3D Display

Matthew Hirsch and I co-presented an intermediate course on glasses-free 3D displays at SIGGRAPH 2011. This follow-up to our prior courses describes real-time, OpenGL-based encoding for parallax barrier and lenticular displays.

 

Downloads: course website, source code


Build Your Own 3D Display

Matthew Hirsch and I co-presented an introductory course on 3D displays at SIGGRAPH 2010 and SIGGRAPH Asia 2010. The complete course notes, lecture slides, demonstration videos, and source code are available on the course website.

 

Downloads: course website


Build Your Own 3D Scanner

Gabriel Taubin and I co-presented an introductory course on 3D scanning at SIGGRAPH 2009 and SIGGRAPH Asia 2009. The complete course notes, lecture slides, demonstration videos, and source code are available on the course website.

 

Downloads: course website, lecture notes, source code


Structured Light for 3D Scanning

I recently implemented a conventional structured light 3D reconstruction system using commericial DLP projectors and digital cameras. Key contributions include a complete Matlab toolbox for projector-camera calibration.

 

Downloads: assignment and results, presentation (pdf, ppt)


3D Photography using Planar Shadows

As head TA for CS 220, I created an assignment in which the students implemented Bouguet's desktop 3D scanner using only a webcam, a halogen lamp, and a stick. Send an email if you'd like a copy of my Matlab implementation.

 

Downloads: assignment and results, webpage, support code

 

Computer Vision and Graphics

Augmented Video

This presentation summarizes a system for inserting virtual objects into uncalibrated video sequences. The position and pose of the camera, relative to a set of landmarks, is estimated automatically for each frame in the sequence.

 

Downloads: presentation, video1, video2, video3, video4


Exemplar-based Image Inpainting

This project involved removing large objects from images. From a user-specified mask, small patches were duplicated until all remaining gaps were filled. For more information, see Exemplar-based Image Inpainting by Criminisi et al.

 

Downloads: final presentation, source code, video1, video2


Texture Synthesis using Image Quilting

These presentations summarize my implementation of Efros and Freeman's Image Quilting algorithm – a simple, yet effective, patch-based texture synthesis procedure. My source code is also available on Matlab Central.

 

Downloads: final presentation, project proposal, source code


Bilateral Filtering and Image Abstraction

Bilateral filtering was proposed by Tomasi and Manduchi in 1998 as a non-iterative method for edge-preserving smoothing. My implementation also includes bilateral image abstraction using the method outlined by Winnemöller et al.

 

Downloads: source, album, video1, video2, video3, video4

 

Computer Science

Machine Learning

This section contains my collected solutions for CS 195-5: Introduction to Machine Learning. Topics discussed include Bayesian decision theory, supervised/unsupervised learning, mutual information, HMMs/MRFs, and graphical models.

 

Downloads: hw1, hw2, hw3, hw4, hw5, hw6, source code


Design and Analysis of Algorithms

This section contains my collected homework solutions for CS 157: Design and Analysis of Algorithms. Topics discussed include greedy algorithms, complexity and running time, randomized algorithms, and dynamic programming.

 

Downloads: hw1, hw2, hw3, hw4, hw5, hw6, hw7

 

Electrical Engineering

Probability and Random Processes

This section contains my homework solutions for EN 257: Applied Stochastic Processes. Topics discussed include random processes, spectral representations, Markov random fields, Kalman filtering, and detection and estimation theory.

 

Downloads: hw1, hw2, hw3, hw4, hw5, hw6, hw7, hw8


Matlab Decibel Meter

This tutorial presents the design of a sound level meter in Matlab. The Data Acquisition Toolbox is used to implement a real-time spectrum analyzer. The decibel meter is implemented in the frequency domain using Parseval's relation.

 

Downloads: tutorial, source code, original assignment


Digital Filter Design

Originally written as a solution set for a DSP course at Brown, this tutorial discusses the design of FIR filters. Three methods are covered: (1) the window method, (2) the frequency sampling method, and (3) Parks-McClellan equiripple design.

 

Downloads: tutorial, original assignment

 

Applied Mathematics

Partial Differential Equations

This section contains my collected homework solutions for EN 202: Mathematical Methods in Engineering and Physics II. Topics discussed include PDEs, ODEs, the calculus of variations, and probability.

 

Downloads: hw1, hw2, hw3, hw4, hw5


Numerical Solution of PDEs

This section contains my homework solutions for AM 255: Numerical Solution of Partial Differential Equations I. Topics include the analysis and implementation of finite difference methods for solving time-depend initial value problems.

 

Downloads: hw1, hw2, hw3, hw4, hw5, hw6, final


Differential Geometry in Mathematica

This Mathematica notebook can be used to evaluate the properties of a parametric surface (i.e., the covariant and contravariant basis vectors, the metric and curvature tensors, and the Christoffel symbols).

 

Downloads: notebook, pdf

 

Last Updated: July 28, 2014