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()