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.
Computational Photography and 3D Reconstruction
Build Your Own 3D Scanner
Gabriel Taubin and I co-presented an introductory course on 3D scanning at SIGGRAPH 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 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.
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.
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.
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.
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.
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).
Last Updated: July 20, 2009