Photometric stereo is a technique in computer vision for estimating the surface normals of objects by observing that object under different lighting conditions (photometry). It is based on the fact that the amount of light reflected by a surface is dependent on the orientation of the surface in relation to the light source and the observer. By measuring the amount of light reflected into a camera, the space of possible surface orientations is limited. Given enough light sources from different angles, the surface orientation may be constrained to a single orientation or even overconstrained.
 The technique was originally introduced by Woodham in 1980.  The special case where the data is a single image is known as shape from shading, and was analyzed by B. K. P. Horn in 1989. Photometric stereo has since been generalized to many other situations, including extended light sources and non-Lambertian surface finishes.  Current research aims to make the method work in the presence of projected shadows, highlights, and non-uniform lighting.
 Under Woodham's original assumptions — Lambertian reflectance, known point-like distant light sources, and uniform albedo — the problem can be solved by inverting the linear equation 
  
    
      
        I
        =
        L
        ⋅
        n
      
    
    {\displaystyle I=L\cdot n}
  
, where 
  
    
      
        I
      
    
    {\displaystyle I}
  
 is a (known) vector of 
  
    
      
        m
      
    
    {\displaystyle m}
  
 observed intensities, 
  
    
      
        n
      
    
    {\displaystyle n}
  
 is the (unknown) surface normal, and 
  
    
      
        L
      
    
    {\displaystyle L}
  
 is a (known) 
  
    
      
        3
        ×
        m
      
    
    {\displaystyle 3\times m}
  
 matrix of normalized light directions.
 This model can easily be extended to surfaces with non-uniform albedo, while keeping the problem linear. Taking an albedo reflectivity of 
  
    
      
        k
      
    
    {\displaystyle k}
  
, the formula for the reflected light intensity becomes:
 If 
  
    
      
        L
      
    
    {\displaystyle L}
  
 is square (there are exactly 3 lights) and non-singular, it can be inverted, giving:
 Since the normal vector is known to have length 1, 
  
    
      
        k
      
    
    {\displaystyle k}
  
 must be the length of the vector 
  
    
      
        k
        n
      
    
    {\displaystyle kn}
  
, and 
  
    
      
        n
      
    
    {\displaystyle n}
  
 is the normalised direction of that vector.
If 
  
    
      
        L
      
    
    {\displaystyle L}
  
 is not square (there are more than 3 lights), a generalisation of the inverse can be obtained using the Moore–Penrose pseudoinverse, by simply multiplying both sides with 
  
    
      
        
          L
          
            T
          
        
      
    
    {\displaystyle L^{T}}
  
 giving:
 After which the normal vector and albedo can be solved as described above.
 The classical photometric stereo problem concerns itself only with Lambertian surfaces, with perfectly diffuse reflection. This is unrealistic for many types of materials, especially metals, glass and smooth plastics, and will lead to aberrations in the resulting normal vectors.
 Many methods have been developed to lift this assumption. In this section, a few of these are listed.
 Historically, in computer graphics, the commonly used model to render surfaces started with Lambertian surfaces and progressed first to include simple specular reflections. Computer vision followed a similar course with photometric stereo. Specular reflections were among the first deviations from the Lambertian model. These are a few adaptations that have been developed.
 According to the Bidirectional reflectance distribution function (BRDF) model, a surface may distribute the amount of light it receives in any outward direction. This is the most general known model for opaque surfaces. Some techniques have been developed to model (almost) general BRDFs. In practice, all of these require many light sources to obtain reliable data. These are methods in which surfaces with general BRDFs can be measured.
 Some progress has been made towards modelling an even more general surfaces, such as Spatially Varying Bidirectional Distribution Functions (SVBRDF), Bidirectional surface scattering reflectance distribution functions (BSSRDF), and accounting for interreflections. However, such methods are still fairly restrictive in photometric stereo. Better results have been achieved with structured light.