CSEP 576 Project 3 -- Photometric Stereo

Rui Jiang

Whistle implemented - Surface smoothing

I have implemented surface smoothing. After generating depth, you can smooth the surface by select menu "Solve->Smooth Depth". What it does is to use a 5X5 Gaussian filter on the generated depth map. You can click it multiple times to smooth more.

So far this feature seems useful on the edges where depth changes dramatically. It can be seen clearly from following images.

Discussion

My program works pretty well just as the sample solution. I found that a common drawback of this method is that, albedo map around dark areas is usually not calculated accurately. e.g., under the neck of the cat, there's a highlighted albedo map, which is apparently not quite true. The reason is that in the lighting condition, normals around those area have large angles with the lights, thus even if there is large error in albedo, the resulting actual brightness of those pixels would still be close to the actual picture we have.

To solve this problem, I think we can calculate relative albedo error of each "pixel", that, under these errors we would still get a close image as the original picture. Then we can smooth the areas where errors are high, so that it won't deviate from the surroundings too much. I would try to implement this idea if I had enough time...

Also, there tends to be discontinuous change in depth near the edges. I think we can improve the looking by clipping edge areas.

Cat

RGB Normal Needle map Albedo map
View 1 Smoothed surface View 1 w/ albedo
View 2 Smoothed surface View 2 w/ albedo

Horse

RGB Normal Needle map Albedo map
View 1 View 1 w/ albedo Smoothed w/ albedo
View 2 View 2 w/ albedo Smoothed w/ albedo

Owl

RGB Normal Needle map Albedo map
View 1 Smoothed surface View 1 w/ albedo
View 2 Smoothed surface View 2 w/ albedo