Shape from Shading Source Code
This program is packaged in
In this paper, we present an extremely simple algorithm for shape from
shading, which can be implemented in 25 lines of C code (code included),
and which converges in one to two iterations.
The algorithm is very fast, taking .2 seconds
on a Sun SparcStation-1 for a
128 x 128 image, and is purely local and highly parallelizable
(parallel implementation included). The algorithm gives a solution which
is proveably convergent and unique, and is general in that it works for
both the Lambertian and Specular reflectance functions. In our approach, we
employ a linear approximation of the reflectance function, as used by others.
However, the major difference is that we first use the discrete approximations f
surface normal, p and q,
using finite differences, and
then linearize the reflectance function
in depth, Z(x,y),
instead of p and q.
The algorithm has been
tested on several synthetic and real images of both Lambertian and
specular surfaces, and good results have been obtained.
It gives good results even for the spherical surfaces, in contrast to
other linear methods.
What's In It
Program Name: shading
Output: The output data file (the estimated depth map) can
be display using xprism3, part of Khoros, or any
other 3-D plotting program.
The Technical Report
The algorithm is described in Technical Report fSFS.ps.gz