refine_surface_model_poseRefineSurfaceModelPoseRefineSurfaceModelPoserefine_surface_model_poseT_refine_surface_model_pose
Short description
refine_surface_model_poseRefineSurfaceModelPoseRefineSurfaceModelPoserefine_surface_model_poseT_refine_surface_model_pose β Refine the pose of a surface model in a 3D scene.
Signature
refine_surface_model_pose( surface_model SurfaceModelID, object_model_3d ObjectModel3D, pose InitialPose, real MinScore, string ReturnResultHandle, attribute.name GenParamName, attribute.value GenParamValue, out pose Pose, out real Score, out surface_matching_result SurfaceMatchingResultID )void RefineSurfaceModelPose( const HTuple& SurfaceModelID, const HTuple& ObjectModel3D, const HTuple& InitialPose, const HTuple& MinScore, const HTuple& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Pose, HTuple* Score, HTuple* SurfaceMatchingResultID )static void HOperatorSet.RefineSurfaceModelPose( HTuple surfaceModelID, HTuple objectModel3D, HTuple initialPose, HTuple minScore, HTuple returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple pose, out HTuple score, out HTuple surfaceMatchingResultID )def refine_surface_model_pose( surface_model_id: HHandle, object_model_3d: HHandle, initial_pose: Sequence[Union[float, int]], min_score: MaybeSequence[Union[float, int]], return_result_handle: str, gen_param_name: Sequence[str], gen_param_value: Sequence[Union[str, float, int]] ) -> Tuple[Sequence[Union[float, int]], Sequence[float], Sequence[HHandle]]
def refine_surface_model_pose_s( surface_model_id: HHandle, object_model_3d: HHandle, initial_pose: Sequence[Union[float, int]], min_score: MaybeSequence[Union[float, int]], return_result_handle: str, gen_param_name: Sequence[str], gen_param_value: Sequence[Union[str, float, int]] ) -> Tuple[Sequence[Union[float, int]], Sequence[float], HHandle]Herror T_refine_surface_model_pose( const Htuple SurfaceModelID, const Htuple ObjectModel3D, const Htuple InitialPose, const Htuple MinScore, const Htuple ReturnResultHandle, const Htuple GenParamName, const Htuple GenParamValue, Htuple* Pose, Htuple* Score, Htuple* SurfaceMatchingResultID )
HPoseArray HObjectModel3D::RefineSurfaceModelPose( const HSurfaceModel& SurfaceModelID, const HPoseArray& InitialPose, const HTuple& MinScore, const HString& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResultArray* SurfaceMatchingResultID ) const
HPose HObjectModel3D::RefineSurfaceModelPose( const HSurfaceModel& SurfaceModelID, const HPose& InitialPose, double MinScore, const HString& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResult* SurfaceMatchingResultID ) const
HPose HObjectModel3D::RefineSurfaceModelPose( const HSurfaceModel& SurfaceModelID, const HPose& InitialPose, double MinScore, const char* ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResult* SurfaceMatchingResultID ) const
HPose HObjectModel3D::RefineSurfaceModelPose( const HSurfaceModel& SurfaceModelID, const HPose& InitialPose, double MinScore, const wchar_t* ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResult* SurfaceMatchingResultID ) const (Windows only)
HPoseArray HSurfaceModel::RefineSurfaceModelPose( const HObjectModel3D& ObjectModel3D, const HPoseArray& InitialPose, const HTuple& MinScore, const HString& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResultArray* SurfaceMatchingResultID ) const
HPose HSurfaceModel::RefineSurfaceModelPose( const HObjectModel3D& ObjectModel3D, const HPose& InitialPose, double MinScore, const HString& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResult* SurfaceMatchingResultID ) const
HPose HSurfaceModel::RefineSurfaceModelPose( const HObjectModel3D& ObjectModel3D, const HPose& InitialPose, double MinScore, const char* ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResult* SurfaceMatchingResultID ) const
HPose HSurfaceModel::RefineSurfaceModelPose( const HObjectModel3D& ObjectModel3D, const HPose& InitialPose, double MinScore, const wchar_t* ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResult* SurfaceMatchingResultID ) const (Windows only)
static HPoseArray HSurfaceMatchingResult::RefineSurfaceModelPose( const HSurfaceModel& SurfaceModelID, const HObjectModel3D& ObjectModel3D, const HPoseArray& InitialPose, const HTuple& MinScore, const HString& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResultArray* SurfaceMatchingResultID )
HPose HSurfaceMatchingResult::RefineSurfaceModelPose( const HSurfaceModel& SurfaceModelID, const HObjectModel3D& ObjectModel3D, const HPose& InitialPose, double MinScore, const HString& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score )
HPose HSurfaceMatchingResult::RefineSurfaceModelPose( const HSurfaceModel& SurfaceModelID, const HObjectModel3D& ObjectModel3D, const HPose& InitialPose, double MinScore, const char* ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score )
HPose HSurfaceMatchingResult::RefineSurfaceModelPose( const HSurfaceModel& SurfaceModelID, const HObjectModel3D& ObjectModel3D, const HPose& InitialPose, double MinScore, const wchar_t* ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score ) (Windows only)
HPose[] HObjectModel3D.RefineSurfaceModelPose( HSurfaceModel surfaceModelID, HPose[] initialPose, HTuple minScore, string returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple score, out HSurfaceMatchingResult[] surfaceMatchingResultID )
HPose HObjectModel3D.RefineSurfaceModelPose( HSurfaceModel surfaceModelID, HPose initialPose, double minScore, string returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple score, out HSurfaceMatchingResult surfaceMatchingResultID )
HPose[] HSurfaceModel.RefineSurfaceModelPose( HObjectModel3D objectModel3D, HPose[] initialPose, HTuple minScore, string returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple score, out HSurfaceMatchingResult[] surfaceMatchingResultID )
HPose HSurfaceModel.RefineSurfaceModelPose( HObjectModel3D objectModel3D, HPose initialPose, double minScore, string returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple score, out HSurfaceMatchingResult surfaceMatchingResultID )
static HPose[] HSurfaceMatchingResult.RefineSurfaceModelPose( HSurfaceModel surfaceModelID, HObjectModel3D objectModel3D, HPose[] initialPose, HTuple minScore, string returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple score, out HSurfaceMatchingResult[] surfaceMatchingResultID )
HPose HSurfaceMatchingResult.RefineSurfaceModelPose( HSurfaceModel surfaceModelID, HObjectModel3D objectModel3D, HPose initialPose, double minScore, string returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple score )
Description
The operator refine_surface_model_poseRefineSurfaceModelPose refines the approximate
pose InitialPoseinitialPoseinitial_pose of the surface model SurfaceModelIDsurfaceModelIDsurface_model_id in
the 3D scene ObjectModel3DobjectModel3Dobject_model_3d.
The surface model SurfaceModelIDsurfaceModelIDsurface_model_id must have been created previously
with create_surface_modelCreateSurfaceModel or read_surface_modelReadSurfaceModel.
Additionally, set_surface_model_paramSetSurfaceModelParam can be used to
set certain parameters that influence the refinement, such as
restricting the allowed range of rotations.
refine_surface_model_poseRefineSurfaceModelPose is useful if the pose of an object in
a scene is approximately known and only needs to be refined.
The refined pose is returned in Poseposepose, along with a score in
Scorescorescore.
It is possible to pass multiple poses for refinement.
Note that, contrary to find_surface_modelFindSurfaceModel, the returned poses are
not sorted by their score but are returned in the same order as the input
poses.
The maximum possible error in the approximate pose that can still be
refined depends on the type of object, the amount of clutter in the scene
and the visible parts of the objects.
In general, differences in the orientation of up to 15Β° and
differences in the position of up to 10% can be refined.
The accuracy of the pose refinement is limited to around
0.1% of the modelβs size due to numerical reasons. The accuracy
further depends on the noise of the scene points, the number of
scene points and the shape of the model.
Details about the pose refinement and the parameters are described in the
documentation of find_surface_modelFindSurfaceModel in the section about the
dense pose refinement step.
The following generic parameters can be set for
refine_surface_model_poseRefineSurfaceModelPose, and are also documented in
find_surface_modelFindSurfaceModel:
'pose_ref_num_steps'"pose_ref_num_steps",
'pose_ref_sub_sampling'"pose_ref_sub_sampling",
'pose_ref_dist_threshold_rel'"pose_ref_dist_threshold_rel",
'pose_ref_dist_threshold_abs'"pose_ref_dist_threshold_abs",
'pose_ref_scoring_dist_rel'"pose_ref_scoring_dist_rel",
'pose_ref_scoring_dist_abs'"pose_ref_scoring_dist_abs",
'pose_ref_use_scene_normals'"pose_ref_use_scene_normals",
'3d_edge_min_amplitude_rel'"3d_edge_min_amplitude_rel",
'3d_edge_min_amplitude_abs'"3d_edge_min_amplitude_abs",
'3d_edges'"3d_edges",
'use_3d_edges'"use_3d_edges",
'use_view_based'"use_view_based",
'use_self_similar_poses'"use_self_similar_poses",
'pose_ref_dist_threshold_edges_rel'"pose_ref_dist_threshold_edges_rel",
'pose_ref_dist_threshold_edges_abs'"pose_ref_dist_threshold_edges_abs",
'pose_ref_scoring_dist_edges_rel'"pose_ref_scoring_dist_edges_rel", and
'pose_ref_scoring_dist_edges_abs'"pose_ref_scoring_dist_edges_abs".
Execution information
-
Multithreading type: reentrant (runs in parallel with non-exclusive operators).
-
Multithreading scope: global (may be called from any thread).
-
Processed without parallelization.
This operator returns a handle. Note that the state of an instance of this handle type may be changed by specific operators even though the handle is used as an input parameter by those operators.
This operator supports canceling timeouts and interrupts.
Parameters
SurfaceModelIDsurfaceModelIDsurface_model_id (input_control) surface_model β (handle)HTuple (HHandle)HSurfaceModel, HTuple (IntPtr)HHandleHtuple (handle)
Handle of the surface model.
ObjectModel3DobjectModel3Dobject_model_3d (input_control) object_model_3d β (handle)HTuple (HHandle)HObjectModel3D, HTuple (IntPtr)HHandleHtuple (handle)
Handle of the 3D object model containing the
scene.
InitialPoseinitialPoseinitial_pose (input_control) pose(-array) β (real / integer)HTuple (double / Hlong)HPose, HTuple (double / int / long)Sequence[Union[float, int]]Htuple (double / Hlong)
Initial pose of the surface model in the scene.
MinScoreminScoremin_score (input_control) real(-array) β (real / integer)HTuple (double / Hlong)HTuple (double / int / long)MaybeSequence[Union[float, int]]Htuple (double / Hlong)
Minimum score of the returned poses.
Default: 00
Restriction: MinScore >= 0
ReturnResultHandlereturnResultHandlereturn_result_handle (input_control) string β (string)HTuple (HString)HTuple (string)strHtuple (char*)
Enable returning a result handle in
SurfaceMatchingResultIDsurfaceMatchingResultIDsurface_matching_result_id.
Default: 'false'"false"
List of values: 'false', 'true'"false", "true"
GenParamNamegenParamNamegen_param_name (input_control) attribute.name-array β (string)HTuple (HString)HTuple (string)Sequence[str]Htuple (char*)
Names of the generic parameters.
Default: [][]
List of values: '3d_edge_min_amplitude_abs', '3d_edge_min_amplitude_rel', '3d_edges', 'pose_ref_dist_threshold_abs', 'pose_ref_dist_threshold_rel', 'pose_ref_num_steps', 'pose_ref_scoring_dist_abs', 'pose_ref_scoring_dist_rel', 'pose_ref_sub_sampling', 'pose_ref_use_scene_normals', 'use_3d_edges', 'use_self_similar_poses', 'use_view_based', 'viewpoint'"3d_edge_min_amplitude_abs", "3d_edge_min_amplitude_rel", "3d_edges", "pose_ref_dist_threshold_abs", "pose_ref_dist_threshold_rel", "pose_ref_num_steps", "pose_ref_scoring_dist_abs", "pose_ref_scoring_dist_rel", "pose_ref_sub_sampling", "pose_ref_use_scene_normals", "use_3d_edges", "use_self_similar_poses", "use_view_based", "viewpoint"
GenParamValuegenParamValuegen_param_value (input_control) attribute.value-array β (string / real / integer)HTuple (HString / double / Hlong)HTuple (string / double / int / long)Sequence[Union[str, float, int]]Htuple (char* / double / Hlong)
Values of the generic parameters.
Default: [][]
Suggested values: 0, 1, 'true', 'false', 0.005, 0.01, 0.03, 0.05, 0.10, 1, "true", "false", 0.005, 0.01, 0.03, 0.05, 0.1
Poseposepose (output_control) pose(-array) β (real / integer)HTuple (double / Hlong)HPose, HTuple (double / int / long)Sequence[Union[float, int]]Htuple (double / Hlong)
3D pose of the surface model in the scene.
Scorescorescore (output_control) real-array β (real)HTuple (double)HTuple (double)Sequence[float]Htuple (double)
Score of the found instances of the model.
SurfaceMatchingResultIDsurfaceMatchingResultIDsurface_matching_result_id (output_control) surface_matching_result(-array) β (handle)HTuple (HHandle)HSurfaceMatchingResult, HTuple (IntPtr)Sequence[HHandle]Htuple (handle)
Handle of the matching result, if enabled in
ReturnResultHandlereturnResultHandlereturn_result_handle.
Result
refine_surface_model_poseRefineSurfaceModelPose returns 2 (H_MSG_TRUE) if all parameters are
correct. If necessary, an exception is raised.
Combinations with other operators
Combinations
Possible predecessors
read_object_model_3dReadObjectModel3d, xyz_to_object_model_3dXyzToObjectModel3d, get_object_model_3d_paramsGetObjectModel3dParams, read_surface_modelReadSurfaceModel, create_surface_modelCreateSurfaceModel, get_surface_model_paramGetSurfaceModelParam, find_surface_modelFindSurfaceModel, edges_object_model_3dEdgesObjectModel3d
Possible successors
get_surface_matching_resultGetSurfaceMatchingResult, clear_surface_matching_resultClearSurfaceMatchingResult, clear_object_model_3dClearObjectModel3d
Alternatives
find_surface_modelFindSurfaceModel, refine_surface_model_pose_imageRefineSurfaceModelPoseImage, find_surface_model_imageFindSurfaceModelImage
See also
create_surface_modelCreateSurfaceModel, find_surface_modelFindSurfaceModel, refine_surface_model_pose_imageRefineSurfaceModelPoseImage
Module
3D Metrology