segment_object_model_3dT_segment_object_model_3dSegmentObjectModel3dSegmentObjectModel3d (Operator)

Name

segment_object_model_3dT_segment_object_model_3dSegmentObjectModel3dSegmentObjectModel3d — Segmentieren von 3D Punkten mit ähnlichen Eigenschaften.

Signatur

segment_object_model_3d( : : ObjectModel3D, GenParamName, GenParamValue : ObjectModel3DOut)

Herror T_segment_object_model_3d(const Htuple ObjectModel3D, const Htuple GenParamName, const Htuple GenParamValue, Htuple* ObjectModel3DOut)

void SegmentObjectModel3d(const HTuple& ObjectModel3D, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* ObjectModel3DOut)

static HObjectModel3DArray HObjectModel3D::SegmentObjectModel3d(const HObjectModel3DArray& ObjectModel3D, const HTuple& GenParamName, const HTuple& GenParamValue)

HObjectModel3D HObjectModel3D::SegmentObjectModel3d(const HTuple& GenParamName, const HTuple& GenParamValue) const

static void HOperatorSet.SegmentObjectModel3d(HTuple objectModel3D, HTuple genParamName, HTuple genParamValue, out HTuple objectModel3DOut)

static HObjectModel3D[] HObjectModel3D.SegmentObjectModel3d(HObjectModel3D[] objectModel3D, HTuple genParamName, HTuple genParamValue)

HObjectModel3D HObjectModel3D.SegmentObjectModel3d(HTuple genParamName, HTuple genParamValue)

Beschreibung

Der Operator segment_object_model_3dsegment_object_model_3dSegmentObjectModel3dSegmentObjectModel3dSegmentObjectModel3d segmentiert eine Menge von 3D Punkten in Teilmengen von benachbarten 3D Punkten mit ähnlichen Eigenschaften, z.B. einer gleichen Normalenrichtung oder Krümmung. Standardmäßig wird anschließend versucht, an die segmentierten Punktteilmengen 3D Primitive, d.h. einfache 3D Formen wie Ebenen, Kugeln oder Zylinder, anzupassen. Die ursprüngliche Punktmenge ist durch ein 3D-Objektmodell mit dem Handle ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D gegeben. Der Operator gibt ein oder mehrere Handles von 3D-Objektmodellen (ObjectModel3DOutObjectModel3DOutObjectModel3DOutObjectModel3DOutobjectModel3DOut) zurück, welche jeweils die 3D Punkte der segmentierten Teilmengen sowie weitere Informationen, z.B. die Parameter der angepassten 3D Primitive, enthalten. Die enthaltene Information kann mit dem Operator get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParamsGetObjectModel3dParams abgerufen werden.

Vor der Segmentierung sollte das 3D-Eingabeobjekt mit dem Operator prepare_object_model_3dprepare_object_model_3dPrepareObjectModel3dPrepareObjectModel3dPrepareObjectModel3d für die Segmentierung vorbereitet werden. Ist das 3D-Eingabeobjektmodell nicht vorbereitet, wird der Operator intern in segment_object_model_3dsegment_object_model_3dSegmentObjectModel3dSegmentObjectModel3dSegmentObjectModel3d aufgerufen, um das 3D-Eingabeobjektmodell um Attribute zu erweitern, die vorher nur implizit im Model vorhanden waren.

Um die Segmentierung und das Fitting zu steuern, können in GenParamNameGenParamNameGenParamNameGenParamNamegenParamName und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue generische Parameter angepasst werden. In den meisten Fällen reichen die Standardwerte aus, so dass keine Anpassung nötig ist. Die folgenden generischen Parameter und die dazugehörigen Werte sind verfügbar:

'max_orientation_diff'"max_orientation_diff""max_orientation_diff""max_orientation_diff""max_orientation_diff":

Der Parameter legt fest, bis zu welchem maximalen Wert sich die Winkel zwischen den Punktnormalen zweier benachbarter 3D Punkte unterscheiden dürfen, damit diese in die gleiche Punktteilmenge eingeordnet werden. Für einen Zylinder oder eine Kugel hängt dieser Wert von der Größe des Objekts und der Entfernung zwischen den benachbarten 3D Punkten ab. D.h., wenn der Zylinder oder die Kugel einen sehr kleinen Radius hat oder die 3D Punktemenge eine geringe Punktdichte aufweist, muss der Wert höher gesetzt werden. Für eine Ebene ist der Wert unabhängig von der Größe des Objekts und kann auf einen kleinen Wert gesetzt werden.

