register_object_model_3d_globalT_register_object_model_3d_globalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobalregister_object_model_3d_global (Operator)
Name
register_object_model_3d_globalT_register_object_model_3d_globalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobalregister_object_model_3d_global
— Verfeinern der relativen Lagen der eingegebenen 3D-Objektmodelle
zueinander, basierend auf deren Überlappung.
Signatur
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
HHomMat3DArray HObjectModel3D::RegisterObjectModel3dGlobal(const HHomMat3DArray& HomMats3D, const wchar_t* From, Hlong To, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Scores) const
(Nur Windows)
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)
def register_object_model_3d_global(object_models_3d: MaybeSequence[HHandle], hom_mats_3d: Sequence[Union[int, float]], from_val: MaybeSequence[Union[int, str]], to: MaybeSequence[int], gen_param_name: Sequence[str], gen_param_value: Sequence[Union[int, str, float]]) -> Tuple[Sequence[Union[int, float]], Sequence[float]]
Beschreibung
register_object_model_3d_globalregister_object_model_3d_globalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobalregister_object_model_3d_global
verfeinert die relative Lage
der angegebenen 3D-Objektmodelle zueinander, dieser Vorgang wird auch
globale Registrierung genannt. Ausgehend von
den mit HomMats3DHomMats3DHomMats3DHomMats3DhomMats3Dhom_mats_3d
angegebenen genäherten relativen Lagen
der Modelle aus ObjectModels3DObjectModels3DObjectModels3DObjectModels3DobjectModels3Dobject_models_3d
zueinander werden paarweise
Überlappungsbereiche gesucht. Alle
Eingabemodelle mit erkannten Überlappungen werden im Rahmen
einer Ausgleichsrechnung 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 HomMats3DOutHomMats3DOutHomMats3DOutHomMats3DOuthomMats3DOuthom_mats_3dout
relativ zu einem globalen Referenzsystem zurückgegeben. Die entsprechenden
Transformationen können mit dem Operator affine_trans_object_model_3daffine_trans_object_model_3dAffineTransObjectModel3dAffineTransObjectModel3dAffineTransObjectModel3daffine_trans_object_model_3d
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 HomMats3DHomMats3DHomMats3DHomMats3DhomMats3Dhom_mats_3d
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 HomMats3DHomMats3DHomMats3DHomMats3DhomMats3Dhom_mats_3d
als ein Satz von globalen Transformationen zu einem gemeinsamen
Koordinatenursprung festgelegt werden. Die Anzahl der
Transformationen in HomMats3DHomMats3DHomMats3DHomMats3DhomMats3Dhom_mats_3d
(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 HomMats3DHomMats3DHomMats3DHomMats3DhomMats3Dhom_mats_3d
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_pairRegisterObjectModel3dPairRegisterObjectModel3dPairRegisterObjectModel3dPairregister_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 FromFromFromFromfromfrom
und
ToToToTototo
jede einzelne Transformation in HomMats3DHomMats3DHomMats3DHomMats3DhomMats3Dhom_mats_3d
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 ObjectModels3DObjectModels3DObjectModels3DObjectModels3DobjectModels3Dobject_models_3d
.
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 ObjectModels3DObjectModels3DObjectModels3DObjectModels3DobjectModels3Dobject_models_3d
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 GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name
und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value
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".
Standardwert: '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.
Wertevorschläge: 0.03, 0.05,
0.07.
Standardwerte:
0.05 ('default_parameters'"default_parameters""default_parameters""default_parameters""default_parameters""default_parameters" = 'accurate'"accurate""accurate""accurate""accurate""accurate"),
0.07 ('default_parameters'"default_parameters""default_parameters""default_parameters""default_parameters""default_parameters" = 'fast'"fast""fast""fast""fast""fast").
Restriktion: 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.
{Wertevorschläge:} 1, 2, 20.
Standardwerte:
2 ('default_parameters'"default_parameters""default_parameters""default_parameters""default_parameters""default_parameters" = 'accurate'"accurate""accurate""accurate""accurate""accurate"),
10 ('default_parameters'"default_parameters""default_parameters""default_parameters""default_parameters""default_parameters" = 'fast'"fast""fast""fast""fast""fast").
Restriktion: '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.
{Wertevorschläge:} 1, 3, 10.
Standardwert: 3.
Ausführungsinformationen
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Automatisch parallelisiert auf interner Datenebene.
Dieser Operator unterstützt Cancel-Timeouts und Interrupts.
Parameter
ObjectModels3DObjectModels3DObjectModels3DObjectModels3DobjectModels3Dobject_models_3d
(input_control) object_model_3d(-array) →
HObjectModel3D, HTupleMaybeSequence[HHandle]HTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle mehrerer 3D-Objektmodelle.
HomMats3DHomMats3DHomMats3DHomMats3DhomMats3Dhom_mats_3d
(input_control) hom_mat3d-array →
HHomMat3D, HTupleSequence[Union[int, float]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Genäherte relative Lagen der 3D-Objektmodelle.
FromFromFromFromfromfrom
(input_control) number(-array) →
HTupleMaybeSequence[Union[int, str]]HTupleHtuple (string / integer) (string / int / long) (HString / Hlong) (char* / Hlong)
Typ der genäherten relativen Lagen in
HomMats3DHomMats3DHomMats3DHomMats3DhomMats3Dhom_mats_3d
.
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"
GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name
(input_control) string-array →
HTupleSequence[str]HTupleHtuple (string) (string) (HString) (char*)
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"
GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value
(input_control) number-array →
HTupleSequence[Union[int, str, float]]HTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)
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"
HomMats3DOutHomMats3DOutHomMats3DOutHomMats3DOuthomMats3DOuthom_mats_3dout
(output_control) hom_mat3d-array →
HHomMat3D, HTupleSequence[Union[int, float]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Resultierende Transformationen.
ScoresScoresScoresScoresscoresscores
(output_control) number-array →
HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
Anzahl der gefundenen Nachbarn mit ausreichender
Überlappung pro eingegebenem 3D-Objektmodell.
Ergebnis
register_object_model_3d_globalregister_object_model_3d_globalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobalregister_object_model_3d_global
liefert den Wert TRUE wenn alle
Parameter korrekt sind. Andernfalls wird eine Fehlerbehandlung durchgeführt.
Vorgänger
read_object_model_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3dread_object_model_3d
,
xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3dxyz_to_object_model_3d
,
register_object_model_3d_pairregister_object_model_3d_pairRegisterObjectModel3dPairRegisterObjectModel3dPairRegisterObjectModel3dPairregister_object_model_3d_pair
,
gen_object_model_3d_from_pointsgen_object_model_3d_from_pointsGenObjectModel3dFromPointsGenObjectModel3dFromPointsGenObjectModel3dFromPointsgen_object_model_3d_from_points
Nachfolger
affine_trans_object_model_3daffine_trans_object_model_3dAffineTransObjectModel3dAffineTransObjectModel3dAffineTransObjectModel3daffine_trans_object_model_3d
,
union_object_model_3dunion_object_model_3dUnionObjectModel3dUnionObjectModel3dUnionObjectModel3dunion_object_model_3d
,
sample_object_model_3dsample_object_model_3dSampleObjectModel3dSampleObjectModel3dSampleObjectModel3dsample_object_model_3d
,
triangulate_object_model_3dtriangulate_object_model_3dTriangulateObjectModel3dTriangulateObjectModel3dTriangulateObjectModel3dtriangulate_object_model_3d
Siehe auch
register_object_model_3d_pairregister_object_model_3d_pairRegisterObjectModel3dPairRegisterObjectModel3dPairRegisterObjectModel3dPairregister_object_model_3d_pair
,
find_surface_modelfind_surface_modelFindSurfaceModelFindSurfaceModelFindSurfaceModelfind_surface_model
,
refine_surface_model_poserefine_surface_model_poseRefineSurfaceModelPoseRefineSurfaceModelPoseRefineSurfaceModelPoserefine_surface_model_pose
Modul
3D Metrology