get_object_model_3d_params
— Auslesen der Attribute von 3D-Objektmodellen.
get_object_model_3d_params( : : ObjectModel3D, GenParamName : GenParamValue)
Ein 3D-Objektmodell besteht aus einer Menge von Attributen und
ihren Metadaten. Mit Hilfe des Operators
get_object_model_3d_params
lassen sich Attribute und
die Metadaten von 3D-Objektmodellen abfragen. Der Name des Attributes
oder der Metadaten, welche abgefragt werden sollen, wird in
GenParamName
übergeben, der korrespondierende Wert wird
in GenParamValue
zurückgeliefert. Wenn das abzufragende
Attribut oder die Metadaten nicht vorhanden sind, wird eine
Fehlerbehandlung durchgeführt. get_object_model_3d_params
unterstützt den Zugriff auf mehrere 3D-Objektmodelle und mehrere
Attribute auf einmal. Zu beachten ist, dass Attribute oder Metadaten
verschiedene Längen haben können.
Einige der Standardattribute haben eine definierte Länge, die in der
Attributbeschreibung weiter unten jeweils angegeben ist.
Die Länge anderer Attribute hängt vom 3D-Objektmodell ab und kann abgefragt
werden, indem der Parameter GenParamName
z.B. auf
'num_points' , 'num_triangles' , 'num_polygons' oder
'num_lines' gesetzt wird.
So lässt sich beispielsweise die Länge des Standardattributs
'point_coord_x' abfragen, indem GenParamName
auf
'num_points' gesetzt wird.
Standardattribute
Im Einzelnen kann auf die folgenden Standardattribute und deren Metadaten zugegriffen werden:
Die x-Koordinaten der 3D Punktmenge. Die Anzahl der hier
zurückgegebenen Punkte kann mit 'num_points' ermittelt
werden. Dieses Attribut wird typischerweise mit dem Operator
xyz_to_object_model_3d
oder read_object_model_3d
erstellt.
Die y-Koordinaten der 3D Punktmenge. Die Anzahl der hier
zurückgegebenen Punkte kann mit 'num_points' ermittelt
werden. Dieses Attribut wird typischerweise mit dem Operator
xyz_to_object_model_3d
oder read_object_model_3d
erstellt.
Die z-Koordinaten der 3D Punktmenge. Die Anzahl der hier
zurückgegebenen Punkte kann mit 'num_points' ermittelt
werden. Dieses Attribut wird typischerweise mit dem Operator
xyz_to_object_model_3d
oder read_object_model_3d
erstellt.
Die x-Komponenten der 3D Punktnormalen der 3D Punktmenge.
Die Anzahl der hier zurückgegebenen Punkte kann mit
'num_points' ermittelt werden.
Dieses Attribut wird typischerweise mit dem Operator
smooth_object_model_3d
erstellt.
Die y-Komponenten der 3D Punktnormalen der 3D Punktmenge.
Die Anzahl der hier zurückgegebenen Punkte kann mit
'num_points' ermittelt werden.
Dieses Attribut wird typischerweise mit dem Operator
smooth_object_model_3d
erstellt.
Die z-Komponenten der 3D Punktnormalen der 3D Punktmenge.
Die Anzahl der hier zurückgegebenen Punkte kann mit
'num_points' ermittelt werden.
Dieses Attribut wird typischerweise mit dem Operator
smooth_object_model_3d
erstellt.
Das Qualitätsmaß der Rekonstruktion einer
3D-Punktmenge. Die Anzahl der hier zurückgegebenen Punkte kann mit
'num_points' ermittelt werden. Dieses Attribut wird
typischerweise mit dem Operator reconstruct_surface_stereo
erstellt.
Der Rotkanal einer 3D-Punktmenge. Die Anzahl der
hier zurückgegebenen Punkte kann mit 'num_points' ermittelt
werden. Dieses Attribut wird typischerweise mit dem Operator
reconstruct_surface_stereo
erstellt.
Der Grünkanal einer 3D-Punktmenge. Die Anzahl der
hier zurückgegebenen Punkte kann mit 'num_points' ermittelt
werden. Dieses Attribut wird typischerweise mit dem Operator
reconstruct_surface_stereo
erstellt.
Der Blaukanal einer 3D-Punktmenge. Die Anzahl der
hier zurückgegebenen Punkte kann mit 'num_points' ermittelt
werden. Dieses Attribut wird typischerweise mit dem Operator
reconstruct_surface_stereo
erstellt.
Die Zeilenkomponenten der Zuordnung der 3D Punkte zu Bildkoordinaten.
Die Anzahl der hier zurückgegebenen Punkte kann mit
'num_points' ermittelt werden, die Höhe des Originalbildes
mit 'mapping_size' .
Dieses Attribut wird typischerweise mit dem Operator
xyz_to_object_model_3d
erstellt.
Die Spaltenkomponenten der Zuordnung der 3D Punkte zu Bildkoordinaten.
Die Anzahl der hier zurückgegebenen Punkte kann mit
'num_points' ermittelt werden, die Breite des Originalbildes
mit 'mapping_size' .
Dieses Attribut wird typischerweise mit dem Operator
xyz_to_object_model_3d
erstellt.
Die Größe des Originalbildes. Zurückgegeben wird ein Tupel mit den beiden Einträgen Breite und Höhe.
Die Indizes der 3D Punkte, welche Dreiecke repräsentieren, in der
folgenden Reihenfolge: Die ersten drei Rückgabewerte
(Rückgabewert 0,1,2) stellen das erste Dreieck dar, die nächsten
drei Rückgabewerte (Rückgabewerte 3,4,5) stellen das zweite Dreieck
dar, usw. Alle Indizes entsprechen den Indizes der Koordinaten der
3D Punkte. Zugriff auf die Koordinaten der 3D Punkte ist mit dem
generischen Parameter GenParamName
mit den Werten
'point_coord_x' , 'point_coord_y' und
'point_coord_z' möglich.
Die Anzahl der hier zurückgegebenen Dreiecke kann mit
'num_triangles' ermittelt werden.
Dieses Attribut wird typischerweise mit dem Operator
triangulate_object_model_3d
oder read_object_model_3d
erstellt.
Die Indizes der 3D Punkte, welche Polygone repräsentieren, in der
folgenden Reihenfolge: Der erste Rückgabewert enthält die Anzahl
n der 3D Punkte des ersten Polygons. Die folgenden Rückgabewerte
(Rückgabewerte 1,2,..,n) repräsentieren das erste Polygon. Der
nächste Rückgabewert (Rückgabewert n+1) enthält die Anzahl m der 3D
Punkte des zweiten Polygons. Die folgenden Rückgabewerte
(Rückgabewerte n+2,n+3,..,n+1+m) repräsentieren das zweite
Polygon, usw. Alle Indizes entsprechen den Indizes der Koordinaten
der 3D Punkte. Zugriff auf die Koordinaten der 3D Punkte ist mit dem
generischen Parameter GenParamName
mit den Werten
'point_coord_x' , 'point_coord_y' und
'point_coord_z' möglich.
Die Anzahl der hier zurückgegebenen Polygone kann mit
'num_polygons' ermittelt werden.
Dieses Attribut wird typischerweise mit dem Operator
read_object_model_3d
erstellt.
Die Indizes der 3D Punkte, welche Linienzüge repräsentieren, in der
folgenden Reihenfolge: Der erste Rückgabewert enthält die Anzahl
n0 der 3D Punkte des ersten Linienzuges. Die folgenden Rückgabewerte
(Rückgabewerte 1,2,..,n) repräsentieren den ersten Linienzug. Der
nächste Rückgabewert (Rückgabewert n+1) enthält die Anzahl m der 3D
Punkte des zweiten Linienzuges. Die folgenden Rückgabewerte
(Rückgabewerte n+2,n+3,..,n+1+m) repräsentieren den zweiten
Linienzug usw. Alle Indizes entsprechen den Indizes der Koordinaten
der 3D Punkte. Zugriff auf die Koordinaten der 3D Punkte ist mit dem
generischen Parameter GenParamName
mit den Werten
'point_coord_x' , 'point_coord_y' und
'point_coord_z' möglich.
Die Anzahl der hier zurückgegebenen Linien kann mit
'num_lines' ermittelt werden.
Dieses Attribut wird typischerweise mit dem Operator
intersect_plane_object_model_3d
erstellt.
Der Durchmesser der 3D Punktmenge, der durch die Länge der Diagonale des kleinsten umschließenden achsenparallelen Quaders (siehe Parameter 'bounding_box1' ) definiert wird. Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
3D-Koordinaten des Mittelpunkts des kleinsten umschließenden achsenparallelen Quaders der 3D Punkte (siehe Parameter 'bounding_box1' ). Es werden hier drei Werte pro 3D-Objektmodell zurückgegeben. Handelt es sich um ein 3D-Primitiv ohne 3D-Koordinaten gilt folgendes:
Wenn der Typ des 3D-Primitivs ein Zylinder ist
(siehe gen_cylinder_object_model_3d
) und Begrenzungen
vorhanden sind, wird der Mittelpunkt zwischen den Begrenzungen
zurückgegeben. Sind keine Begrenzungen vorhanden werden die
Translationsparameter der Pose zurückgegeben.
Wenn der Typ des 3D-Primitivs eine Ebene ist
(siehe gen_plane_object_model_3d
) und Begrenzungen
vorhanden sind, wird der Schwerpunkt der Ebene aus den
Begrenzungen berechnet. Sind keine Begrenzungen der Ebene
vorhanden werden die Translationsparameter der Pose
zurückgegeben.
Wenn der Typ des 3D-Primitivs eine Kugel oder ein Quader ist
(siehe gen_sphere_object_model_3d
oder gen_box_object_model_3d
)
wird der Mittelpunkt des Objektmodells zurückgegeben.
Indizes der 3D-Punkte in einem anderen 3D-Objekmodell
(Länge kann mit 'num_points' abgefragt werden).
Typischerweise wird das Attribut von triangulate_object_model_3d
generiert.
Der Type des 3D-Primitivs (typischerweise generiert vom Operator
fit_primitives_object_model_3d
). Der Rückgabewert einer
Kugel ist 'sphere'. Der Rückgabewert eines Zylinders ist
'cylinder'. Der Rückgabewert einer Ebene ist 'plane'. Der
Rückgabewert eines Quaders ist 'box'.
Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
Die Parameter des 3D-Primitivs (z.B. generiert vom Operator
fit_primitives_object_model_3d
). Je nach Typ werden
vier bis zehn Werte pro 3D-Objektmodell zurückgegeben.
Wenn der Typ des 3D-Primitivs
ein Zylinder ist (siehe gen_cylinder_object_model_3d
),
sind die Rückgabewerte die (x-, y-, z-) Koordinaten
des Mittelpunktes [x_center, y_center, z_center], die normierten
(x-, y-, z-) Richtungen der Hauptachse des Zylinders [x_axis, y_axis,
z_axis] und der Zylinderradius [radius]. Die Reihenfolge ist
[x_center, y_center, z_center, x_axis, y_axis, z_axis, radius].
Wenn der Typ des 3D-Primitivs eine Kugel ist
(siehe gen_sphere_object_model_3d
), sind die Rückgabewerte
die (x-, y-, z-) Koordinaten des Mittelpunktes [x_center, y_center,
z_center] und der Kugelradius [radius]. Die Reihenfolge ist
[x_center, y_center, z_center, radius].
Wenn der Typ des 3D-Primitivs
eine Ebene ist (siehe gen_plane_object_model_3d
),
sind die Rückgabewerte die 4 Parameter der Hesseschen
Normalform, d.h. der (x-, y-, z-) Einheitsnormalenvektor [x, y, z]
und der orthogonale Abstand (d) der Ebene vom Ursprung des
Koordinatensystems. Die Reihenfolge ist [x, y, z, d]. Das
Vorzeichen des Abstands (d) legt die Seite der Ebene fest, auf
welcher sich der Ursprung befindet.
Wenn der Typ des 3D-Primitivs ein Quader ist
(siehe gen_box_object_model_3d
), sind die Rückgabewerte
die 3D Pose (Verschiebung, Rotation, Rotationstyp) und die halben
Kantenlängen (length1, length2, length3) des Quaders. length1 ist
die Länge des Quaders entlang der x-Achse der angegebenen Pose.
length2 ist die Länge des Quaders entlang der y-Achse der angegebenen
Pose. length3 ist die Länge des Quaders entlang der z-Achse der
angegebenen Pose. Die
Reihenfolge ist [trans_x, trans_y, trans_z, rot_x, rot_y, rot_z,
rot_type, length1, length2, length3]. Mehr Details zu 3D Posen und
die entsprechenden Transformationsmatrizen sind im Operator
create_pose
zu finden.
Die Parameter des 3D-Primitivs in Form einer 3D Pose (typischerweise
generiert vom
Operator fit_primitives_object_model_3d
). Für alle Typen von
3D-Primitiven sind die Rückgabewerte die 3D Pose (Verschiebung, Rotation,
Rotationstyp). Mehr Details zu 3D Posen und
die entsprechenden Transformationsmatrizen sind im Operator
create_pose
zu finden. Je nach Typ werden sieben bis zehn
Werte pro 3D-Objektmodell zurückgegeben.
Wenn der Typ des 3D-Primitivs ein Zylinder ist
(siehe gen_cylinder_object_model_3d
), wird zusätzlich
der Zylinderradius [radius] zurückgegeben. Die Reihenfolge ist
[trans_x, trans_y, trans_z, rot_x, rot_y, rot_z, rot_type, radius].
Wenn der Typ des 3D-Primitivs eine Kugel ist
(siehe gen_sphere_object_model_3d
), wird zusätzlich
der Kugelradius [radius] zurückgegeben. Die Reihenfolge ist
[trans_x, trans_y, trans_z, rot_x, rot_y, rot_z, rot_type, radius].
Wenn der Typ des 3D-Primitivs eine Ebene ist
(siehe gen_plane_object_model_3d
), ist die
Reihenfolge [trans_x, trans_y,
trans_z, rot_x, rot_y, rot_z, rot_type].
Wenn der Typ des 3D-Primitivs ein Quader ist
(siehe gen_box_object_model_3d
), werden zusätzlich
die halben Kantenlängen (length1, length2, length3) des Quaders
zurückgegeben. length1 ist die Länge des Quaders entlang der
x-Achse der angegebenen Pose. length2 ist die Länge des
Quaders entlang der y-Achse der angegebenen Pose. length3
ist die Länge des Quaders entlang der z-Achse der angegebenen
Pose. Die Reihenfolge ist [trans_x, trans_y, trans_z, rot_x,
rot_y, rot_z, rot_type, length1, length2, length3].
Die Parameter des 3D-Primitivs in Form einer 3D Pose (typischerweise
generiert vom
Operator fit_primitives_object_model_3d
). Für alle Typen von
3D-Primitiven sind die Rückgabewerte die 3D Pose (Verschiebung, Rotation,
Rotationstyp). Mehr Details zu 3D Posen und
die entsprechenden Transformationsmatrizen sind im Operator
create_pose
zu finden. Es werden sieben Werte pro
3D-Objektmodell zurückgegeben. Die Reihenfolge ist
[trans_x, trans_y, trans_z, rot_x, rot_y, rot_z, rot_type].
Die Ausdehnung der 3D-Primitive vom Typ Zylinder und Ebene
(typischerweise generiert vom Operator
fit_primitives_object_model_3d
).
Die Anzahl der Attribute hängt vom Typ ab und kann mit
'num_primitive_parameter_extension' abgefragt werden.
Wenn der Typ des 3D-Primitivs ein Zylinder ist (siehe
gen_cylinder_object_model_3d
), sind die Rückgabewerte
(MinExtent, MaxExtent) die Ausdehnung des Zylinders in Richtung
der Rotationsachse. Diese Werte werden in der Reihenfolge
[MinExtent, MaxExtent] zurückgegeben. MinExtent gibt die Länge
des Zylinders entgegen der Richtung der Rotationsachse an.
MaxExtent gibt die Länge des Zylinders entlang der Richtung der
Rotationsachse an.
Wenn der Typ des 3D-Primitivs eine Ebene ist
(generiert mit fit_primitives_object_model_3d
),
dann ist der Rückgabewert
ein Tupel von koplanaren Punkten aus der gefitteten Ebene.
Die Reihenfolge ist
[x-Koordinate von Punkt 1, x-Koordinate von Punkt 2,
x-Koordinate von Punkt 3, ....,
y-Koordinate von Punkt 1, y-Koordinate von Punkt 2,
x-Koordinate von Punkt 3, ....].
Die Koordinaten beschreiben die Stützstellen einer konvexen
Hülle. Diese wird aus den Projektionen derjenigen Punkte auf
die gefittete Ebene gebildet, die dem Ebenenfit Rechnung tragen.
Wurde die Ebene mit gen_plane_object_model_3d
generiert,
werden alle Punkte zurückgeliefert, die zum Generieren der Ebene
benutzt wurden (XExtent, YExtent).
Der quadratische Restfehler des 3D-Primitivs (typischerweise
generiert vom Operator fit_primitives_object_model_3d
).
Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
3D-Koordinaten des Referenzpunktes des vorbereiteten 3D-Formmodells für das Matching. Der Referenzpunkt ist der Mittelpunkt des kleinsten umschließenden achsenparallelen Quaders (siehe Parameter 'bounding_box1' ). Es werden hier drei Werte pro 3D-Objektmodell zurückgegeben.
Kleinster umschließender achsenparalleler Quader in der Form (min_x, min_y, min_z, max_x, max_y, max_z). Es werden hier sechs Werte pro 3D-Objektmodell zurückgegeben.
Die Anzahl der Punkte. Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
Die Anzahl der Oberflächendreiecke. Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
Die Anzahl der Oberflächen. Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
Die Anzahl der Linienzüge. Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
Die Anzahl der erweiterten Daten von 3D-Primitiven. Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
Das Vorhandensein von 3D Punkten. Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
Das Vorhandensein von 3D Punktnormalen. Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
Das Vorhandensein von Oberflächendreiecken. Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
Das Vorhandensein von Oberflächen oder Polygonen. Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
Das Vorhandensein von 3D Linienzügen. Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
Das Vorhandensein der Zuordnung der 3D Punkte zu Bildkoordinaten. Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
Das Vorhandensein eines Formmodells für das formbasierte 3D-Matching. Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
Das Vorhandensein einer vorberechneten Datenstruktur für die 3D
Abstandsbestimmung.
Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
Die Datenstruktur kann mit dem Operator prepare_object_model_3d
erstellt werden.
Sie wird von dem Operator distance_object_model_3d
verwendet.
Das Vorhandensein von Daten für das oberflächenbasierte 3D-Matching. Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
Das Vorhandensein von Daten für die 3D Segmentierung. Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
Das Vorhandensein eines 3D-Primitivs. Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
Das Vorhandensein eines quadratischen Restfehlers eines 3D-Primitivs. Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
Für jeden Punkt der Abstand des N-ten Nachbarpunktes. N muss ein positiver Integer-Wert sein und ist standardmäßig 25. Für jeden Punkt werden die übrigen Punkte anhand ihres Abstands sortiert, und der Abstand des N-ten Punktes zurückgeliefert.
Für jeden Punkt die Anzahl an Nachbarn mit einem Abstand von höchstens X.
Für jeden Punkt die ungefähre Anzahl an Nachbarn mit einem Abstand von höchstens X. Die Abstände werden mittels Voxeln approximiert, was üblicherweise schneller ist als die exakte Berechnung für 'num_neighbors' .
Erweiterte Attribute
Erweiterte Attribute sind Attribute mit benutzerdefinierten Namen
und Daten. Sie werden mit dem Operator
set_object_model_3d_attrib
erstellt. Zugegriffen werden
kann auf die folgenden erweiterten Attribute und deren Metadaten:
Der benutzerdefinierte Name des erweiterten Attributs. Zu beachten
dass der Name mit '&' , z.B., '&my_attrib'
beginnen muss. Die Daten der abgefragten erweiterten Attribute
werden in GenParamValue
zurückgegeben. Die Reihenfolge ist
die gleiche wie die Reihenfolge der Attributnamen, die in
GenParamName
übergeben wird.
Die Namen aller erweiterten Attribute. Es wird hier pro erweitertem Attribut ein Wert zurückgegeben.
Die Typen aller erweiterten Attribute. Es wird hier pro erweitertem Attribut ein Wert zurückgegeben. Dabei sind die Ausgabewerte wie die ausgegebenen Namen der erweiterten Attribute geordnet.
Das Vorhandensein mindestens eines erweiterten Attributs. Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
Die Anzahl der erweiterten Attribute. Es wird hier ein Wert pro 3D-Objektmodell zurückgegeben.
ObjectModel3D
(input_control) object_model_3d(-array) →
(handle)
Handle der 3D-Objektmodelle.
GenParamName
(input_control) attribute.name-array →
(string)
Namen der generischen Attribute, die für die 3D-Objektmodelle abgefragt werden soll.
Defaultwert: 'num_points'
Werteliste: 'blue' , 'bounding_box1' , 'center' , 'diameter_axis_aligned_bounding_box' , 'extended_attribute_names' , 'extended_attribute_types' , 'green' , 'has_distance_computation_data' , 'has_extended_attribute' , 'has_lines' , 'has_point_normals' , 'has_points' , 'has_polygons' , 'has_primitive_data' , 'has_primitive_rms' , 'has_segmentation_data' , 'has_shape_based_matching_3d_data' , 'has_surface_based_matching_data' , 'has_triangles' , 'has_xyz_mapping' , 'lines' , 'mapping_col' , 'mapping_row' , 'mapping_size' , 'neighbor_distance' , 'num_extended_attribute' , 'num_lines' , 'num_neighbors' , 'num_neighbors_fast' , 'num_points' , 'num_polygons' , 'num_primitive_parameter_extension' , 'num_triangles' , 'original_point_indices' , 'point_coord_x' , 'point_coord_y' , 'point_coord_z' , 'point_normal_x' , 'point_normal_y' , 'point_normal_z' , 'polygons' , 'primitive_parameter' , 'primitive_parameter_extension' , 'primitive_parameter_pose' , 'primitive_pose' , 'primitive_rms' , 'primitive_type' , 'red' , 'reference_point' , 'score' , 'triangles'
GenParamValue
(output_control) attribute.value(-array) →
(string / integer / real)
Werte des generischen Parameters.
get_object_model_3d_params
liefert den Wert 2 (H_MSG_TRUE), falls die
übergebenen Parameter korrekt sind. Ansonsten wird eine
Fehlerbehandlung durchgeführt.
read_object_model_3d
,
xyz_to_object_model_3d
,
prepare_object_model_3d
,
sample_object_model_3d
,
triangulate_object_model_3d
,
intersect_plane_object_model_3d
,
set_object_model_3d_attrib
,
fit_primitives_object_model_3d
,
gen_plane_object_model_3d
,
gen_sphere_object_model_3d
,
gen_cylinder_object_model_3d
,
gen_box_object_model_3d
,
gen_sphere_object_model_3d_center
write_object_model_3d
,
clear_object_model_3d
3D Metrology