Wertevorschläge: 0.10, 0.15, 0.20

Defaultwert: 0.15

'max_curvature_diff'"max_curvature_diff""max_curvature_diff""max_curvature_diff""max_curvature_diff":

Der Parameter legt fest, um welchen maximalen Wert sich die Krümmungen der Oberflächen an den Positionen zweier benachbarter 3D Punkte unterscheiden darf, damit die Punkte in die gleiche Punktteilmenge eingeordnet werden. Dieser Wert hängt vom Rauschen der 3D Punkte ab. D.h., wenn das Rauschen sehr hoch ist, muss der Wert höher gesetzt werden. Im Allgemeinen nimmt die Anzahl der 3D-Ausgabeobjektmodelle für größere Werte ab, da mehr 3D Punkte zu einer Teilmenge von 3D Punkten zusammengeführt werden.

Wertevorschläge: 0.03, 0.04, 0.05

Defaultwert: 0.05

'min_area'"min_area""min_area""min_area""min_area":

Der Parameter legt die minimale Anzahl an Punkten fest, aus der zusammenhängende Punktteilmengen nach der Segmentierung bestehen müssen. Für eine Punktteilmenge, die weniger Punkte enthält, werden die Punkte gelöscht und es wird kein 3D-Ausgabeobjekthandle erstellt.

Wertevorschläge: 1, 10, 100

Defaultwert: 100

'fitting'"fitting""fitting""fitting""fitting":

Der Parameter legt fest, ob eine Anpassung durch 3D Primitive erfolgen soll. Ist 'fitting'"fitting""fitting""fitting""fitting" auf 'true'"true""true""true""true" gesetzt, was standardmäßig der Fall ist, wird eine Anpassung durch 3D Primitive vorgenommen. Die zurückgegebenen Handles der 3D-Ausgabeobjekte enhalten dann zusätzlich zu den 3D Punkten der segmentierten Punktteilmengen die Parameter der 3D Primitive. Die Ausgabeparameter eines Zylinders, einer Kugel oder einer Ebene sind für den Operator fit_primitives_object_model_3dfit_primitives_object_model_3dFitPrimitivesObjectModel3dFitPrimitivesObjectModel3dFitPrimitivesObjectModel3d beschrieben. Falls 'fitting'"fitting""fitting""fitting""fitting" auf 'false'"false""false""false""false" gesetzt ist, wird nur die Segmentierung durchgeführt und die zurückgegebenen Handles enthalten nur die 3D Punkte der segmentierten Punktteilmengen. Eine nachfolgende Anpassung durch 3D Primitive kann mit dem Operator fit_primitives_object_model_3dfit_primitives_object_model_3dFitPrimitivesObjectModel3dFitPrimitivesObjectModel3dFitPrimitivesObjectModel3d durchgeführt werden.

Werteliste: 'false'"false""false""false""false", 'true'"true""true""true""true"

Defaultwert: 'true'"true""true""true""true"

'output_xyz_mapping'"output_xyz_mapping""output_xyz_mapping""output_xyz_mapping""output_xyz_mapping":

Der Parameter legt fest, ob eine eventuell vorhandene Zuordnung der segmentierten 3D Punkte zu Bildkoordinaten in das 3D-Ausgabeobjektmodell kopiert werden soll. Diese Information ist sinnvoll, wenn danach z.B. der Operator object_model_3d_to_xyzobject_model_3d_to_xyzObjectModel3dToXyzObjectModel3dToXyzObjectModel3dToXyz verwendet werden soll (z.B. für die Visualisierung). Ist 'output_xyz_mapping'"output_xyz_mapping""output_xyz_mapping""output_xyz_mapping""output_xyz_mapping" auf 'true'"true""true""true""true" gesetzt, wird die Zuordnung der 3D Punkte zu den Bildkoordinaten kopiert. Es ist zu beachten, dass der Parameter nur dann gültig ist, wenn eine Zuordnung der 3D Punkte zu den Bildkoordinaten im 3D-Eingabeobjektmodell enthalten ist. Wenn das 3D-Eingabeobjektmodell von einem anderen 3D-Objektmodell, welches die Zuordnung der 3D Punkte zu den Bildkoordinaten enthält, durch Kopieren mit copy_object_model_3dcopy_object_model_3dCopyObjectModel3dCopyObjectModel3dCopyObjectModel3d abgeleitet wird, ist bereits beim Kopieren mit copy_object_model_3dcopy_object_model_3dCopyObjectModel3dCopyObjectModel3dCopyObjectModel3d darauf zu achten, dass die Zuordnung ebenfalls kopiert wird. Weiterhin ist der Parameter nur gültig, wenn auch die 3D Punkte in das 3D-Ausgabeobjektmodell kopiert werden, d.h., wenn 'output_point_coord'"output_point_coord""output_point_coord""output_point_coord""output_point_coord" auf 'true'"true""true""true""true" gesetzt ist. Ist 'output_xyz_mapping'"output_xyz_mapping""output_xyz_mapping""output_xyz_mapping""output_xyz_mapping" auf 'false'"false""false""false""false" gesetzt, wird die Zuordnung der 3D Punkte zu den Bildkoordinaten nicht kopiert.

