Computer
Vision (CSEP 576), Winter 2005
Project
3: Photometric Stereo
Uri
Finkel
The Buddha:
RGB-encoded Normals Normals Needle
Map Albedo
Map
Reconstructed surface #1 without albedos Reconstructed surface
#1 with albedos
Reconstructed surface #2 without albedos Reconstructed
surface #2 with albedos
The Horse:
RGB-encoded Normals Normals Needle Map Albedo Map
Reconstructed surface #1 without albedos Reconstructed
surface #1 with albedos
Reconstructed surface #2 without albedos Reconstructed
surface #2 with albedos
The Owl:
RGB-encoded Normals Normals
Needle Map
Albedo Map
Reconstructed surface #1 without albedos Reconstructed surface #1 with albedos
Reconstructed surface #2 without albedos
Reconstructed
surface #2 with albedos
Discussion of the results:
The resulting executable behaves identically to the sample executable.
This solution performs less-than-optimally when the given input is not so well prepared. The result will not be optimal when the surface is reflective. The solution does a fairly good job of skipping over changes in color and ignoring shadows, it still finds depth changes in places where there should be none. The solution struggles when there are quick depth-jumps in the image. For example, in the owl image, part of the beak covers the eye... and in the horse image, the legs overlap, both creating skewed results.
The Buddha model - the resultant model has a very distinct 3D representation. There were few shadows or consistently dark areas so the surface is pretty smooth.
The Horse model – the resultant model is less interesting perspectives because the horse's 3D shape is relatively two dimensional. This is due to the fact that the top and bottom curve of the horse's body are approaching a flat line.
The owl model – the resultant model has a very distinct 3D representation. However, in the left eye there are wild spikes coming out. This is due to the fact that this region is a smooth black surface that got a bit of highlight in the original images. These highlights cause a misinterpretation of the normal at that surface, and thus produced the spike effect. An optional way to mitigate this effect without a designing more complicated model might be to look in local windows and see if there are normals above or below a certain standard deviation. If so, remove them and make them similar to their neighbors.