Using Photometric Stereo

using Euresys.Open_eVision;
using Euresys.Open_eVision.Easy3D;

static partial class Snippet
{
  static void PhotometricStereo()
  {
    //////////////////////////////////////////////////
    // The code shows how to use Photometric Stereo //
    // from calibration to retrieve the results     //
    //////////////////////////////////////////////////

    EPhotometricStereoImager photometricStereo = new EPhotometricStereoImager();

    EImageBW8[] calibrationImages = new EImageBW8[4];
    // Load calibration images (Todo)
    EROIBW8[] calibrationROIs = new EROIBW8[4];
    // Set the calibration ROIs (Todo)

    // Calibrate
    float score = photometricStereo.CalibrateFromSphere(calibrationROIs);

    EImageBW8[] objectImages = new EImageBW8[4];
    // Load object images in the same order than the calibration images/angles (Todo)

    EROIBW8[] objectROIs = new EROIBW8[4];
    // Set the object ROIs (Todo)

    // Compute
    photometricStereo.Compute(objectROIs);

    // Retrieve the results
    EImageC24 normals = photometricStereo.Normals;
    EImageBW8 albedos = photometricStereo.GetAlbedos(EPhotometricStereoContrast.HighContrast);
    EImageBW8 gradientsX = photometricStereo.GradientsX;
    EImageBW8 gradientsY = photometricStereo.GradientsY;
    EImageBW8 gaussianCurvatures = photometricStereo.ComputeGaussianCurvatures(EPhotometricStereoContrast.HighContrast);
    EImageBW8 meanCurvatures = photometricStereo.ComputeMeanCurvatures(EPhotometricStereoContrast.HighContrast);
    EZMap8 heightMap = photometricStereo.ComputeHeightMap();
  }

}
#include <Open_eVision.h>

void PhotometricStereo()
{
  //////////////////////////////////////////////////
  // The code shows how to use Photometric Stereo //
  // from calibration to retrieve the results     //
  //////////////////////////////////////////////////
  using namespace Euresys::Open_eVision;
  using namespace Euresys::Open_eVision::Easy3D;

  EPhotometricStereoImager photometricStereo;

  std::vector<EImageBW8> calibrationImages;
  // Load calibration images (Todo)
  std::vector<EROIBW8> calibrationROIs;
  // Set the calibration ROIs (Todo)

  // Calibrate
  float score = photometricStereo.CalibrateFromSphere(calibrationROIs);

  std::vector<EImageBW8> objectImages;
  // Load object images in the same order than the calibration images/angles (Todo)

  std::vector<EROIBW8> objectROIs;
  // Set the object ROIs (Todo)

  // Compute
  photometricStereo.Compute(objectROIs);

  // Retrieve the results
  EImageC24 normals = photometricStereo.GetNormals();
  EImageBW8 albedos = photometricStereo.GetAlbedos(Easy3D::EPhotometricStereoContrast_HighContrast);
  EImageBW8 gradientsX = photometricStereo.GetGradientsX();
  EImageBW8 gradientsY = photometricStereo.GetGradientsY();
  EImageBW8 gaussianCurvatures = photometricStereo.ComputeGaussianCurvatures(Easy3D::EPhotometricStereoContrast_HighContrast);
  EImageBW8 meanCurvatures = photometricStereo.ComputeMeanCurvatures(Easy3D::EPhotometricStereoContrast_HighContrast);
  EZMap8 heightMap = photometricStereo.ComputeHeightMap();
}
def PhotometricStereo():
    ##################################################
    ## The code shows how to use Photometric Stereo ##
    ## from calibration to retrieve the results     ##
    ##################################################
    import open_evision as oev
    from open_evision import Easy3D
    photometric_stereo = Easy3D.EPhotometricStereoImager()

    calibration_images = [oev.EImageBW8(), oev.EImageBW8(),
        oev.EImageBW8(), oev.EImageBW8()]
    # Load calibration images (Todo)
    calibration_rois = [oev.EROIBW8(), oev.EROIBW8(),
        oev.EROIBW8(), oev.EROIBW8()]
    # Set the calibration ROIs (Todo)

    # Calibrate
    score = photometric_stereo.CalibrateFromSphere(calibration_rois)

    object_images = [oev.EImageBW8(), oev.EImageBW8(),
        oev.EImageBW8(), oev.EImageBW8()]
    # Load object images in the same order than the calibration images/angles (Todo)

    object_rois = [oev.EROIBW8(), oev.EROIBW8(),
        oev.EROIBW8(), oev.EROIBW8()]
    # Set the object ROIs (Todo)

    # Compute
    photometric_stereo.Compute(object_rois)

    # Retrieve the results
    normals = photometric_stereo.Normals
    albedos = photometric_stereo.GetAlbedos(Easy3D.EPhotometricStereoContrast.HighContrast)
    gradientsX = photometric_stereo.GradientsX
    gradientsY = photometric_stereo.GradientsY
    gaussian_curvatures = photometric_stereo.ComputeGaussianCurvatures(Easy3D.EPhotometricStereoContrast.HighContrast)
    mean_curvatures = photometric_stereo.ComputeMeanCurvatures(Easy3D.EPhotometricStereoContrast.HighContrast)
    height_map = photometric_stereo.ComputeHeightMap()