Computer Vision and Graphics
![](courses/en292/en292.gif)
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
![](courses/en256/inpainting_venice.gif)
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
![](courses/en256/imagequilting_icon.gif)
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
![](photos/Bilateral/slides/academy_cartoon.jpg)
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
![](courses/byo3d/byo3d-alt-2.jpg)
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
![](courses/cs220/structured-light.gif)
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)
![](courses/cs220/scanner.gif)
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
![](courses/cs195-5/cs195-5.jpg)
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.
![](courses/cs157/cs157.jpg)
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
![](courses/en257/en257.jpg)
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.
![](courses/decibel_meter.jpg)
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
![](courses/filter_design.jpg)
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
![](courses/en202/en202.jpg)
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.
![](courses/am255/am255.jpg)
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.
![](courses/diffGeom.jpg)
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