uncalibrated_photometric_stereoT_uncalibrated_photometric_stereoUncalibratedPhotometricStereoUncalibratedPhotometricStereouncalibrated_photometric_stereo (Operator)

Name

uncalibrated_photometric_stereoT_uncalibrated_photometric_stereoUncalibratedPhotometricStereoUncalibratedPhotometricStereouncalibrated_photometric_stereo — Rekonstruieren einer Oberfläche von mehreren, unterschiedlich beleuchteten Bildern.

Signatur

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)

def uncalibrated_photometric_stereo(images: HObject, result_type: Sequence[str]) -> Tuple[HObject, HObject, HObject]

Beschreibung

Der Operator uncalibrated_photometric_stereouncalibrated_photometric_stereoUncalibratedPhotometricStereoUncalibratedPhotometricStereoUncalibratedPhotometricStereouncalibrated_photometric_stereo kann benutzt werden um die feinen Details einer Oberfläche eines gegebenen Objektes zu extrahieren, ohne dass man Wissen über die Beleuchtung, Geometrie und Spiegelungseigenschaften des Objektes hat. Die Geometrien von Interesse können z.B. Dellen, Falten oder Kratzer sein. Der Operator kann normalerweise nicht verwendet werden, um die allgemeine Form eines Objektes zu vermessen. Der Operator liefert die Normalen der Oberfläche in NormalFieldNormalFieldNormalFieldNormalFieldnormalFieldnormal_field als ein 3-kanaliges Bild, wobei jedes Bild eine Komponente der Normalen kodiert. Dieses Bild wird für die Visualisierung des Ergebnisses als farbkodiertes Bild verwendet. Außerdem werden die Gradienten und die Albedo der Objektoberfläche in GradientGradientGradientGradientgradientgradient bzw. AlbedoAlbedoAlbedoAlbedoalbedoalbedo zurückgegeben. Welches Ergebnis berechnet werden soll kann mit Hilfe von ResultTypeResultTypeResultTypeResultTyperesultTyperesult_type eingestellt werden. Dieser Operator ist ähnlich zu photometric_stereophotometric_stereoPhotometricStereoPhotometricStereoPhotometricStereophotometric_stereo, benötigt jedoch keine kalibrierten Lichtrichtungen. Es ist zu beachten, dass photometric_stereophotometric_stereoPhotometricStereoPhotometricStereoPhotometricStereophotometric_stereo schneller und genauer ist, aber die Lichtrichtungen bekannt sein müssen. Für sinnvolle Ergebnisse muss, sowohl für den kalibrierten wie auch den unkalibrierten Fall, eine orthografische Projektion der Kamera angenommen werden. Dies wird erreicht, indem ein telezentrisches Objektiv oder zumindest ein Objektiv mit langer Brennweite verwendet wird.

Der Operator benötigt mindestens drei unterschiedlich beleuchtete Bilder eines Objekts, welches mit einer statischen Kamera aufgenommen wurde und für jedes Bild eine unterschiedliche Beleuchtungsrichtung. Die besten Resultate werden erzielt, wenn das Objekt sog. Lambert'sche Reflexionseigenschaften und keine Reflexionen oder Schattenwurf aufweist.

Ausführungsinformationen

Parameter

ImagesImagesImagesImagesimagesimages (input_object)  singlechannelimage(-array) objectHImageHObjectHImageHobject (byte / uint2)

Eingabebilder mit jeweils unterschiedlicher Beleuchtungsrichtung.

NormalFieldNormalFieldNormalFieldNormalFieldnormalFieldnormal_field (output_object)  image(-array) objectHImageHObjectHImageHobject * (real)

Oberflächennormalen pro Pixel.

GradientGradientGradientGradientgradientgradient (output_object)  image objectHImageHObjectHImageHobject * (vector_field)

Gradienten der Oberfläche in x,y Richtung.

AlbedoAlbedoAlbedoAlbedoalbedoalbedo (output_object)  image objectHImageHObjectHImageHobject * (real)

Anteil der Strahlung, der von der Oberfläche reflektiert wird.

ResultTypeResultTypeResultTypeResultTyperesultTyperesult_type (input_control)  string-array HTupleSequence[str]HTupleHtuple (string) (string) (HString) (char*)

Zu berechnende ikonische Ergebnisse.

Defaultwert: 'all' "all" "all" "all" "all" "all"

Werteliste: [], 'albedo'"albedo""albedo""albedo""albedo""albedo", 'all'"all""all""all""all""all", 'gradient'"gradient""gradient""gradient""gradient""gradient", 'normal_field'"normal_field""normal_field""normal_field""normal_field""normal_field", 'normalized_gradient'"normalized_gradient""normalized_gradient""normalized_gradient""normalized_gradient""normalized_gradient"

Beispiel (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', \
                                        [], [])

Ergebnis

Sind die Parameterwerte korrekt, dann liefert uncalibrated_photometric_stereouncalibrated_photometric_stereoUncalibratedPhotometricStereoUncalibratedPhotometricStereoUncalibratedPhotometricStereouncalibrated_photometric_stereo den Wert TRUE, sonst eine Fehlermeldung.

Alternativen

photometric_stereophotometric_stereoPhotometricStereoPhotometricStereoPhotometricStereophotometric_stereo

Siehe auch

photometric_stereophotometric_stereoPhotometricStereoPhotometricStereoPhotometricStereophotometric_stereo

Literatur

H. Hayakawa: „Photometric stereo under a light source with arbitrary motion“. Journal Optical Society America, Vol. 11, No. 11/November 1994.

Modul

3D Metrology