KlassenKlassenKlassenKlassen | | | | Operatoren

register_object_model_3d_pairT_register_object_model_3d_pairRegisterObjectModel3dPairregister_object_model_3d_pairRegisterObjectModel3dPairRegisterObjectModel3dPair (Operator)

Name

register_object_model_3d_pairT_register_object_model_3d_pairRegisterObjectModel3dPairregister_object_model_3d_pairRegisterObjectModel3dPairRegisterObjectModel3dPair — Suchen einer Transformation zwischen zwei 3D-Objektmodellen.

Signatur

register_object_model_3d_pair( : : ObjectModel3D1, ObjectModel3D2, Method, GenParamName, GenParamValue : Pose, Score)

Herror T_register_object_model_3d_pair(const Htuple ObjectModel3D1, const Htuple ObjectModel3D2, const Htuple Method, const Htuple GenParamName, const Htuple GenParamValue, Htuple* Pose, Htuple* Score)

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)

Beschreibung

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"

Parallelisierung

Parameter

ObjectModel3D1ObjectModel3D1ObjectModel3D1ObjectModel3D1ObjectModel3D1objectModel3D1 (input_control)  object_model_3d HObjectModel3D, HTupleHTupleHObjectModel3D, HTupleHObjectModel3DX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Handle des ersten 3D-Objektmodells.

ObjectModel3D2ObjectModel3D2ObjectModel3D2ObjectModel3D2ObjectModel3D2objectModel3D2 (input_control)  object_model_3d HObjectModel3D, HTupleHTupleHObjectModel3D, HTupleHObjectModel3DX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Handle des zweiten 3D-Objektmodells.

MethodMethodMethodMethodMethodmethod (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Methode zur Registrierung.

Defaultwert: 'matching' "matching" "matching" "matching" "matching" "matching"

Werteliste: 'icp'"icp""icp""icp""icp""icp", 'matching'"matching""matching""matching""matching""matching"

GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName (input_control)  string(-array) HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

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"

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.

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"

PosePosePosePosePosepose (output_control)  pose HPose, HTupleHTupleHTupleHPoseX, VARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Pose, mit der ObjectModel3D1ObjectModel3D1ObjectModel3D1ObjectModel3D1ObjectModel3D1objectModel3D1 in das Referenzsystem von ObjectModel3D2ObjectModel3D2ObjectModel3D2ObjectModel3D2ObjectModel3D2objectModel3D2 verschoben werden kann.

ScoreScoreScoreScoreScorescore (output_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (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_pairRegisterObjectModel3dPairregister_object_model_3d_pairRegisterObjectModel3dPairRegisterObjectModel3dPair 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, 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

Nachfolger

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

Siehe auch

register_object_model_3d_globalregister_object_model_3d_globalRegisterObjectModel3dGlobalregister_object_model_3d_globalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobal, find_surface_modelfind_surface_modelFindSurfaceModelfind_surface_modelFindSurfaceModelFindSurfaceModel

Modul

3D Metrology


KlassenKlassenKlassenKlassen | | | | Operatoren