| Operatoren |
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.
Gradientenfeld der Oberfläche.
Rekonstruiertes Höhenmodell.
Typ der Rekonstruktionsmethode.
Defaultwert: 'poisson'
Werteliste: 'fft_cyclic', 'poisson', 'rft_cyclic'
Namen der generischen Parameter.
Defaultwert: []
Werteliste: 'caching', 'optimize_speed'
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
| Operatoren |