| Operatoren |
register_object_model_3d_global — Verfeinern der relativen Lagen der eingegebenen 3D-Objektmodelle zueinander, basierend auf deren Überlappung.
register_object_model_3d_global( : : ObjectModels3D, HomMats3D, From, To, GenParamName, GenParamValue : HomMats3DOut, Scores)
register_object_model_3d_global verfeinert die relative Lage der angegebenen 3D-Objektmodelle zueinander, dieser Vorgang wird auch globale Registrierung genannt. Ausgehend von den mit HomMats3D angegebenen genäherten relativen Lagen der Modelle aus ObjectModels3D zueinander werden paarweise Überlappungsbereiche gesucht. Alle Eingabemodelle mit erkannten Überlappungen werden im Rahmen einer Ausgleichungsrechnung so gegeneinander verschoben, dass die Überlappung maximal ist. Dieser Vorgang wird dann iterativ wiederholt. Die Lagen der Modelle mit der höchsten erreichten Überlappung werden in HomMats3DOut relativ zu einem globalen Referenzsystem zurückgegeben. Die entsprechenden Transformationen können mit dem Operator affine_trans_object_model_3d auf die angegebenen 3D-Objektmodelle angewandt werden, um sie in ein gemeinsames Koordinatensystem zu überführen. Der Parameter Scores enthält pro 3D-Objektmodell die Anzahl an gefundenen Nachbarn mit ausreichender Überlappung. Wenn für mindestens ein 3D-Objektmodell keine Überlappung gefunden wird, wird eine Fehlerbehandlung durchgeführt.
Die genäherten relativen Lagen der Modelle müssen mithilfe der Parameter From und To konfiguriert und in HomMats3D angegeben werden. Es gibt drei mögliche Wege die relative Lage anzugeben:
Erstens kann durch das Setzen von From auf 'global' die Interpretation des Parameters HomMats3D als ein Satz von globalen Transformationen zu einem gemeinsamen Koordinatenursprung festgelegt werden. Die Anzahl der Transformationen in HomMats3D (je 12 Werte pro Transformation) muss in diesem Fall gleich der Anzahl der 3D-Objektmodelle sein. Der Parameter To darf in diesem Fall nicht gesetzt sein. Diese Parametrisierung ist für Fälle gedacht, in denen entweder das aufgenommene Objekt oder die Kamera statisch bleibt und auf das jeweils Andere eine bekannte Transformation angewandt wird, z.B. durch einen Drehteller oder einen Roboter. In diesem Fall werden alle Nachbarschaften, die aufgrund der angegebenen Startlösung denkbar sind, für die Optimierung berücksichtigt.
Zweitens kann durch das Setzen von From auf 'previous' die Interpretation des Parameters HomMats3D als ein Satz von relativen Verschiebungen zum jeweils vorhergehenden 3D-Objektmodell festgelegt werden. Hierfür wird eine Transformation weniger als die Anzahl der 3D-Objektmodelle benötigt, da die erste Transformation sich auf die Transformation vom ersten 3D-Objektmodell in das Referenzsystem des zweiten bezieht, usw. Der Parameter To darf in diesem Fall nicht gesetzt sein. Der Fall sollte angewandt werden, wenn die Kamera und das aufgenommene Objekt frei gegeneinander bewegt werden und die Transformation jeweils nur zur vorherigen Aufnahme ermittelt wird, z.B. mit dem Operator register_object_model_3d_pair. In diesem Fall werden alle Nachbarschaften, die aufgrund der angegebenen Startlösung denkbar sind, für die Optimierung berücksichtigt.
Drittens kann durch das Angeben von Indexpaaren in From und To jede einzelne Transformation in HomMats3D beschrieben werden. Die angegebenen Transformationen sind demnach immer die benötigten Transformationen, um das 3D-Objektmodell mit Index From in das Koordinatensystem des 3D-Objektmodells mit Index To zu verschieben. Die Indizes beziehen sich auf die Eingabeparameter von ObjectModels3D. In diesem Fall werden nur die Nachbarschaften berücksichtigt, die auch angegeben sind, somit sollten alle nötigen Überlappungen auch angegeben werden. Dies muss so geschehen, dass zwischen jedem Paar von Eingabeobjekten ein entsprechender Pfad von Transformationen vorhanden ist.
Wenn ObjectModels3D 3D-Primitive enthält, werden diese intern in Punktwolken umgewandelt und anschließend als solche behandelt.
Die numerisch maximal erreichbare Positionsgenauigkeit liegt bei etwa 0.1% der Punktwolkengröße. Die Genauigkeit hängt weiter vom Rauschen der Daten, von der Anzahl der Datenpunkte und von der Form der Punktwolken ab.
Der Vorgang der globalen Registrierung kann mit den Parametern GenParamName und GenParamValue weiter reguliert werden.
Es gibt zwei Standardparametersätze, die zwischen schneller Konvergenz ('fast') und genauer Überlappung ('accurate') abwägen.
Werteliste: 'fast', 'accurate'
Defaultwert: 'accurate'
Die relative Abtastrate der Eingabemodelle. Der Wert wird relativ zum Durchmesser der jeweiligen 3D-Objektmodelle interpretiert. Ein höherer Wert führt zu schnelleren Ausführungszeiten, während ein niedrigerer Wert zu genaueren Ergebnissen führt.
Vorgeschlagene Werte: 0.03, 0.05, 0.07
Defaultwert: 0.05 Assertion: 0 < 'rel_sampling_distance' < 1
Anzahl an Punkten, die für jeden zugeordneten Punkt bei der Berechnung der Überlappung ausgelassen werden. Ein hoher Wert erlaubt eine schnellere Berechnung bei etwas ungenaueren Ergebnissen.
Vorgeschlagene Werte: 1, 2, 20
Defaultwert: 2 Assertion: 'pose_ref_sub_sampling' > 0
Anzahl der Iterationen zur verbesserung der relativen Lagen. Je besser die initiale Schätzung der Lagen ist, desto weniger Iterationen werden benötigt.
Vorgeschlagene Werte: 1, 3, 10
Defaultwert: 3
This operator supports cancelling timeouts.
Handle mehrerer 3D-Objektmodelle.
Genäherte relative Lagen der 3D-Objektmodelle.
Typ der genäherten relativen Lagen in HomMats3D.
Defaultwert: 'global'
Werteliste: 0, 1, 2, 3, 4, 'global', 'previous'
Index des Ziel-3D-Objektmodells für die Angabe der genäherten relativen Lagen in HomMats3D, falls From Indizes enthält, andernfalls bleibt dieser Parameter leer.
Defaultwert: []
Werteliste: 0, 1, 2, 3, 4
Namen der generischen Parameter zum Steuern der globalen Registrierung.
Defaultwert: []
Werteliste: 'default_parameters', 'max_num_iterations', 'pose_ref_sub_sampling', 'rel_sampling_distance'
Werte der generischen Parameter zum Steuern der globalen Registrierung.
Defaultwert: []
Wertevorschläge: 0.03, 0.05, 0.07, 0.1, 0.25, 0.5, 1, 2, 5, 10, 20, 'fast', 'accurate'
Resultierende Transformationen.
Anzahl der gefundenen Nachbarn mit ausreichender Überlappung pro eingegebenem 3D-Objektmodell.
register_object_model_3d_global liefert den Wert 2 (H_MSG_TRUE) wenn alle Parameter korrekt sind. Andernfalls wird eine Fehlerbehandlung durchgeführt.
read_object_model_3d, xyz_to_object_model_3d, register_object_model_3d_pair, gen_object_model_3d_from_points
affine_trans_object_model_3d, union_object_model_3d, sample_object_model_3d, triangulate_object_model_3d
register_object_model_3d_pair, find_surface_model, refine_surface_model_pose
3D Metrology
| Operatoren |