smooth_object_model_3dT_smooth_object_model_3dSmoothObjectModel3dSmoothObjectModel3d (Operator)

Name

smooth_object_model_3dT_smooth_object_model_3dSmoothObjectModel3dSmoothObjectModel3d — Glätten von 3D-Punkten eines 3D-Objektmodells.

Signatur

smooth_object_model_3d( : : ObjectModel3D, Method, GenParamName, GenParamValue : SmoothObjectModel3D)

Herror T_smooth_object_model_3d(const Htuple ObjectModel3D, const Htuple Method, const Htuple GenParamName, const Htuple GenParamValue, Htuple* SmoothObjectModel3D)

void SmoothObjectModel3d(const HTuple& ObjectModel3D, const HTuple& Method, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* SmoothObjectModel3D)

static HObjectModel3DArray HObjectModel3D::SmoothObjectModel3d(const HObjectModel3DArray& ObjectModel3D, const HString& Method, const HTuple& GenParamName, const HTuple& GenParamValue)

HObjectModel3D HObjectModel3D::SmoothObjectModel3d(const HString& Method, const HTuple& GenParamName, const HTuple& GenParamValue) const

HObjectModel3D HObjectModel3D::SmoothObjectModel3d(const char* Method, const HTuple& GenParamName, const HTuple& GenParamValue) const

HObjectModel3D HObjectModel3D::SmoothObjectModel3d(const wchar_t* Method, const HTuple& GenParamName, const HTuple& GenParamValue) const   (Nur Windows)

static void HOperatorSet.SmoothObjectModel3d(HTuple objectModel3D, HTuple method, HTuple genParamName, HTuple genParamValue, out HTuple smoothObjectModel3D)

static HObjectModel3D[] HObjectModel3D.SmoothObjectModel3d(HObjectModel3D[] objectModel3D, string method, HTuple genParamName, HTuple genParamValue)

HObjectModel3D HObjectModel3D.SmoothObjectModel3d(string method, HTuple genParamName, HTuple genParamValue)

Beschreibung

Der Operator smooth_object_model_3dsmooth_object_model_3dSmoothObjectModel3dSmoothObjectModel3dSmoothObjectModel3d glättet die 3D-Punkte des in ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D eingegebenen 3D-Objektmodells. Die Glättung wird mit dem in MethodMethodMethodMethodmethod eingegeben Verfahren durchgeführt. Zurzeit wird nur das Verfahren Moving Least Squares (MLS, MethodMethodMethodMethodmethod='mls'"mls""mls""mls""mls") unterstützt.

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.

Mit GenParamNameGenParamNameGenParamNameGenParamNamegenParamName und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue können die folgenden zusätzlichen Parameternamen und -werte des MLS-Algorithmus eingestellt werden:

'mls_kNN'"mls_kNN""mls_kNN""mls_kNN""mls_kNN":

Setzt die Anzahl der nächsten k Nachbarn, welche beim Fitten einer Ebene, bzw. Oberfläche zu jedem Punkt betrachtet werden.

Wertevorschläge: 40, 60 (Standardwert), 80, 100, 400

'mls_order'"mls_order""mls_order""mls_order""mls_order":

Setzt die Ordnung der der MLS-Oberfläche. Für 'mls_order'"mls_order""mls_order""mls_order""mls_order"=1 ist die Oberfläche eine einfache Ebene.

Wertevorschläge: 1, 2 (Standardwert), 3

'mls_abs_sigma'"mls_abs_sigma""mls_abs_sigma""mls_abs_sigma""mls_abs_sigma":

Setzt der 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 nehmen, der den 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 ungleiche Glättungsergebnissen für die Bereiche mit 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" den Parameter 'mls_relative_sigma'"mls_relative_sigma""mls_relative_sigma""mls_relative_sigma""mls_relative_sigma" benutzt. Der letztere 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" ignoriert wird, wenn der Parameter 'mls_abs_sigma'"mls_abs_sigma""mls_abs_sigma""mls_abs_sigma""mls_abs_sigma" gesetzt ist.

Wertevorschläge: 0.0001, 0.001, 0.01, 0.1, 1.0

