Photometric Stereo

This project was fairly straightforward. The depth computation took the longest. I did not seem to run into any of the not-a-number issues that some others did, although the sparse matrix destructor does take some time in debug mode. Also, my numbers (lighting for example) are slightly off due to what I'm assuming are rounding errors.
Overall the depth recovery algorithm works quite well, except at the edges. The surface is discontinuous and we ignore pixels that have no neighbors, so actually the image is missing the entire outer 1-pixel wide edge. One possible fix for this would be to attempt to fit a curve to this part of the surface and read points off that curve. Of course, the likelihood that a pixel is actually on that curve will decrease substantially with distance. When viewing the edges, one could also apply some kind of gaussian to the normals to smooth the appearance.

Artifacts

Click to enlarge
  Needle Normals Albedo Surface Surface Surface w/albedo Surface w/albedo
Buddha
Cat
Rock

liebling -at- cs.washington.edu