In this short assignment, you will implement calibrated photometric stereo as discussed in Lecture 20.
Run download.sh (or download the file linked within) and extract its contents into the data/ directory.
Implement calibrated_gray
, which takes a list of images and a matrix of light vectors and returns surface normals and albedos for the scene.
Implement calibrated_color
, which handles color images. You are free to handle the 3-channel case how you like. One approach given in the lecture slides is to solve for N using a single channel or grayscale image then solve for each albedo channel with N fixed. Another approach would be to compute normals and albedos for all three channels and average the normals together.
You should achieve results on cat
, lizard
, and tentacle_rendered
similar to the ones shown here.
There is no 597-only component of this project. Extra credit is available for implementing extensions, including:
tentacle_real
dataset is provided for testing with no known light directions. The light source intensity is constant over all images, so it should be possible to solve for an A matrix that removes the ambiguity in the decomposition.tentacle_real
images).python ps.py
generates at least the images corresponding to those shown in the Results section above.This assignment is out of 30 points. 20 points will be awarded for grayscale results, and 10 points for working color results. Deductions may be made for missing results, coding style, submission mechanics.