reconstruct_height_field_from_gradient
— Rekonstruieren einer Oberfläche aus Oberflächengradienten.
reconstruct_height_field_from_gradient(Gradient : HeightField : ReconstructionMethod, GenParamName, GenParamValue : )
reconstruct_height_field_from_gradient
rekonstruiert eine
Oberfläche aus den Gradienten, die in Gradient
ü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 ReconstructionMethod
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' , 'rft_cyclic' und 'poisson' .
Rekonstruktion mittels schneller Fourier Transformation
Die Verfahren 'fft_cyclic' und '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' und '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_gradient
intern
eine schnelle Fourier Transformation benutzt, kann die Laufzeit des Operators
durch einen vorherigen Aufruf von optimize_fft_speed
oder
optimize_rft_speed
beeinflusst werden.
Rekonstruktion nach Poisson
Der '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_gradient
. Seine Laufzeit kann nur durch
Setzen von GenParamName
auf 'optimize_speed' und
GenParamValue
auf 'standard' , 'patient' oder
'exhaustive' beeinflusst werden. Für die Bedeutung dieser Parameter
sei auf die Beschreibung von optimize_fft_speed
verwiesen.
Der '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' -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 GenParamName
auf 'caching' und
GenParamValue
auf 'no_cache' gesetzt werden. Der Cache kann
explizit durch Setzen von GenParamName
auf 'caching' und
GenParamValue
auf 'free_cache' deallokiert werden. In den
meisten Fällen wird das Verwenden des Caches aber empfohlen, d.h., der
Parameter '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_data
und read_fft_optimization_data
gespeichert und geladen werden.
Nicht offensichtliche Anwendungen
reconstruct_height_field_from_gradient
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_gradient
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.
reconstruct_height_field_from_gradient berücksichtigt die Werte aller
Pixel von Gradient
, auch außerhalb seiner Region. Falls
Gradient
einen eingeschränkten Definitionsbereich hat, könnte
man den relevanten viereckigen Bereich ausschneiden und daraus ein neues
Bild mit voller Region erzeugen.
Gradient
(input_object) singlechannelimage →
object (vector_field)
Gradientenfeld der Oberfläche.
HeightField
(output_object) image →
object (real)
Rekonstruiertes Höhenmodell.
ReconstructionMethod
(input_control) string →
(string)
Typ der Rekonstruktionsmethode.
Defaultwert: 'poisson'
Werteliste: 'fft_cyclic' , 'poisson' , 'rft_cyclic'
GenParamName
(input_control) string-array →
(string)
Namen der generischen Parameter.
Defaultwert: []
Werteliste: 'caching' , 'optimize_speed'
GenParamValue
(input_control) integer-array →
(integer / real / string)
Werte der generischen Parameter.
Defaultwert: []
Werteliste: 'exhaustive' , 'free_cache' , 'no_cache' , 'patient' , 'standard' , 'use_cache'
Sind die Parameterwerte korrekt, dann liefert
reconstruct_height_field_from_gradient
den Wert 2 (H_MSG_TRUE), sonst eine
Fehlermeldung.
M. Kazhdan, M. Bolitho, and H. Hoppe: „Poisson Surface Reconstruction.“ Symposium on Geometry Processing (June 2006).
3D Metrology