Mike Roberts
PhD Candidate
Computer Graphics Laboratory
Stanford University

Google Scholar
Curriculum Vitae


I am a fourth-year PhD candidate in the Computer Graphics Laboratory at Stanford University advised by Pat Hanrahan. My work is at the intersection of computer graphics and robotics, where I focus on using drones to support human creativity. I will be spending the summer of 2016 at Microsoft Research working with Neel Joshi.

Before coming to Stanford, I was a research fellow in the Visual Computing Group at Harvard University advised by Hanspeter Pfister. I collaborated with Jeff Lichtman at the Harvard Center for Brain Science to develop new image analysis methods for nanometer-scale images of brain tissue. Our work was published on the cover of Cell in 2015, and has been featured in BBC Horizon, The Guardian, Huffington Post, National Geographic, Nature News, The New York Times, and Popular Science.

In 2012, I worked with John Owens and David Luebke to develop the Introduction to Parallel Programming course at Udacity. 80,000 students from around the world have enrolled in the course.

Selected Publications

A complete list of my publications can be found on Google Scholar.

Generating Dynamically Feasible Trajectories For Quadrotor Cameras
Mike Roberts, Pat Hanrahan
ACM Transactions on Graphics 35(4) (SIGGRAPH 2016)

Featured in the SIGGRAPH 2016 Technical Papers Trailer.

An Interactive Tool for Designing Quadrotor Camera Shots
Niels Joubert*, Mike Roberts*, Anh Truong, Floraine Berthouzoz, Pat Hanrahan
ACM Transactions on Graphics 34(6) (SIGGRAPH Asia 2015)

* Authors contributed equally.

Featured in the SIGGRAPH Asia 2015 Technical Papers Trailer.

Saturated Reconstruction of a Volume of Neocortex
Narayanan Kasthuri, Kenneth Jeffrey Hayworth, Daniel Raimund Berger, Richard Lee Schalek,
Jose Angel Conchello, Seymour Knowles-Barley, Dongil Lee, Amelio Vazquez-Reina, Verena Kaynig,
Thouis Raymond Jones, Mike Roberts, Josh Lyskowski Morgan, Juan Carlos Tapia,
H. Sebastian Seung, William Gray Roncal, Joshua Tzvi Vogelstein, Randal Burns,
Daniel Lewis Sussman, Carey Eldin Priebe, Hanspeter Pfister, Jeff William Lichtman
Cell 162(3), 2015

Large-Scale Automatic Reconstruction of Neuronal Processes from Electron Microscopy Images
Verena Kaynig, Amelio Vazquez-Reina, Seymour Knowles-Barley, Mike Roberts, Thouis R. Jones,
Narayanan Kasthuri, Eric Miller, Jeff Lichtman, Hanspeter Pfister
Medical Image Analysis 22(1), 2015

Design and Evaluation of Interactive Proofreading Tools for Connectomics
Daniel Haehn, Seymour Knowles-Barley, Mike Roberts, Johanna Beyer, Narayanan Kasthuri,
Jeff W. Lichtman, Hanspeter Pfister
IEEE Transactions on Visualization and Computer Graphics 20(12) (SciVis 2014)

Neural Process Reconstruction from Sparse User Scribbles
Mike Roberts, Won-Ki Jeong, Amelio Vazquez-Reina, Markus Unger, Horst Bischof, Jeff Lichtman,
Hanspeter Pfister
Medical Image Computing and Computer Assisted Intervention (MICCAI) 2011

A Work-Efficient GPU Algorithm for Level Set Segmentation
Mike Roberts, Jeff Packer, Mario Costa Sousa, Joseph Ross Mitchell
High Performance Graphics 2010

Code and Data

IPython notebooks and other resources from my talk IPython is Great (for large-scale computation, data exploration, and creating reproducible research artifacts). The slides and IPython notebooks from my talk were featured in the 2013 Data Science course at Harvard.

G3DWidget is a Qt widget written in C++ that can host 3D rendering code from the G3D Innovation Engine. The G3DWidget class has been carefully designed so that multiple G3DWidget objects can coexist in the same application. Demo application included.

Easy-to-read C++/Python implementation of the shape matching pipeline in the paper Sketch-Based Shape Retrieval.

Easy-to-read Python/CUDA implementations of fundamental GPU computing primitives: map, reduce, prefix sum (scan), split, radix sort, and histogram. I use these primitives to construct easy-to-read implementations of the following image processing operations: Gaussian blurring, bilateral filtering, histogram equalization, red-eye removal, and seamless image cloning.

Easy-to-read Python implementation of the seamless image cloning method in the paper Poisson Image Editing. To solve the sparse least-squares problem arising in this method, I provide an implementation that uses the default scipy.sparse solver, as well as an implementation that uses a hand-written geometric Jacobi solver.


Before coming to Stanford, I used to DJ in front of hundreds of people every weekend. I was a resident at Dance Party Fridays at The Republik and MOJO Saturdays at The Bamboo Tiki Room in Calgary, Canada. The Republik and the Bamboo were voted the 2nd and 3rd best places to dance in the FFWD Best of Calgary 2010. More recently, I won a national DJing competition to perform at Glowchella 2013 in San Francisco.

I think of my sound as a funky chunky soul stomp bigbeat boogaloo mashup of timeless dance music, i.e., imagine what it would sound like if James Brown, Ray Charles, The Beatles, Fatboy Slim, and Daft Punk all took acid together and played a sweaty warehouse primetime party set at the Apollo Theater Harlem NYC circa 1969.