reconstruct_height_field_from_gradientT_reconstruct_height_field_from_gradientReconstructHeightFieldFromGradientReconstructHeightFieldFromGradient (Operator)

Name

reconstruct_height_field_from_gradientT_reconstruct_height_field_from_gradientReconstructHeightFieldFromGradientReconstructHeightFieldFromGradient — Rekonstruieren einer Oberfläche aus Oberflächengradienten.

Signatur

reconstruct_height_field_from_gradient(Gradient : HeightField : ReconstructionMethod, GenParamName, GenParamValue : )

Herror T_reconstruct_height_field_from_gradient(const Hobject Gradient, Hobject* HeightField, const Htuple ReconstructionMethod, const Htuple GenParamName, const Htuple GenParamValue)

void ReconstructHeightFieldFromGradient(const HObject& Gradient, HObject* HeightField, const HTuple& ReconstructionMethod, const HTuple& GenParamName, const HTuple& GenParamValue)

HImage HImage::ReconstructHeightFieldFromGradient(const HString& ReconstructionMethod, const HTuple& GenParamName, const HTuple& GenParamValue) const

HImage HImage::ReconstructHeightFieldFromGradient(const char* ReconstructionMethod, const HTuple& GenParamName, const HTuple& GenParamValue) const

HImage HImage::ReconstructHeightFieldFromGradient(const wchar_t* ReconstructionMethod, const HTuple& GenParamName, const HTuple& GenParamValue) const   (Nur Windows)

static void HOperatorSet.ReconstructHeightFieldFromGradient(HObject gradient, out HObject heightField, HTuple reconstructionMethod, HTuple genParamName, HTuple genParamValue)

HImage HImage.ReconstructHeightFieldFromGradient(string reconstructionMethod, HTuple genParamName, HTuple genParamValue)

Beschreibung

reconstruct_height_field_from_gradientreconstruct_height_field_from_gradientReconstructHeightFieldFromGradientReconstructHeightFieldFromGradientReconstructHeightFieldFromGradient rekonstruiert eine Oberfläche aus den Gradienten, die in GradientGradientGradientGradientgradient übergeben werden. Die Oberfläche wird als Höhenmodell zurückgegeben, d.h., die Grauwerte jedes einzelnen Bildpunktes entsprechen der relativen Höhe der Oberfläche.

Die Rekonstruktion erfolgt durch die Integration der Gradienten durch verschiedene Algorithmen, die im Parameter ReconstructionMethodReconstructionMethodReconstructionMethodReconstructionMethodreconstructionMethod ausgewählt werden können. Da Gradientenfelder typischerweise nicht integrierbar sind, z.B. aufgrund von Rauschen, liefern die verschiedenen zur Verfügung stehenden Algorithmen eine Lösung im Sinne der kleinsten Quadrate. Die verfügbaren Algorithmen unterscheiden sich in der Art, wie sie die Randbedingungen modellieren. Zur Zeit werden drei verschiedene Algorithmen unterstützt: 'fft_cyclic'"fft_cyclic""fft_cyclic""fft_cyclic""fft_cyclic", 'rft_cyclic'"rft_cyclic""rft_cyclic""rft_cyclic""rft_cyclic" und 'poisson'"poisson""poisson""poisson""poisson".

Rekonstruktion mittels schneller Fourier Transformation

Die Verfahren 'fft_cyclic'"fft_cyclic""fft_cyclic""fft_cyclic""fft_cyclic" und 'rft_cyclic'"rft_cyclic""rft_cyclic""rft_cyclic""rft_cyclic" nehmen an, dass die Bildfunktion an den Rändern zyklisch ist. Dies kann an den Bildrändern zu Artefakten führen, weswegen in den meisten Fällen die Rekonstruktion nach Poisson vorzuziehen ist.

