register_object_model_3d_pairT_register_object_model_3d_pairRegisterObjectModel3dPairRegisterObjectModel3dPair (Operator)
Name
register_object_model_3d_pairT_register_object_model_3d_pairRegisterObjectModel3dPairRegisterObjectModel3dPair
— Suchen einer Transformation zwischen zwei 3D-Objektmodellen.
Signatur
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
HPose HObjectModel3D::RegisterObjectModel3dPair(const HObjectModel3D& ObjectModel3D2, const wchar_t* Method, const wchar_t* GenParamName, double GenParamValue, HTuple* Score) const
(Nur Windows)
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)
Beschreibung
register_object_model_3d_pairregister_object_model_3d_pairRegisterObjectModel3dPairRegisterObjectModel3dPairRegisterObjectModel3dPair
sucht eine Transformation
zwischen zwei 3D-Objektmodellen. Dieser Vorgang wird auch Registrierung
genannt. Die in PosePosePosePosepose
zurückgegebene
Pose beschreibt die Transformation, die nötig ist, um
ObjectModel3D1ObjectModel3D1ObjectModel3D1ObjectModel3D1objectModel3D1
in das Koordinatensystem des zweiten Objekts
ObjectModel3D2ObjectModel3D2ObjectModel3D2ObjectModel3D2objectModel3D2
zu überführen. Im Parameter ScoreScoreScoreScorescore
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 MethodMethodMethodMethodmethod
entweder eine volle
Suche ohne Einschränkung der relativen Lage mit 'matching'"matching""matching""matching""matching"
oder eine Verfeinerung der momentanen relativen Lage zum als
gemeinsam angenommenen globalen Koordinatenursprung mit '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 GenParamNameGenParamNameGenParamNameGenParamNamegenParamName
and GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue
können
das Matching und die Verfeinerung parametrisiert werden:
- '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" zielt auf eine relativ schnelle
Verarbeitung. Der Parametersatz 'accurate'"accurate""accurate""accurate""accurate" zielt
auf genauere Ergebnisse. Der Parametersatz 'robust'"robust""robust""robust""robust" zielt
neben einer höheren Genauigkeit auch auf eine exaktere Berechnung
der Bewertung in ScoreScoreScoreScorescore
, ist aber dafür langsamer.
Werteliste: 'fast'"fast""fast""fast""fast", 'accurate'"accurate""accurate""accurate""accurate",
'robust'"robust""robust""robust""robust"
Defaultwert: 'accurate'"accurate""accurate""accurate""accurate"
- '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" und
'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":
-
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" 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" 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":
-
Die Anzahl der
Iterationsschritte bei der Verfeinerung der Position.
Werteliste: 5, 7, 10
Defaultwert: '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":
-
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":
-
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":
-
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":
-
Invertiert die Normalen des
kleineren der zwei Objekte, sollten diese
inkompatible Normalenausrichtungen haben.
Werteliste: 'true'"true""true""true""true", 'false'"false""false""false""false"
Defaultwert: 'false'"false""false""false""false"
Ausführungsinformationen
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Dieser Operator unterstützt Cancel-Timeouts und Interrupts.
Parameter
ObjectModel3D1ObjectModel3D1ObjectModel3D1ObjectModel3D1objectModel3D1
(input_control) object_model_3d →
HObjectModel3D, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle des ersten 3D-Objektmodells.
ObjectModel3D2ObjectModel3D2ObjectModel3D2ObjectModel3D2objectModel3D2
(input_control) object_model_3d →
HObjectModel3D, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle des zweiten 3D-Objektmodells.
MethodMethodMethodMethodmethod
(input_control) string →
HTupleHTupleHtuple (string) (string) (HString) (char*)
Methode zur Registrierung.
Defaultwert:
'matching'
"matching"
"matching"
"matching"
"matching"
Werteliste: 'icp'"icp""icp""icp""icp", 'matching'"matching""matching""matching""matching"
GenParamNameGenParamNameGenParamNameGenParamNamegenParamName
(input_control) string(-array) →
HTupleHTupleHtuple (string) (string) (HString) (char*)
Namen der generischen Parameter.
Defaultwert: []
Werteliste: '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_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", '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_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_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_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"
GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue
(input_control) number(-array) →
HTupleHTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)
Werte der generischen Parameter.
Defaultwert: []
Wertevorschläge: 'fast'"fast""fast""fast""fast", 'accurate'"accurate""accurate""accurate""accurate", 'robust'"robust""robust""robust""robust", 0.1, 0.25, 0.5, 1, 'true'"true""true""true""true", 'false'"false""false""false""false"
ScoreScoreScoreScorescore
(output_control) number-array →
HTupleHTupleHtuple (real) (double) (double) (double)
Überlappung der zwei Objekte.
Beispiel (HDevelop)
* 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)
Ergebnis
register_object_model_3d_pairregister_object_model_3d_pairRegisterObjectModel3dPairRegisterObjectModel3dPairRegisterObjectModel3dPair
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_3dReadObjectModel3dReadObjectModel3dReadObjectModel3d
,
gen_object_model_3d_from_pointsgen_object_model_3d_from_pointsGenObjectModel3dFromPointsGenObjectModel3dFromPointsGenObjectModel3dFromPoints
,
xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d
Nachfolger
register_object_model_3d_globalregister_object_model_3d_globalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobal
,
affine_trans_object_model_3daffine_trans_object_model_3dAffineTransObjectModel3dAffineTransObjectModel3dAffineTransObjectModel3d
,
union_object_model_3dunion_object_model_3dUnionObjectModel3dUnionObjectModel3dUnionObjectModel3d
Siehe auch
register_object_model_3d_globalregister_object_model_3d_globalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobal
,
find_surface_modelfind_surface_modelFindSurfaceModelFindSurfaceModelFindSurfaceModel
Modul
3D Metrology