Name
register_object_model_3d_globalT_register_object_model_3d_globalRegisterObjectModel3dGlobalregister_object_model_3d_globalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobal — Verfeinern der relativen Lagen der eingegebenen 3D-Objektmodelle
zueinander, basierend auf deren Überlappung.
Herror register_object_model_3d_global(const HTuple& ObjectModels3D, const HTuple& HomMats3D, const HTuple& From, const HTuple& To, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* HomMats3DOut, HTuple* Scores)
HTuple HObjectModel3D::RegisterObjectModel3dGlobal(const HTuple& HomMats3D, const HTuple& From, const HTuple& To, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Scores) const
void RegisterObjectModel3dGlobal(const HTuple& ObjectModels3D, const HTuple& HomMats3D, const HTuple& From, const HTuple& To, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* HomMats3DOut, HTuple* Scores)
static HHomMat3DArray HObjectModel3D::RegisterObjectModel3dGlobal(const HObjectModel3DArray& ObjectModels3D, const HHomMat3DArray& HomMats3D, const HTuple& From, const HTuple& To, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Scores)
HHomMat3DArray HObjectModel3D::RegisterObjectModel3dGlobal(const HHomMat3DArray& HomMats3D, const HString& From, Hlong To, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Scores) const
HHomMat3DArray HObjectModel3D::RegisterObjectModel3dGlobal(const HHomMat3DArray& HomMats3D, const char* From, Hlong To, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Scores) const
void HOperatorSetX.RegisterObjectModel3dGlobal(
[in] VARIANT ObjectModels3D, [in] VARIANT HomMats3D, [in] VARIANT From, [in] VARIANT To, [in] VARIANT GenParamName, [in] VARIANT GenParamValue, [out] VARIANT* HomMats3DOut, [out] VARIANT* Scores)
IHHomMat3DX* HObjectModel3DX.RegisterObjectModel3dGlobal(
[in] IHHomMat3DX* HomMats3D, [in] VARIANT From, [in] VARIANT To, [in] VARIANT GenParamName, [in] VARIANT GenParamValue, [out] VARIANT* Scores)
static void HOperatorSet.RegisterObjectModel3dGlobal(HTuple objectModels3D, HTuple homMats3D, HTuple from, HTuple to, HTuple genParamName, HTuple genParamValue, out HTuple homMats3DOut, out HTuple scores)
static HHomMat3D[] HObjectModel3D.RegisterObjectModel3dGlobal(HObjectModel3D[] objectModels3D, HHomMat3D[] homMats3D, HTuple from, HTuple to, HTuple genParamName, HTuple genParamValue, out HTuple scores)
HHomMat3D[] HObjectModel3D.RegisterObjectModel3dGlobal(HHomMat3D[] homMats3D, string from, int to, HTuple genParamName, HTuple genParamValue, out HTuple scores)
register_object_model_3d_globalregister_object_model_3d_globalRegisterObjectModel3dGlobalregister_object_model_3d_globalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobal verfeinert die relative Lage
der angegebenen 3D-Objektmodelle zueinander, dieser Vorgang wird auch
globale Registrierung genannt. Ausgehend von
den mit HomMats3DHomMats3DHomMats3DHomMats3DHomMats3DhomMats3D angegebenen genäherten relativen Lagen
der Modelle aus ObjectModels3DObjectModels3DObjectModels3DObjectModels3DObjectModels3DobjectModels3D 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 HomMats3DOutHomMats3DOutHomMats3DOutHomMats3DOutHomMats3DOuthomMats3DOut
relativ zu einem globalen Referenzsystem zurückgegeben. Die entsprechenden
Transformationen können mit dem Operator affine_trans_object_model_3daffine_trans_object_model_3dAffineTransObjectModel3daffine_trans_object_model_3dAffineTransObjectModel3dAffineTransObjectModel3d
auf die angegebenen 3D-Objektmodelle angewandt werden, um sie in ein
gemeinsames Koordinatensystem zu überführen. Der Parameter
ScoresScoresScoresScoresScoresscores 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
FromFromFromFromFromfrom und ToToToToToto konfiguriert und in HomMats3DHomMats3DHomMats3DHomMats3DHomMats3DhomMats3D
angegeben werden. Es gibt drei mögliche Wege die relative Lage anzugeben:
Erstens kann durch das Setzen von FromFromFromFromFromfrom auf 'global'"global""global""global""global""global"
die Interpretation des Parameters HomMats3DHomMats3DHomMats3DHomMats3DHomMats3DhomMats3D
als ein Satz von globalen Transformationen zu einem gemeinsamen
Koordinatenursprung festgelegt werden. Die Anzahl der
Transformationen in HomMats3DHomMats3DHomMats3DHomMats3DHomMats3DhomMats3D (je 12 Werte pro Transformation)
muss in diesem Fall gleich der Anzahl der 3D-Objektmodelle sein. Der
Parameter ToToToToToto 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 FromFromFromFromFromfrom auf 'previous'"previous""previous""previous""previous""previous"
die Interpretation des Parameters HomMats3DHomMats3DHomMats3DHomMats3DHomMats3DhomMats3D 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
ToToToToToto 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_pairregister_object_model_3d_pairRegisterObjectModel3dPairregister_object_model_3d_pairRegisterObjectModel3dPairRegisterObjectModel3dPair.
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 FromFromFromFromFromfrom und
ToToToToToto jede einzelne Transformation in HomMats3DHomMats3DHomMats3DHomMats3DHomMats3DhomMats3D
beschrieben werden. Die angegebenen Transformationen sind demnach immer die
benötigten Transformationen, um das 3D-Objektmodell mit Index
FromFromFromFromFromfrom in das Koordinatensystem des 3D-Objektmodells mit Index
ToToToToToto zu verschieben. Die Indizes beziehen sich auf die
Eingabeparameter von ObjectModels3DObjectModels3DObjectModels3DObjectModels3DObjectModels3DobjectModels3D.
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 ObjectModels3DObjectModels3DObjectModels3DObjectModels3DObjectModels3DobjectModels3D 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 GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName und GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue
weiter reguliert werden.
- 'default_parameters'"default_parameters""default_parameters""default_parameters""default_parameters""default_parameters":
-
Es gibt zwei Standardparametersätze,
die zwischen schneller Konvergenz ('fast'"fast""fast""fast""fast""fast") und genauer
Überlappung ('accurate'"accurate""accurate""accurate""accurate""accurate") abwägen.
Werteliste: 'fast'"fast""fast""fast""fast""fast", 'accurate'"accurate""accurate""accurate""accurate""accurate"
Defaultwert: 'accurate'"accurate""accurate""accurate""accurate""accurate"
- 'rel_sampling_distance'"rel_sampling_distance""rel_sampling_distance""rel_sampling_distance""rel_sampling_distance""rel_sampling_distance":
-
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'"rel_sampling_distance""rel_sampling_distance""rel_sampling_distance""rel_sampling_distance""rel_sampling_distance" < 1
- 'pose_ref_sub_sampling'"pose_ref_sub_sampling""pose_ref_sub_sampling""pose_ref_sub_sampling""pose_ref_sub_sampling""pose_ref_sub_sampling":
-
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'"pose_ref_sub_sampling""pose_ref_sub_sampling""pose_ref_sub_sampling""pose_ref_sub_sampling""pose_ref_sub_sampling" > 0
- 'max_num_iterations'"max_num_iterations""max_num_iterations""max_num_iterations""max_num_iterations""max_num_iterations":
-
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
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Automatisch parallelisiert auf interner Datenebene.
Handle mehrerer 3D-Objektmodelle.
Genäherte relative Lagen der 3D-Objektmodelle.
FromFromFromFromFromfrom (input_control) number(-array) → HTupleHTupleHTupleVARIANTHtuple (string / integer) (string / int / long) (HString / Hlong) (char* / Hlong) (BSTR / Hlong) (char* / Hlong)
Typ der genäherten relativen Lagen in
HomMats3DHomMats3DHomMats3DHomMats3DHomMats3DhomMats3D.
Defaultwert:
'global'
"global"
"global"
"global"
"global"
"global"
Werteliste: 0, 1, 2, 3, 4, 'global'"global""global""global""global""global", 'previous'"previous""previous""previous""previous""previous"
Namen der generischen Parameter zum Steuern der
globalen Registrierung.
Defaultwert: []
Werteliste: 'default_parameters'"default_parameters""default_parameters""default_parameters""default_parameters""default_parameters", 'max_num_iterations'"max_num_iterations""max_num_iterations""max_num_iterations""max_num_iterations""max_num_iterations", 'pose_ref_sub_sampling'"pose_ref_sub_sampling""pose_ref_sub_sampling""pose_ref_sub_sampling""pose_ref_sub_sampling""pose_ref_sub_sampling", 'rel_sampling_distance'"rel_sampling_distance""rel_sampling_distance""rel_sampling_distance""rel_sampling_distance""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'"fast""fast""fast""fast""fast", 'accurate'"accurate""accurate""accurate""accurate""accurate"
Resultierende Transformationen.
Anzahl der gefundenen Nachbarn mit ausreichender
Überlappung pro eingegebenem 3D-Objektmodell.
register_object_model_3d_globalregister_object_model_3d_globalRegisterObjectModel3dGlobalregister_object_model_3d_globalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobal liefert den Wert 2 (H_MSG_TRUE) wenn alle
Parameter korrekt sind. Andernfalls wird eine Fehlerbehandlung durchgeführt.
read_object_model_3dread_object_model_3dReadObjectModel3dread_object_model_3dReadObjectModel3dReadObjectModel3d,
xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3d,
register_object_model_3d_pairregister_object_model_3d_pairRegisterObjectModel3dPairregister_object_model_3d_pairRegisterObjectModel3dPairRegisterObjectModel3dPair,
gen_object_model_3d_from_pointsgen_object_model_3d_from_pointsGenObjectModel3dFromPointsgen_object_model_3d_from_pointsGenObjectModel3dFromPointsGenObjectModel3dFromPoints
affine_trans_object_model_3daffine_trans_object_model_3dAffineTransObjectModel3daffine_trans_object_model_3dAffineTransObjectModel3dAffineTransObjectModel3d,
union_object_model_3dunion_object_model_3dUnionObjectModel3dunion_object_model_3dUnionObjectModel3dUnionObjectModel3d,
sample_object_model_3dsample_object_model_3dSampleObjectModel3dsample_object_model_3dSampleObjectModel3dSampleObjectModel3d,
triangulate_object_model_3dtriangulate_object_model_3dTriangulateObjectModel3dtriangulate_object_model_3dTriangulateObjectModel3dTriangulateObjectModel3d
register_object_model_3d_pairregister_object_model_3d_pairRegisterObjectModel3dPairregister_object_model_3d_pairRegisterObjectModel3dPairRegisterObjectModel3dPair,
find_surface_modelfind_surface_modelFindSurfaceModelfind_surface_modelFindSurfaceModelFindSurfaceModel,
refine_surface_model_poserefine_surface_model_poseRefineSurfaceModelPoserefine_surface_model_poseRefineSurfaceModelPoseRefineSurfaceModelPose
3D Metrology