uncalibrated_photometric_stereo
— Reconstruct a surface from several, differently illuminated images.
uncalibrated_photometric_stereo(Images : NormalField, Gradient, Albedo : ResultType : )
uncalibrated_photometric_stereo
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_stereo
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.
Images
(input_object) singlechannelimage(-array) →
object (byte / uint2)
The Images.
NormalField
(output_object) image(-array) →
object (real)
The NormalField.
Gradient
(output_object) image →
object (vector_field)
The Gradient.
Albedo
(output_object) image →
object (real)
The Albedo.
ResultType
(input_control) string-array →
(string)
The Result type.
Default value: 'all'
List of values: [], 'albedo' , 'all' , 'gradient' , 'normal_field' , 'normalized_gradient'
* 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', [], [])
The operator uncalibrated_photometric_stereo
returns the
NormalField
for the given images as well as the appropriate
gradients for each pixel and the Albedo
of the object.
3D Metrology