Name
register_object_model_3d_pairT_register_object_model_3d_pairRegisterObjectModel3dPairregister_object_model_3d_pairRegisterObjectModel3dPairRegisterObjectModel3dPair — Suchen einer Transformation zwischen zwei 3D-Objektmodellen.
Herror register_object_model_3d_pair(const HTuple& ObjectModel3D1, const HTuple& ObjectModel3D2, const HTuple& Method, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Pose, HTuple* Score)
HTuple HObjectModel3D::RegisterObjectModel3dPair(const HObjectModel3D& ObjectModel3D2, const HTuple& Method, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score) const
void RegisterObjectModel3dPair(const HTuple& ObjectModel3D1, const HTuple& ObjectModel3D2, const HTuple& Method, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Pose, HTuple* Score)
HPose HObjectModel3D::RegisterObjectModel3dPair(const HObjectModel3D& ObjectModel3D2, const HString& Method, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score) const
HPose HObjectModel3D::RegisterObjectModel3dPair(const HObjectModel3D& ObjectModel3D2, const HString& Method, const HString& GenParamName, double GenParamValue, HTuple* Score) const
HPose HObjectModel3D::RegisterObjectModel3dPair(const HObjectModel3D& ObjectModel3D2, const char* Method, const char* GenParamName, double GenParamValue, HTuple* Score) const
void HOperatorSetX.RegisterObjectModel3dPair(
[in] VARIANT ObjectModel3D1, [in] VARIANT ObjectModel3D2, [in] VARIANT Method, [in] VARIANT GenParamName, [in] VARIANT GenParamValue, [out] VARIANT* Pose, [out] VARIANT* Score)
VARIANT HObjectModel3DX.RegisterObjectModel3dPair(
[in] IHObjectModel3DX* ObjectModel3D2, [in] BSTR Method, [in] VARIANT GenParamName, [in] VARIANT GenParamValue, [out] VARIANT* Score)
static void HOperatorSet.RegisterObjectModel3dPair(HTuple objectModel3D1, HTuple objectModel3D2, HTuple method, HTuple genParamName, HTuple genParamValue, out HTuple pose, out HTuple score)
HPose HObjectModel3D.RegisterObjectModel3dPair(HObjectModel3D objectModel3D2, string method, HTuple genParamName, HTuple genParamValue, out HTuple score)
HPose HObjectModel3D.RegisterObjectModel3dPair(HObjectModel3D objectModel3D2, string method, string genParamName, double genParamValue, out HTuple score)
register_object_model_3d_pairregister_object_model_3d_pairRegisterObjectModel3dPairregister_object_model_3d_pairRegisterObjectModel3dPairRegisterObjectModel3dPair sucht eine Transformation
zwischen zwei 3D-Objektmodellen. Dieser Vorgang wird auch Registrierung
genannt. Die in PosePosePosePosePosepose zurückgegebene
Pose beschreibt die Transformation, die nötig ist, um
ObjectModel3D1ObjectModel3D1ObjectModel3D1ObjectModel3D1ObjectModel3D1objectModel3D1 in das Koordinatensystem des zweiten Objekts
ObjectModel3D2ObjectModel3D2ObjectModel3D2ObjectModel3D2ObjectModel3D2objectModel3D2 zu überführen. Im Parameter ScoreScoreScoreScoreScorescore wird
der Anteil der überlappenden Oberflächen zurückgegeben (als Wert zwischen
0.0 und 1.0).
Sollte keine Überlappung vorhanden sein, wird auch keine Pose zurückgegeben.
Es kann als Methode im Parameter MethodMethodMethodMethodMethodmethod entweder eine volle
Suche ohne Einschränkung der relativen Lage mit 'matching'"matching""matching""matching""matching""matching"
oder eine Verfeinerung der momentanen relativen Lage zum als
gemeinsam angenommenen globalen Koordinatenursprung mit 'icp'"icp""icp""icp""icp""icp"
ausgewählt werden. Die Verfeinerung findet auch nach dem Matching statt.
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.
Mit den Parametern GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName and GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue können
das Matching und die Verfeinerung parametrisiert werden:
- 'default_parameters'"default_parameters""default_parameters""default_parameters""default_parameters""default_parameters":
-
Um eine einfache Parametrisierung
zu ermöglichen stehen einige Standardparametersätze zur Verfügung.
Der Parametersatz 'fast'"fast""fast""fast""fast""fast" zielt auf eine relativ schnelle
Verarbeitung. Der Parametersatz 'accurate'"accurate""accurate""accurate""accurate""accurate" zielt
auf genauere Ergebnisse. Der Parametersatz 'robust'"robust""robust""robust""robust""robust" zielt
neben einer höheren Genauigkeit auch auf eine exaktere Berechnung
der Bewertung in ScoreScoreScoreScoreScorescore, ist aber dafür langsamer.
Werteliste: 'fast'"fast""fast""fast""fast""fast", 'accurate'"accurate""accurate""accurate""accurate""accurate",
'robust'"robust""robust""robust""robust""robust"
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":
-
Legt die relative Abtastrate fest, mit der Oberflächen der
3D-Objektmodelle abgetastet werden. Der Wert wird relativ zum
Durchmesser des jeweiligen Objektes angegeben und gibt den minimalen
Abstand von zwei während der Abtastung ausgewählten Punkten an.
Umso höher der Wert ist, desto
schneller und ungenauer ist die Berechnung der relativen Lage.
Dieser Parameter kann mit Hilfe von
'rel_sampling_distance_obj1'"rel_sampling_distance_obj1""rel_sampling_distance_obj1""rel_sampling_distance_obj1""rel_sampling_distance_obj1""rel_sampling_distance_obj1" und
'rel_sampling_distance_obj2'"rel_sampling_distance_obj2""rel_sampling_distance_obj2""rel_sampling_distance_obj2""rel_sampling_distance_obj2""rel_sampling_distance_obj2" für beide Objekte unabhängig
gesetzt werden.
Werteliste: 0.03, 0.05, 0.07
Defaultwert: 0.05
- 'key_point_fraction'"key_point_fraction""key_point_fraction""key_point_fraction""key_point_fraction""key_point_fraction":
-
Der Anteil an Punkten, die beim
Matching als Referenzpunkte gewählt werden. Dieser Wert kann für das
erste Objekt mit 'key_point_fraction_obj1'"key_point_fraction_obj1""key_point_fraction_obj1""key_point_fraction_obj1""key_point_fraction_obj1""key_point_fraction_obj1" und für das zweite
mit 'key_point_fraction_obj2'"key_point_fraction_obj2""key_point_fraction_obj2""key_point_fraction_obj2""key_point_fraction_obj2""key_point_fraction_obj2" separat gesetzt werden.
Die Erhöhung dieses Wertes führt zu einer längeren Berechnung,
erlaubt aber kleinere Überlappungen zu finden.
Werteliste: 0.2, 0.3, 0.4
Defaultwert: 0.3
- 'pose_ref_num_steps'"pose_ref_num_steps""pose_ref_num_steps""pose_ref_num_steps""pose_ref_num_steps""pose_ref_num_steps":
-
Die Anzahl der
Iterationsschritte bei der Verfeinerung der Position.
Werteliste: 5, 7, 10
Defaultwert: '5'"5""5""5""5""5"
- '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 der Punkte, die
bei der Positionsverfeinerung pro ausgewertetem Punkt zu
überspringen sind.
Werteliste: 1, 2, 20
Defaultwert: 2
- 'pose_ref_dist_threshold_rel'"pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel":
-
Der maximale Abstand,
den zwei Flächen haben dürfen, um als Überlappungskandidaten
bei der Positionsverfeinerung in Frage zu kommen.
Dieser Wert wird relativ zum Durchmesser
des größeren Objektes angegeben.
Werteliste: 0.05, 0.1, 0.15
Defaultwert: 0.1
- 'pose_ref_dist_threshold_abs'"pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs":
-
Der maximale Abstand,
den zwei Flächen haben dürfen, um als Überlappungskandidaten
bei der Positionsverfeinerung in Frage zu kommen.
Dieser Wert wird absolut angegeben.
- 'model_invert_normals'"model_invert_normals""model_invert_normals""model_invert_normals""model_invert_normals""model_invert_normals":
-
Invertiert die Normalen des
kleineren der zwei Objekte, sollten diese
inkompatible Normalenausrichtungen haben.
Werteliste: 'true'"true""true""true""true""true", 'false'"false""false""false""false""false"
Defaultwert: 'false'"false""false""false""false""false"
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Handle des ersten 3D-Objektmodells.
Handle des zweiten 3D-Objektmodells.
Methode zur Registrierung.
Defaultwert:
'matching'
"matching"
"matching"
"matching"
"matching"
"matching"
Werteliste: 'icp'"icp""icp""icp""icp""icp", 'matching'"matching""matching""matching""matching""matching"
Namen der generischen Parameter.
Defaultwert: []
Werteliste: 'default_parameters'"default_parameters""default_parameters""default_parameters""default_parameters""default_parameters", 'key_point_fraction'"key_point_fraction""key_point_fraction""key_point_fraction""key_point_fraction""key_point_fraction", 'key_point_fraction_obj1'"key_point_fraction_obj1""key_point_fraction_obj1""key_point_fraction_obj1""key_point_fraction_obj1""key_point_fraction_obj1", 'key_point_fraction_obj2'"key_point_fraction_obj2""key_point_fraction_obj2""key_point_fraction_obj2""key_point_fraction_obj2""key_point_fraction_obj2", 'model_invert_normals'"model_invert_normals""model_invert_normals""model_invert_normals""model_invert_normals""model_invert_normals", 'pose_ref_dist_threshold_abs'"pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs""pose_ref_dist_threshold_abs", 'pose_ref_dist_threshold_rel'"pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel""pose_ref_dist_threshold_rel", 'pose_ref_num_steps'"pose_ref_num_steps""pose_ref_num_steps""pose_ref_num_steps""pose_ref_num_steps""pose_ref_num_steps", '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", 'rel_sampling_distance_obj1'"rel_sampling_distance_obj1""rel_sampling_distance_obj1""rel_sampling_distance_obj1""rel_sampling_distance_obj1""rel_sampling_distance_obj1", 'rel_sampling_distance_obj2'"rel_sampling_distance_obj2""rel_sampling_distance_obj2""rel_sampling_distance_obj2""rel_sampling_distance_obj2""rel_sampling_distance_obj2"
Werte der generischen Parameter.
Defaultwert: []
Wertevorschläge: 'fast'"fast""fast""fast""fast""fast", 'accurate'"accurate""accurate""accurate""accurate""accurate", 'robust'"robust""robust""robust""robust""robust", 0.1, 0.25, 0.5, 1, 'true'"true""true""true""true""true", 'false'"false""false""false""false""false"
Überlappung der zwei Objekte.
* Generate two boxes
gen_box_object_model_3d ([0,0,0,0,0,0,0],3,2,1, ObjectModel3D1)
gen_box_object_model_3d ([0,0,0.5,15,0,0,0],3,2,1, ObjectModel3D2)
* Match them
register_object_model_3d_pair (ObjectModel3D1, ObjectModel3D2, 'matching',\
[], [], Pose, Score)
register_object_model_3d_pairregister_object_model_3d_pairRegisterObjectModel3dPairregister_object_model_3d_pairRegisterObjectModel3dPairRegisterObjectModel3dPair 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,
gen_object_model_3d_from_pointsgen_object_model_3d_from_pointsGenObjectModel3dFromPointsgen_object_model_3d_from_pointsGenObjectModel3dFromPointsGenObjectModel3dFromPoints,
xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3d
register_object_model_3d_globalregister_object_model_3d_globalRegisterObjectModel3dGlobalregister_object_model_3d_globalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobal,
affine_trans_object_model_3daffine_trans_object_model_3dAffineTransObjectModel3daffine_trans_object_model_3dAffineTransObjectModel3dAffineTransObjectModel3d,
union_object_model_3dunion_object_model_3dUnionObjectModel3dunion_object_model_3dUnionObjectModel3dUnionObjectModel3d
register_object_model_3d_globalregister_object_model_3d_globalRegisterObjectModel3dGlobalregister_object_model_3d_globalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobal,
find_surface_modelfind_surface_modelFindSurfaceModelfind_surface_modelFindSurfaceModelFindSurfaceModel
3D Metrology