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

register_object_model_3d_global( : : ObjectModels3D, HomMats3D, From, To, GenParamName, GenParamValue : HomMats3DOut, Scores)

Herror T_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)

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

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"

ToToToTototo (input_control)  number(-array) HTupleMaybeSequence[int]HTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Index des Ziel-3D-Objektmodells für die Angabe der genäherten relativen Lagen in HomMats3DHomMats3DHomMats3DHomMats3DhomMats3Dhom_mats_3d, falls FromFromFromFromfromfrom Indizes enthält, andernfalls bleibt dieser Parameter leer.

Defaultwert: []

Werteliste: 0, 1, 2, 3, 4

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