Photometric Stereo and Process

Introduction

The Photometric Stereo is a technique used to estimate the normals at the surface of an object In a general content, the term object should be understood with the meaning of a class instance. In EasyObject, an object is a maximally-sized area of adjacent connected pixels belonging to the layer foreground..

Photometric stereo setup
Source: https://www.researchgate.net/figure/Principle-of-photometric-stereo_fig7_222422584

It takes at least 3 images of the same object taken under different known light directions.

            

Inputs: images with different light directions

It produces an image containing the fraction of light reflected (called albedo) and the normal of the surface at each pixel.

    

Outputs: albedos - normals

The normals are processed to compute gradients and curvatures, allowing to easily see bumps and holes. You can also integrate the normals to compute the height map.

        

Outputs: gradients X - gradients Y - Gaussian curvatures

    

Outputs: mean curvatures - height map

Process

You can use the object Easy3D::PhotometricStereoImager in a 4-step process:

1. Calibrate the setup from a sphere or from predefined angles (once per setup).
2. Perform the photometric stereo computation on the object images.
3. Retrieve the results.
4. Use and apply the Open eVision tools on the results.

Photometric stereo process

Resources

The example described here demonstrates how to perform photometric stereo with Open eVision 3D libraries and tools.
A sample application is also distributed with the source code. You can find it in …\Sample Programs\MsVc samples\3D Processing\Easy3DPhotometricStereo.
This example and the sample application are based on the following resources:
Open eVision 2.15
Microsoft Visual Studio 2017

The license for Easy3D is necessary to use the photometric stereo tools.