uncalibrated_photometric_stereo
— Rekonstruieren einer Oberfläche von mehreren, unterschiedlich beleuchteten
Bildern.
uncalibrated_photometric_stereo(Images : NormalField, Gradient, Albedo : ResultType : )
Der Operator uncalibrated_photometric_stereo
liefert ein
NormalField
für die übergebenen Bilder, sowie die Gradienten pro
Pixel und das Albedo
des Objekts.
Der Operator kann dazu verwendet werden, um feine Oberflächenstrukturen eines
Objekts ohne Vorwissen über die jeweilige Beleuchtungsrichtung während der
Aufnahme, die Geometrie oder die Reflektionseigenschaften des Objekts
sichtbar zu rekonstruieren. Dieser Operator ist ähnlich zu
photometric_stereo
, benötigt jedoch keine kalibrierten
Lichtrichtungen. Diese werden durch das Verfahren implizit bestimmt.
Das Verfahren geht von einer orthographischen Projektion aus. Unter dieser Annahme kann die pixelweise lokale Ausrichtung eines Objekts bis auf eine sog. Generalized Bas-Relief (GBR) Unbestimmtheit rekonstruiert werden. Dies geschieht über eine Singulärwertzerlegung einer Bildmatrix, deren Spalten jeweils die Intensitäten eines beleuchteten Bilds enthält.
Der Operator benötigt mindestens drei unterschiedlich beleuchtete Bilder eines Objekts, welches mit einer statischen Kamera aufgenommen wurde. Die besten Resultate werden erzielt, wenn das Objekt sog. Lambert'sche Reflektionseigenschaften und kein Schattierungen aufweist.
Images
(input_object) singlechannelimage(-array) →
object (byte / uint2)
Eingabebilder.
NormalField
(output_object) image(-array) →
object (real)
Oberflächennormalen pro Pixel.
Gradient
(output_object) image →
object (vector_field)
Gradienten in x,y Richtung.
Albedo
(output_object) image →
object (real)
Anteil der Strahlung, der von der Oberfläche reflektiert wird.
ResultType
(input_control) string-array →
(string)
Zu berechnende ikonische Ergebnisse.
Defaultwert: 'all'
Werteliste: [], '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', [], [])
Sind die Parameterwerte korrekt, dann liefert
uncalibrated_photometric_stereo
den Wert 2 (H_MSG_TRUE), sonst eine
Fehlermeldung.
3D Metrology