Shape from Shading Source Code

The Package

This program is packaged in shading.tar.Z


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