Der Unterschied zwischen 'fft_cyclic'"fft_cyclic""fft_cyclic""fft_cyclic""fft_cyclic" und 'rft_cyclic'"rft_cyclic""rft_cyclic""rft_cyclic""rft_cyclic" ist, dass die rft Version eine schnellere Verarbeitungszeit hat und weniger Speicher benötigt als die fft Version. Dafür ist die fft Version, obwohl fft und rft eigentlich das gleiche Ergebnis liefern sollten, numerisch geringfügig genauer. Da reconstruct_height_field_from_gradientreconstruct_height_field_from_gradientReconstructHeightFieldFromGradientReconstructHeightFieldFromGradientReconstructHeightFieldFromGradient intern eine schnelle Fourier Transformation benutzt, kann die Laufzeit des Operators durch einen vorherigen Aufruf von optimize_fft_speedoptimize_fft_speedOptimizeFftSpeedOptimizeFftSpeedOptimizeFftSpeed oder optimize_rft_speedoptimize_rft_speedOptimizeRftSpeedOptimizeRftSpeedOptimizeRftSpeed beeinflusst werden.

Rekonstruktion nach Poisson

Der 'poisson'"poisson""poisson""poisson""poisson"-Algorithmus nimmt an, dass das Bild konstante Gradienten am Bildrand hat. In den meisten Fällen bietet er die geeignetere Rekonstruktionsmethode für reconstruct_height_field_from_gradientreconstruct_height_field_from_gradientReconstructHeightFieldFromGradientReconstructHeightFieldFromGradientReconstructHeightFieldFromGradient. Seine Laufzeit kann nur durch Setzen von GenParamNameGenParamNameGenParamNameGenParamNamegenParamName auf 'optimize_speed'"optimize_speed""optimize_speed""optimize_speed""optimize_speed" und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue auf 'standard'"standard""standard""standard""standard", 'patient'"patient""patient""patient""patient" oder 'exhaustive'"exhaustive""exhaustive""exhaustive""exhaustive" beeinflusst werden. Für die Bedeutung dieser Parameter sei auf die Beschreibung von optimize_fft_speedoptimize_fft_speedOptimizeFftSpeedOptimizeFftSpeedOptimizeFftSpeed verwiesen.

Der 'poisson'"poisson""poisson""poisson""poisson"-Algorithmus verwendet standardmäßig einen Cache, der von der Größe des Bildes abhängt und die Rekonstruktion deutlich beschleunigt, vorausgesetzt, alle zu verarbeitenden Bilder haben die gleiche Größe. Der Cache wird beim ersten Aufruf des 'poisson'"poisson""poisson""poisson""poisson"-Algorithmus aufgebaut. Deshalb benötigt der erste Aufruf immer länger als nachfolgende Aufrufe. Der zusätzlich benötigte Speicherplatz entspricht dem Speicher, der für ein Bild benötigt wird. Es ist zu beachten, dass der Aufruf des Operators mit verschiedenen Bildgrößen zum Reallokieren des Caches führt, was wiederum zu längeren Verarbeitungszeiten führt. In diesem Fall kann es von Vorteil sein, das Caching nicht zu verwenden. Zum Deaktivieren des Cachings kann der Parameter GenParamNameGenParamNameGenParamNameGenParamNamegenParamName auf 'caching'"caching""caching""caching""caching" und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue auf 'no_cache'"no_cache""no_cache""no_cache""no_cache" gesetzt werden. Der Cache kann explizit durch Setzen von GenParamNameGenParamNameGenParamNameGenParamNamegenParamName auf 'caching'"caching""caching""caching""caching" und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue auf 'free_cache'"free_cache""free_cache""free_cache""free_cache" deallokiert werden. In den meisten Fällen wird das Verwenden des Caches aber empfohlen, d.h., der Parameter 'caching'"caching""caching""caching""caching" kann ignoriert werden bzw. seinen Default-Wert beibehalten.

Speichern und Laden von Optimierungsparametern

Die Optimierungsparameter für alle Algorithmen können durch write_fft_optimization_datawrite_fft_optimization_dataWriteFftOptimizationDataWriteFftOptimizationDataWriteFftOptimizationData und read_fft_optimization_dataread_fft_optimization_dataReadFftOptimizationDataReadFftOptimizationDataReadFftOptimizationData gespeichert und geladen werden.

Nicht offensichtliche Anwendungen

