CS194 Final Project: 
Light Field Camera & Imgae Quilting

Sainan Chen
12/9/2020

Introduction

In this final project, I implemented Image Quilting and Light Field Camera.

Image Quilting

Image Quilting is used for Texture Synthesis and Texture Transfer. Texture Synthesis means to stitch patches from a small repetitive texture sample together smoothly to produce a  larger texture image. Texture Transfer means applying a texture from 1 image to another image while prevsering the shape of objects in the second imgae.  

For Texture Synthesis, I will compare results of 3 different stitching strategies:
1. Randomly select patches from the sample to stitch;
2. Select patches with min Sum of Squared Difference between partically overlapped region;
3. On the base of (2), stitch 2 patches together through min-SSD cost path.

For Texture Transfer, I will try to apply different painting styles (Van Gogh, Picasso, Xu Beihong) to one painting (Japanese traditional painting). It's important to choose parameters, including the portions patch-patch stitching SSD and patch-shapeImage matching SSD take respectively in total SSD, tolerance SSD range for randomly choosing a patch, and most important, the patch size and overlap size for calculating patch-patch stitching SSD. I will compare the results of different patch sizes. 

Light Field Camera

Light Field Camera is a special camera that captures 4D light fields instead of 2D flat images. A light field contains light position and light direction. Therfore, with light direction saved, we can adjust focus length and aperture size after the photo is taken by a light field camera. It's surprising that actually we can  repoduce the effects of a light field camera using simple operations of 2D images.

In this project, I'm trying to mimic the pictures taken by a light field camera with varying focus length and aperture size using pictures taken by normal cameras from different positions on a plane orthogonal to the optical axis.