ClassesClasses | | Operators

uncalibrated_photometric_stereoT_uncalibrated_photometric_stereoUncalibratedPhotometricStereoUncalibratedPhotometricStereo (Operator)

Name

uncalibrated_photometric_stereoT_uncalibrated_photometric_stereoUncalibratedPhotometricStereoUncalibratedPhotometricStereo — Reconstruct a surface from several, differently illuminated images.

Signature

uncalibrated_photometric_stereo(Images : NormalField, Gradient, Albedo : ResultType : )

Herror T_uncalibrated_photometric_stereo(const Hobject Images, Hobject* NormalField, Hobject* Gradient, Hobject* Albedo, const Htuple ResultType)

void UncalibratedPhotometricStereo(const HObject& Images, HObject* NormalField, HObject* Gradient, HObject* Albedo, const HTuple& ResultType)

HImage HImage::UncalibratedPhotometricStereo(HImage* Gradient, HImage* Albedo, const HTuple& ResultType) const

static void HOperatorSet.UncalibratedPhotometricStereo(HObject images, out HObject normalField, out HObject gradient, out HObject albedo, HTuple resultType)

HImage HImage.UncalibratedPhotometricStereo(out HImage gradient, out HImage albedo, HTuple resultType)

Description

uncalibrated_photometric_stereouncalibrated_photometric_stereoUncalibratedPhotometricStereoUncalibratedPhotometricStereoUncalibratedPhotometricStereo can be used to extract high-frequency surface details from a given object with no prior knowledge about the illumination, geometry and reflectance of the object. This operator is related to photometric_stereophotometric_stereoPhotometricStereoPhotometricStereoPhotometricStereo but doesn't depend on a calibrated setup. However, for sensible results an orthographic projection is assumed.

Under this constraint, the surface normals and light directions can be obtained up to a Generalized Bas-Relief (GBR) ambiguity by computing a singular value decomposition (SVD) of the image data matrix, imposing that its rank is 3.

The operator requires at least three images of the same object, taken with a static, non-moving camera and different lighting directions for each image. For best results, the object should exhibit Lambertian reflection properties, no inter-reflection or shadow castings.

Execution Information

Parameters

ImagesImagesImagesImagesimages (input_object)  singlechannelimage(-array) objectHImageHImageHobject (byte / uint2)

The Images.

NormalFieldNormalFieldNormalFieldNormalFieldnormalField (output_object)  image(-array) objectHImageHImageHobject * (real)

The NormalField.

GradientGradientGradientGradientgradient (output_object)  image objectHImageHImageHobject * (vector_field)

The Gradient.

AlbedoAlbedoAlbedoAlbedoalbedo (output_object)  image objectHImageHImageHobject * (real)

The Albedo.

ResultTypeResultTypeResultTypeResultTyperesultType (input_control)  string-array HTupleHTupleHtuple (string) (string) (HString) (char*)

The Result type.

Default value: 'all' "all" "all" "all" "all"

List of values: [], 'albedo'"albedo""albedo""albedo""albedo", 'all'"all""all""all""all", 'gradient'"gradient""gradient""gradient""gradient", 'normal_field'"normal_field""normal_field""normal_field""normal_field", 'normalized_gradient'"normalized_gradient""normalized_gradient""normalized_gradient""normalized_gradient"

Example (HDevelop)

* read severally illuminated images
FName := 'photometric_stereo/pharma_braille_0' + [1:4] + '.png'
read_image(Images, FName)
* extract surface normals, gradients and albedo from images
uncalibrated_photometric_stereo(Images, NormalField, Gradient, Albedo, 'all')
derivate_vector_field (Gradient, Result, 0.1, 'mean_curvature')
reconstruct_height_field_from_gradient (Gradient, HeightField, 'poisson', [], [])

Result

The operator uncalibrated_photometric_stereouncalibrated_photometric_stereoUncalibratedPhotometricStereoUncalibratedPhotometricStereoUncalibratedPhotometricStereo returns the NormalFieldNormalFieldNormalFieldNormalFieldnormalField for the given images as well as the appropriate gradients for each pixel and the AlbedoAlbedoAlbedoAlbedoalbedo of the object.

Alternatives

photometric_stereophotometric_stereoPhotometricStereoPhotometricStereoPhotometricStereo

See also

photometric_stereophotometric_stereoPhotometricStereoPhotometricStereoPhotometricStereo

Module

3D Metrology


ClassesClasses | | Operators