smooth_object_model_3dT_smooth_object_model_3dSmoothObjectModel3dSmoothObjectModel3dsmooth_object_model_3d — Glätten von 3D-Punkten eines 3D-Objektmodells.
Für jeden Punkt P berechnet der MLS-Algorithmus eine Ebene oder
eine Oberfläche höherer Ordnung, welche optimal an die
k-Nachbarschaft des Punktes (d.h. die nächsten
k Nachbarn) angepasst wird. Das Oberflächenfitting ist
im Wesentlichen als gewichtete Methode der kleinsten Quadraten für
die Schätzung der Ebene- bzw. Oberflächenparameter implementiert.
Die nächsten Nachbarn von P haben einen größeren Einfluss auf die
Parameterschätzung als die ferneren Punkte. Dieser Einfluss wird durch
die folgende Gewichtungsfunktion und der Parameter
gesteuert:
Der Punkt wird dann auf die Oberfläche projiziert. Dieses Verfahren
wird für jeden einzelnen Punkt wiederholt, was in einem geglätteten
Punktsatz resultiert. Die Punkte auf der gefitteten Oberflächen haben
leicht zu berechnende Normalen (d.h. die Normalen können direkt aus
den jeweiligen Oberflächenparametern berechnet werden). Folglich werden
die Punkte nicht nur geglättet, sondern als Nebeneffekt des Glättens
bekommen sie eine Schätzung für ihre Normalen.
Setzt den Gewichtungsparameter als Festwert
in Meter. Der auszuwählende Wert hängt stark vom Maßstab der eingegebenen
Punktdaten ab. Als Faustregel sollte man einen Wert für
wählen, der dem typischen Abstand jedes Punktes
P zu seinem k/2. (mittleren) Nachbarn
entspricht. Es ist zu beachten, dass, wenn die Daten
eine variierende Dichte haben, das Setzen eines Festwerts für
zu ungleichen Glättungsergebnissen für
Bereiche unterschiedlicher Punktdichte führt. Dieses Problem kann
umgegangen werden, indem man statt 'mls_abs_sigma'"mls_abs_sigma""mls_abs_sigma""mls_abs_sigma""mls_abs_sigma""mls_abs_sigma" den Parameter
'mls_relative_sigma'"mls_relative_sigma""mls_relative_sigma""mls_relative_sigma""mls_relative_sigma""mls_relative_sigma" benutzt. Letzterer ist unabhängig vom
Maßstab und deswegen auch einfacher zu bedienen.
Es sollte allerdings auch beachtet werden, dass der Parameter
'mls_relative_sigma'"mls_relative_sigma""mls_relative_sigma""mls_relative_sigma""mls_relative_sigma""mls_relative_sigma" ignoriert wird, wenn der Parameter
'mls_abs_sigma'"mls_abs_sigma""mls_abs_sigma""mls_abs_sigma""mls_abs_sigma""mls_abs_sigma" gesetzt ist.
Setzt einen Multiplikationsfaktor
der verwendet wird, um für jeden
Punkt P nach der Formel zu berechnen:
wobei der k/2. Nachbar von P
ist.
Anders als der global für alle Punkte wirkende Parameter
wird
allein für den jeweiligen Punkt P berechnet. Dadurch werden
Probleme vermieden, welche durch das Verwenden eines festen Wertes für
Daten mit variierender Punktdichte entstehen.
Es sollte allerdings auch beachtet werden, dass der Parameter
'mls_relative_sigma'"mls_relative_sigma""mls_relative_sigma""mls_relative_sigma""mls_relative_sigma""mls_relative_sigma" ignoriert wird, wenn der Parameter
'mls_abs_sigma'"mls_abs_sigma""mls_abs_sigma""mls_abs_sigma""mls_abs_sigma""mls_abs_sigma" gesetzt ist.
Setzt den verwendeten Filter zur Glättung des 2D-Mappings. Die Größe
der Filtermaske kann mit 'xyz_mapping_mask_width'"xyz_mapping_mask_width""xyz_mapping_mask_width""xyz_mapping_mask_width""xyz_mapping_mask_width""xyz_mapping_mask_width" und
'xyz_mapping_mask_height'"xyz_mapping_mask_height""xyz_mapping_mask_height""xyz_mapping_mask_height""xyz_mapping_mask_height""xyz_mapping_mask_height" gesetzt werden.
Im Standardmodus 'median_separate'"median_separate""median_separate""median_separate""median_separate""median_separate" ist der verwendete
Algorithmus vergleichbar mit median_separatemedian_separateMedianSeparateMedianSeparateMedianSeparatemedian_separate. Dieser Modus ist
häufig schneller als 'median'"median""median""median""median""median", kann jedoch auch zu weniger
präzisen Ergebnissen oder Artefakten an Oberflächendiskontinuitäten führen.
Setzen Breite und Höhe der verwendeten Filtermaske.
Für 'xyz_mapping_filter'"xyz_mapping_filter""xyz_mapping_filter""xyz_mapping_filter""xyz_mapping_filter""xyz_mapping_filter"='median_separate'"median_separate""median_separate""median_separate""median_separate""median_separate" und
'xyz_mapping_filter'"xyz_mapping_filter""xyz_mapping_filter""xyz_mapping_filter""xyz_mapping_filter""xyz_mapping_filter"='median'"median""median""median""median""median" werden gerade Werte für
'xyz_mapping_mask_width'"xyz_mapping_mask_width""xyz_mapping_mask_width""xyz_mapping_mask_width""xyz_mapping_mask_width""xyz_mapping_mask_width" oder 'xyz_mapping_mask_height'"xyz_mapping_mask_height""xyz_mapping_mask_height""xyz_mapping_mask_height""xyz_mapping_mask_height""xyz_mapping_mask_height"
automatisch auf den nächstgrößeren ungeraden Wert gesetzt.
Für 'xyz_mapping_filter'"xyz_mapping_filter""xyz_mapping_filter""xyz_mapping_filter""xyz_mapping_filter""xyz_mapping_filter"='median'"median""median""median""median""median" muss die verwendete
Filtermaske quadratisch sein ('xyz_mapping_mask_width'"xyz_mapping_mask_width""xyz_mapping_mask_width""xyz_mapping_mask_width""xyz_mapping_mask_width""xyz_mapping_mask_width" =
'xyz_mapping_mask_height'"xyz_mapping_mask_height""xyz_mapping_mask_height""xyz_mapping_mask_height""xyz_mapping_mask_height""xyz_mapping_mask_height").
Wenn nur 'xyz_mapping_mask_width'"xyz_mapping_mask_width""xyz_mapping_mask_width""xyz_mapping_mask_width""xyz_mapping_mask_width""xyz_mapping_mask_width" oder
'xyz_mapping_mask_height'"xyz_mapping_mask_height""xyz_mapping_mask_height""xyz_mapping_mask_height""xyz_mapping_mask_height""xyz_mapping_mask_height" gesetzt wird, wird der andere Parameter
automatisch auf den gleichen Wert gesetzt. Werden zwei verschiedene Werte
gesetzt, wird ein Fehler geworfen.
Wertevorschläge:3, 5, 7, 9.
Standardwert:3.
Ausführungsinformationen
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
Automatisch parallelisiert auf interner Datenebene.
Dieser Operator unterstützt Cancel-Timeouts und Interrupts.