Werteliste: 'true'"true""true""true""true", 'false'"false""false""false""false"

Defaultwert: 'false'"false""false""false""false"

'primitive_type'"primitive_type""primitive_type""primitive_type""primitive_type",'fitting_algorithm'"fitting_algorithm""fitting_algorithm""fitting_algorithm""fitting_algorithm", 'min_radius'"min_radius""min_radius""min_radius""min_radius",'max_radius'"max_radius""max_radius""max_radius""max_radius", 'output_point_coord'"output_point_coord""output_point_coord""output_point_coord""output_point_coord":

Diese Parameter werden genutzt, wenn 'fitting'"fitting""fitting""fitting""fitting" auf 'true'"true""true""true""true" gesetzt ist. Die Bedeutung und Verwendung der Parameter ist für den Operator fit_primitives_object_model_3dfit_primitives_object_model_3dFitPrimitivesObjectModel3dFitPrimitivesObjectModel3dFitPrimitivesObjectModel3d beschrieben.

Ausführungsinformationen

Parameter

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

Handle des 3D-Eingabeobjektmodells.

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

Name des generischen Parameters.

Parameteranzahl: GenParamName == GenParamValue

Werteliste: 'fitting_algorithm'"fitting_algorithm""fitting_algorithm""fitting_algorithm""fitting_algorithm", 'max_curvature_diff'"max_curvature_diff""max_curvature_diff""max_curvature_diff""max_curvature_diff", 'max_orientation_diff'"max_orientation_diff""max_orientation_diff""max_orientation_diff""max_orientation_diff", 'max_radius'"max_radius""max_radius""max_radius""max_radius", 'min_area'"min_area""min_area""min_area""min_area", 'min_radius'"min_radius""min_radius""min_radius""min_radius", 'output_point_coord'"output_point_coord""output_point_coord""output_point_coord""output_point_coord", 'output_xyz_mapping'"output_xyz_mapping""output_xyz_mapping""output_xyz_mapping""output_xyz_mapping", 'primitive_type'"primitive_type""primitive_type""primitive_type""primitive_type"

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

Wert des generischen Parameters.

Parameteranzahl: GenParamValue == GenParamName

Wertevorschläge: 0.15, 0.05, 100, 'true'"true""true""true""true", 'false'"false""false""false""false", 'cylinder'"cylinder""cylinder""cylinder""cylinder", 'sphere'"sphere""sphere""sphere""sphere", 'plane'"plane""plane""plane""plane", 'all'"all""all""all""all", 'least_squares'"least_squares""least_squares""least_squares""least_squares", 'least_squares_huber'"least_squares_huber""least_squares_huber""least_squares_huber""least_squares_huber", 'least_squares_tukey'"least_squares_tukey""least_squares_tukey""least_squares_tukey""least_squares_tukey"

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

Handle des 3D-Ausgabeobjektmodells.

Ergebnis

segment_object_model_3dsegment_object_model_3dSegmentObjectModel3dSegmentObjectModel3dSegmentObjectModel3d liefert den Wert 2 (H_MSG_TRUE), falls die Parameter korrekt sind. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d, read_object_model_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3d, prepare_object_model_3dprepare_object_model_3dPrepareObjectModel3dPrepareObjectModel3dPrepareObjectModel3d

Nachfolger

get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParamsGetObjectModel3dParams, object_model_3d_to_xyzobject_model_3d_to_xyzObjectModel3dToXyzObjectModel3dToXyzObjectModel3dToXyz, write_object_model_3dwrite_object_model_3dWriteObjectModel3dWriteObjectModel3dWriteObjectModel3d, clear_object_model_3dclear_object_model_3dClearObjectModel3dClearObjectModel3dClearObjectModel3d

Siehe auch

fit_primitives_object_model_3dfit_primitives_object_model_3dFitPrimitivesObjectModel3dFitPrimitivesObjectModel3dFitPrimitivesObjectModel3d

Modul

3D Metrology