KlassenKlassenKlassenKlassen | | | | Operatoren

register_object_model_3d_globalT_register_object_model_3d_globalRegisterObjectModel3dGlobalregister_object_model_3d_globalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobal (Operator)

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.

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)

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)

Beschreibung

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

Parallelisierung

Parameter

ObjectModels3DObjectModels3DObjectModels3DObjectModels3DObjectModels3DobjectModels3D (input_control)  object_model_3d(-array) HObjectModel3D, HTupleHTupleHObjectModel3D, HTupleHObjectModel3DX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Handle mehrerer 3D-Objektmodelle.

HomMats3DHomMats3DHomMats3DHomMats3DHomMats3DhomMats3D (input_control)  hom_mat3d-array HHomMat3D, HTupleHTupleHTupleHHomMat3DX, VARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

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"

ToToToToToto (input_control)  number(-array) HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

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

Defaultwert: []

Werteliste: 0, 1, 2, 3, 4

GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName (input_control)  string-array HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (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"

GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue (input_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*) (double / Hlong / BSTR) (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"

HomMats3DOutHomMats3DOutHomMats3DOutHomMats3DOutHomMats3DOuthomMats3DOut (output_control)  hom_mat3d-array HHomMat3D, HTupleHTupleHTupleHHomMat3DX, VARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Resultierende Transformationen.

ScoresScoresScoresScoresScoresscores (output_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Anzahl der gefundenen Nachbarn mit ausreichender Überlappung pro eingegebenem 3D-Objektmodell.

Ergebnis

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.

Vorgänger

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

Nachfolger

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

Siehe auch

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

Modul

3D Metrology


KlassenKlassenKlassenKlassen | | | | Operatoren