Assignment 3

This assignment has several parts, all involving use of the same scene, while changing the lighting. First we produce an image with hte light coming from all angles (minimal shadows). Then we give images with different lighting different weights, and produces an image with lovely colored lighting (using only one plain white bulb). Finally, we use the movement of shadows between our images to try and find edges.

As usual, first we have the input images for the provided dataset.

Now for an image, produces from the above, that has minimal shadows. To get this image, I took from each of the above images the pixel in the approriate location that was at the 85th precentile of intensity. Why not the max? While that would eliminate shadows, it would also give me every single specular highlight on the statue, making it hard to see the details.

Now lets play with the lights. To produce this image, I first removed all but one color channel from each image above, then produces a linear combination of the image with random weights, tweaked until it looked pretty.

Next, we have the results of edge detection using the shadows. First, the confidence image produced as an intermediate result, followed by the edge map, and the edge map overlayed onto the image to produce a cartoonish rendering.

Now lets look at the pictures I captured myself. These are photos of some of my stuffed animals, My Pet Monster, and The Blue Haired Orange Lump. Here are the input images.

Now for the "no shadow image". This time I used the 90th percentile, because these images were a bit darker.

Pretty good, although some shadows remain, particularly near the monster's underarm (not much light got there in any shot). Also slightly blurry, as it is remarkably difficult to get mosnters to stand still. There is also an artifact from the cord I had to use on one shot to get lighting from above them. Next lets play with the colors of the lights!

Atlast, here is the result of attempting to use the movement of the shadows to find depth edges. First, the 1 - the confidence image produced as an intermediate step in the algorithm, followed by the edge map. Then, we take 1-edge map, and multiply each color channel in the "shadow free" image to produce a cartoonish rendering.

Why does Blue Haired Orange Lump show up so much better than My Pet Monster? Because he's much less fuzzy, and therefore has fewer significant changes in depth.

Finally, we have the Matlab code used to produce the images above.

prctile_comp.m Takes a list of images, and a percentile p. Returns in image where each pixel i,j is the pth percentile of the pixels at that location in the list.

crazy_lights.m Takes a list of images n images long, a n by 3 color weight matrix, and a list of image weights. First, the colors of each image p are weighted by the values in row p of the color weight matrix. Then, after color weighting, the resulting image is a linear combination of all the images using the image weights.

FindDepthEdges.mVery slightly modified code provided by Ramesh Raskar