register_object_model_3d_pairT_register_object_model_3d_pairRegisterObjectModel3dPairRegisterObjectModel3dPairregister_object_model_3d_pair (算子)
名称
register_object_model_3d_pairT_register_object_model_3d_pairRegisterObjectModel3dPairRegisterObjectModel3dPairregister_object_model_3d_pair — 搜索两个三维对象模型之间的变换。
签名
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
(
Windows only)
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_pairRegisterObjectModel3dPairRegisterObjectModel3dPairRegisterObjectModel3dPairregister_object_model_3d_pair searches for a transformation
between two 3D object models having an optimal alignment.
This process is called registration.
The transformation that is returned
in PosePosePosePoseposepose can be used to transform ObjectModel3D1ObjectModel3D1ObjectModel3D1ObjectModel3D1objectModel3D1object_model_3d1
to the reference frame of the second object ObjectModel3D2ObjectModel3D2ObjectModel3D2ObjectModel3D2objectModel3D2object_model_3d2.
ScoreScoreScoreScorescorescore returns the ratio of the overlapping
parts to the not overlapping parts of the two 3D object models.
If the two objects are not overlapping, no pose is returned.
The parameter MethodMethodMethodMethodmethodmethod decides if the initial relative
position is calculated by 'matching'"matching""matching""matching""matching""matching" or if only
the pose refinement is performed in relation to the then assumed
common global reference frame, which can be selected directly with
'icp'"icp""icp""icp""icp""icp".
The accuracy of the returned pose is limited to around
0.1% of the size of the point clouds due to numerical reasons. The accuracy
further depends on the noise of the data points, the number of
data points and the shape of the point clouds.
The matching process and the following refinement can be controlled using
the following name-value pairs in
GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name and GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value:
- 'default_parameters'"default_parameters""default_parameters""default_parameters""default_parameters""default_parameters":
-
To allow an easy control over the
parameters, three different sets of parameters are available.
Selecting the 'fast'"fast""fast""fast""fast""fast"
parameter set allows a shorter calculation time.
'accurate'"accurate""accurate""accurate""accurate""accurate" will give more accurate results.
'robust'"robust""robust""robust""robust""robust" additionally improves the quality of the resulting
ScoreScoreScoreScorescorescore at the cost of calculation time.
值列表:
'fast'"fast""fast""fast""fast""fast", 'accurate'"accurate""accurate""accurate""accurate""accurate",
'robust'"robust""robust""robust""robust""robust".
默认值:
'accurate'"accurate""accurate""accurate""accurate""accurate".
- 'rel_sampling_distance'"rel_sampling_distance""rel_sampling_distance""rel_sampling_distance""rel_sampling_distance""rel_sampling_distance":
-
This parameter controls the relative sampling rate of the 3D object
models that is used to represent the surfaces for the computation.
This value is relative to the diameter of the respective object
and defines the minimal distance between two sampled points.
A higher value will lead to faster and a lower value to more
accurate results. This parameter can also be set for each object
independently by using 'rel_sampling_distance_obj1'"rel_sampling_distance_obj1""rel_sampling_distance_obj1""rel_sampling_distance_obj1""rel_sampling_distance_obj1""rel_sampling_distance_obj1" and
'rel_sampling_distance_obj2'"rel_sampling_distance_obj2""rel_sampling_distance_obj2""rel_sampling_distance_obj2""rel_sampling_distance_obj2""rel_sampling_distance_obj2".
建议值:
0.03, 0.05, 0.07.
默认值:
0.05.
- 'key_point_fraction'"key_point_fraction""key_point_fraction""key_point_fraction""key_point_fraction""key_point_fraction":
-
This parameter controls the ratio
of sampled points that are considered as key points for the matching
process. The number is relative to the sampled points of the model.
Reducing this ratio speeds up the process, whereas increasing
leads to more robust results. This parameter can be also set
for each object independently by using
'key_point_fraction_obj1'"key_point_fraction_obj1""key_point_fraction_obj1""key_point_fraction_obj1""key_point_fraction_obj1""key_point_fraction_obj1" and
'key_point_fraction_obj2'"key_point_fraction_obj2""key_point_fraction_obj2""key_point_fraction_obj2""key_point_fraction_obj2""key_point_fraction_obj2".
建议值:
0.2, 0.3, 0.4.
默认值:
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":
-
The number of iterative steps
used for the pose refinement.
建议值:
5, 7, 10.
默认值:
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":
-
Number of points that are skipped
for the pose refinement. The value specifies the number of points
that are skipped per selected point. Increasing this value
allows faster convergence at the cost of less accurate results.
This parameter is only relevant for the smaller of the two objects.
建议值:
1, 2, 20.
默认值:
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":
-
Maximum distance that two
faces might have to be considered as potentially overlapping.
This value is relative to the diameter of the larger object.
建议值:
0.05, 0.1, 0.15.
默认值:
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":
-
Maximum distance that two
faces might have to be considered as potentially overlapping, as
absolute value.
- 'model_invert_normals'"model_invert_normals""model_invert_normals""model_invert_normals""model_invert_normals""model_invert_normals":
-
Invert the normals of the smaller
object, if its normals are inverted relative to the other object.
值列表:
'true'"true""true""true""true""true", 'false'"false""false""false""false""false".
默认值:
'false'"false""false""false""false""false".
执行信息
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 未采用并行化处理。
此算子支持取消超时和中断。
参数
ObjectModel3D1ObjectModel3D1ObjectModel3D1ObjectModel3D1objectModel3D1object_model_3d1 (输入控制) object_model_3d → HObjectModel3D, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle of the first 3D object model.
ObjectModel3D2ObjectModel3D2ObjectModel3D2ObjectModel3D2objectModel3D2object_model_3d2 (输入控制) object_model_3d → HObjectModel3D, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle of the second 3D object model.
MethodMethodMethodMethodmethodmethod (输入控制) string → HTuplestrHTupleHtuple (string) (string) (HString) (char*)
Method for the registration.
默认值:
'matching'
"matching"
"matching"
"matching"
"matching"
"matching"
值列表:
'icp'"icp""icp""icp""icp""icp", 'matching'"matching""matching""matching""matching""matching"
GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name (输入控制) string(-array) → HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)
通用参数的名称。
默认值:
[]
值列表:
'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"
GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value (输入控制) number(-array) → HTupleMaybeSequence[Union[int, str, float]]HTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)
通用参数的值。
默认值:
[]
建议值:
'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"
ScoreScoreScoreScorescorescore (输出控制) number-array → HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
Overlapping of the two 3D object models.
示例(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)
结果
register_object_model_3d_pairregister_object_model_3d_pairRegisterObjectModel3dPairRegisterObjectModel3dPairRegisterObjectModel3dPairregister_object_model_3d_pair 在所有参数正确时返回 2 ( H_MSG_TRUE )。如有必要,则抛出异常。
可能的前趋
read_object_model_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3dread_object_model_3d,
gen_object_model_3d_from_pointsgen_object_model_3d_from_pointsGenObjectModel3dFromPointsGenObjectModel3dFromPointsGenObjectModel3dFromPointsgen_object_model_3d_from_points,
xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3dxyz_to_object_model_3d
可能的后继
register_object_model_3d_globalregister_object_model_3d_globalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobalregister_object_model_3d_global,
affine_trans_object_model_3daffine_trans_object_model_3dAffineTransObjectModel3dAffineTransObjectModel3dAffineTransObjectModel3daffine_trans_object_model_3d,
union_object_model_3dunion_object_model_3dUnionObjectModel3dUnionObjectModel3dUnionObjectModel3dunion_object_model_3d
另见
register_object_model_3d_globalregister_object_model_3d_globalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobalRegisterObjectModel3dGlobalregister_object_model_3d_global,
find_surface_modelfind_surface_modelFindSurfaceModelFindSurfaceModelFindSurfaceModelfind_surface_model
模块
三维计量