| Operatoren |
segment_object_model_3d — Segmentieren von 3D Punkten mit ähnlichen Eigenschaften.
segment_object_model_3d( : : ObjectModel3D, GenParamName, GenParamValue : ObjectModel3DOut)
Der Operator segment_object_model_3d 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 ObjectModel3D gegeben. Der Operator gibt ein oder mehrere Handles von 3D-Objektmodellen (ObjectModel3DOut) 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_params abgerufen werden.
Vor der Segmentierung sollte das 3D-Eingabeobjekt mit dem Operator prepare_object_model_3d für die Segmentierung vorbereitet werden. Ist das 3D-Eingabeobjektmodell nicht vorbereitet, wird der Operator intern in segment_object_model_3d 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 GenParamName und GenParamValue 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:
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
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
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
Der Parameter legt fest, ob eine Anpassung durch 3D Primitive erfolgen soll. Ist 'fitting' auf '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_3d beschrieben. Falls 'fitting' auf '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_3d durchgeführt werden.
Werteliste: 'false', 'true'
Defaultwert: 'true'
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_xyz verwendet werden soll (z.B. für die Visualisierung). Ist 'output_xyz_mapping' auf '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_3d abgeleitet wird, ist bereits beim Kopieren mit copy_object_model_3d 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' auf 'true' gesetzt ist. Ist 'output_xyz_mapping' auf 'false' gesetzt, wird die Zuordnung der 3D Punkte zu den Bildkoordinaten nicht kopiert.
Werteliste: 'true', 'false'
Defaultwert: 'false'
Diese Parameter werden genutzt, wenn 'fitting' auf 'true' gesetzt ist. Die Bedeutung und Verwendung der Parameter ist für den Operator fit_primitives_object_model_3d beschrieben.
Es ist zu beachten, dass wenn ein 3D-Objektmodell nicht mehr benötigt wird oder überschrieben werden soll, zuerst der Operator clear_object_model_3d aufgerufen werden muss, um den entsprechenden Speicher freizugeben.
Handle des 3D-Eingabeobjektmodells.
Name des generischen Parameters.
Parameteranzahl: GenParamName == GenParamValue
Werteliste: 'fitting_algorithm', 'max_curvature_diff', 'max_orientation_diff', 'max_radius', 'min_area', 'min_radius', 'output_point_coord', 'output_xyz_mapping', 'primitive_type'
Wert des generischen Parameters.
Parameteranzahl: GenParamValue == GenParamName
Wertevorschläge: 0.15, 0.05, 100, 'true', 'false', 'cylinder', 'sphere', 'plane', 'all', 'least_squares', 'least_squares_huber', 'least_squares_tukey'
Handle des 3D-Ausgabeobjektmodells.
segment_object_model_3d liefert den Wert 2 (H_MSG_TRUE), falls die Parameter korrekt sind. Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
xyz_to_object_model_3d, read_object_model_3d, prepare_object_model_3d
get_object_model_3d_params, object_model_3d_to_xyz, write_object_model_3d, clear_object_model_3d
fit_primitives_object_model_3d
3D Metrology
| Operatoren |