Computational Photography

Work done as part of the CS 192-26 at UCB

What is Computational PHOTOGRAPHY?

How does your phone make panoramas? How does sharpening work on photoshop? How can you intelligently use the data encoded in images to enhance what our eye sees? In this series of projects supplied by the department, I worked through some of the fundamentals of computational imaging. Some of these ideas have been around longer than color cameras, and others use the cutting edge of the computer science field.

These projects, as posted here, are somewhat rough, as I attemped this class during a particularly harrowing semester. I've posted them here, however, so that what I did acomplish gets a platform, and so I have a place to put updates when I return to this code.

PROJECT 1: Image Alingment

In this warm-up project, we take black and white photos, taken with three color filters, and combine them to get color images in a time where there were no color cameras. Though the results are betufil color images, this project is specially focused on image aligment tactics.

See Project

Project 2: Filters and Frequencies

In this project, we look at the filters and frequencies that make up spatial information. We can use this information to blend images together, like the infamous orapple.

See Project

Project 3: Face Morphing

One of my favorite projects, face morhing allows us to use key points in facial structures to translate the color references onto a different structure. I demonstrate this with mine and my brothers faces.

See Project

Project 4: Image Mosaics

This project expands the idea of image morphing to identifying key features between photos. With this we can flatten a wall, or stitch photos together as in a panorama.

See Project

PROJECT 5: Neural Net Facial detection

A follow up to the face morph project, this looked at using neural nets, trained on the danish faces, to identify key features in the pictures we wanted to morph to.

See Project

Project 6: Final Project

This was two precanned projects focusing on tiling and dynamic range. The tiling problem is actually quite intersting for low storage graphics.

See Project