reconstruct_height_field_from_gradientreconstruct_height_field_from_gradientReconstructHeightFieldFromGradientReconstructHeightFieldFromGradientReconstructHeightFieldFromGradient hat einige nicht offensichtliche Anwendungsfelder, insbesondere im Bereich der "gradient domain manipulation technique". In vielen Anwendungen haben die Werte der Gradienten, die dem Operator übergeben werden, nicht die Semantik von Oberflächengradienten (d.h., den ersten Ableitungen der Höhen) sondern entsprechen den ersten Ableitungen anderer Parametertypen, typischerweise Grauwerten. D.h., die Gradienten haben die Semantik von Grauwertkanten. Wenn diese Gradienten auf unterschiedliche Arten verarbeitet werden, z.B. durch das Addieren oder Subtrahieren von Bildern oder durch eine Filterung, werden die ursprünglichen Gradienten verändert und ein nachfolgender Aufruf von reconstruct_height_field_from_gradientreconstruct_height_field_from_gradientReconstructHeightFieldFromGradientReconstructHeightFieldFromGradientReconstructHeightFieldFromGradient liefert ein verändertes Bild, in dem z.B. unerwünschte Kanten entfernt wurden oder der Kontrast lokal geändert wurde. Typische Anwendungen sind das Entfernen von Rauschen, die nahtlose Verschmelzung von Bildern oder die HDR (high dynamic range) Kompression.

Achtung

reconstruct_height_field_from_gradient berücksichtigt die Werte aller Pixel von GradientGradientGradientGradientgradient, auch außerhalb seiner Region. Falls GradientGradientGradientGradientgradient einen eingeschränkten Definitionsbereich hat, könnte man den relevanten viereckigen Bereich ausschneiden und daraus ein neues Bild mit voller Region erzeugen.

Ausführungsinformationen

Parameter

GradientGradientGradientGradientgradient (input_object)  singlechannelimage objectHImageHImageHobject (vector_field)

Gradientenfeld der Oberfläche.

HeightFieldHeightFieldHeightFieldHeightFieldheightField (output_object)  image objectHImageHImageHobject * (real)

Rekonstruiertes Höhenmodell.

ReconstructionMethodReconstructionMethodReconstructionMethodReconstructionMethodreconstructionMethod (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Typ der Rekonstruktionsmethode.

Defaultwert: 'poisson' "poisson" "poisson" "poisson" "poisson"

Werteliste: 'fft_cyclic'"fft_cyclic""fft_cyclic""fft_cyclic""fft_cyclic", 'poisson'"poisson""poisson""poisson""poisson", 'rft_cyclic'"rft_cyclic""rft_cyclic""rft_cyclic""rft_cyclic"

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

Namen der generischen Parameter.

Defaultwert: []

Werteliste: 'caching'"caching""caching""caching""caching", 'optimize_speed'"optimize_speed""optimize_speed""optimize_speed""optimize_speed"

GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue (input_control)  integer-array HTupleHTupleHtuple (integer / real / string) (int / long / double / string) (Hlong / double / HString) (Hlong / double / char*)

Werte der generischen Parameter.

Defaultwert: []

Werteliste: 'exhaustive'"exhaustive""exhaustive""exhaustive""exhaustive", 'free_cache'"free_cache""free_cache""free_cache""free_cache", 'no_cache'"no_cache""no_cache""no_cache""no_cache", 'patient'"patient""patient""patient""patient", 'standard'"standard""standard""standard""standard", 'use_cache'"use_cache""use_cache""use_cache""use_cache"

Ergebnis

Sind die Parameterwerte korrekt, dann liefert reconstruct_height_field_from_gradientreconstruct_height_field_from_gradientReconstructHeightFieldFromGradientReconstructHeightFieldFromGradientReconstructHeightFieldFromGradient den Wert 2 (H_MSG_TRUE), sonst eine Fehlermeldung.

Literatur

M. Kazhdan, M. Bolitho, and H. Hoppe: „Poisson Surface Reconstruction.“ Symposium on Geometry Processing (June 2006).

Modul

3D Metrology