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 |
|
|
|
|