smooth_object_model_3dT_smooth_object_model_3dSmoothObjectModel3dSmoothObjectModel3dsmooth_object_model_3d — Glätten von 3D-Punkten eines 3D-Objektmodells.
Für MethodMethodMethodMethodmethodmethod='mls'"mls""mls""mls""mls""mls" berechnet der MLS-Algorithmus für jeden Punkt
P 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 Quadrate für
die Schätzung der Ebenen- 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 den 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äche 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.