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.
ObjectModel3D
(input_control) object_model_3d(-array) →
(handle)
Handle des 3D-Eingabeobjektmodells.
GenParamName
(input_control) attribute.name-array →
(string)
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'
GenParamValue
(input_control) attribute.name-array →
(string / real / integer)
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'
ObjectModel3DOut
(output_control) object_model_3d(-array) →
(handle)
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