Operators |
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.
The Images.
The NormalField.
The Gradient.
The Albedo.
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
Operators |