'mls_relative_sigma'"mls_relative_sigma""mls_relative_sigma""mls_relative_sigma""mls_relative_sigma":

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" ignoriert wird, wenn der Parameter 'mls_abs_sigma'"mls_abs_sigma""mls_abs_sigma""mls_abs_sigma""mls_abs_sigma" gesetzt ist.

Wertevorschläge: 0.1, 0.5, 1.0 (Standardwert), 1.5, 2.0

'mls_force_inwards'"mls_force_inwards""mls_force_inwards""mls_force_inwards""mls_force_inwards":

Ist dieser Parameter auf den Wert 'true'"true""true""true""true" gesetzt, so werden alle Normalen so orientiert, dass sie „zum Koordinatenursprung zeigen“. Mathematisch ausgedrückt bedeutet das, dass das Skalarprodukt zwischen dem Normalenvektor und dem Vektor, der vom entsprechenden Oberflächenpunkt zum Koordinatenursprung zeigt, positiv ist. Dies kann notwendig sein, wenn das resultierende SmoothObjectModel3DSmoothObjectModel3DSmoothObjectModel3DSmoothObjectModel3DsmoothObjectModel3D für das oberflächenbasierte Matching verwendet werden soll --- entweder als Modell im Operator create_surface_modelcreate_surface_modelCreateSurfaceModelCreateSurfaceModelCreateSurfaceModel oder als 3D-Szene im Operator find_surface_modelfind_surface_modelFindSurfaceModelFindSurfaceModelFindSurfaceModel --- da hier die konsistente Orientierung der Normalen wichtig ist. Wird der Parameter 'mls_force_inwards'"mls_force_inwards""mls_force_inwards""mls_force_inwards""mls_force_inwards" auf den Wert 'false'"false""false""false""false" gesetzt, so ist die Orientierung der Normalen beliebig.

Werteliste: 'true'"true""true""true""true" (Standardwert), 'false'"false""false""false""false"

Ausführungsinformationen

Dieser Operator unterstützt Cancel-Timeouts und Interrupts.

Parameter

ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D (input_control)  object_model_3d(-array) HObjectModel3D, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle eines 3D-Objektmodells mit 3D-Punktdaten.

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

Glättungsmethode.

Defaultwert: 'mls' "mls" "mls" "mls" "mls"

Werteliste: 'mls'"mls""mls""mls""mls"

GenParamNameGenParamNameGenParamNameGenParamNamegenParamName (input_control)  attribute.name-array HTupleHTupleHtuple (string) (string) (HString) (char*)

Namen der generischen Parameter.

Defaultwert: []

Werteliste: 'mls_abs_sigma'"mls_abs_sigma""mls_abs_sigma""mls_abs_sigma""mls_abs_sigma", 'mls_force_inwards'"mls_force_inwards""mls_force_inwards""mls_force_inwards""mls_force_inwards", 'mls_kNN'"mls_kNN""mls_kNN""mls_kNN""mls_kNN", 'mls_order'"mls_order""mls_order""mls_order""mls_order", 'mls_relative_sigma'"mls_relative_sigma""mls_relative_sigma""mls_relative_sigma""mls_relative_sigma"

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

Werte der generischen Parameter.

Defaultwert: []

Wertevorschläge: 10, 20, 40, 60, 0.1, 0.5, 1.0, 2.0, 0, 1, 2

SmoothObjectModel3DSmoothObjectModel3DSmoothObjectModel3DSmoothObjectModel3DsmoothObjectModel3D (output_control)  object_model_3d(-array) HObjectModel3D, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des geglätteten 3D-Objektmodells.

Alternativen

surface_normals_object_model_3dsurface_normals_object_model_3dSurfaceNormalsObjectModel3dSurfaceNormalsObjectModel3dSurfaceNormalsObjectModel3d, sample_object_model_3dsample_object_model_3dSampleObjectModel3dSampleObjectModel3dSampleObjectModel3d, simplify_object_model_3dsimplify_object_model_3dSimplifyObjectModel3dSimplifyObjectModel3dSimplifyObjectModel3d

Modul

3D Metrology