ClassesClassesClassesClasses | | | | Operators

find_surface_model_imageT_find_surface_model_imageFindSurfaceModelImagefind_surface_model_imageFindSurfaceModelImageFindSurfaceModelImage (Operator)

Name

find_surface_model_imageT_find_surface_model_imageFindSurfaceModelImagefind_surface_model_imageFindSurfaceModelImageFindSurfaceModelImage — Find the best matches of a surface model in a 3D scene and images.

Signature

find_surface_model_image(Image : : SurfaceModelID, ObjectModel3D, RelSamplingDistance, KeyPointFraction, MinScore, ReturnResultHandle, GenParamName, GenParamValue : Pose, Score, SurfaceMatchingResultID)

Herror T_find_surface_model_image(const Hobject Image, const Htuple SurfaceModelID, const Htuple ObjectModel3D, const Htuple RelSamplingDistance, const Htuple KeyPointFraction, const Htuple MinScore, const Htuple ReturnResultHandle, const Htuple GenParamName, const Htuple GenParamValue, Htuple* Pose, Htuple* Score, Htuple* SurfaceMatchingResultID)

Herror find_surface_model_image(Hobject Image, const HTuple& SurfaceModelID, const HTuple& ObjectModel3D, const HTuple& RelSamplingDistance, const HTuple& KeyPointFraction, const HTuple& MinScore, const HTuple& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Pose, HTuple* Score, HTuple* SurfaceMatchingResultID)

HTuple HObjectModel3D::FindSurfaceModelImage(const HImageArray& Image, const HSurfaceModel& SurfaceModelID, const HTuple& RelSamplingDistance, const HTuple& KeyPointFraction, const HTuple& MinScore, const HTuple& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HTuple* SurfaceMatchingResultID) const

HTuple HSurfaceModel::FindSurfaceModelImage(const HImageArray& Image, const HObjectModel3D& ObjectModel3D, const HTuple& RelSamplingDistance, const HTuple& KeyPointFraction, const HTuple& MinScore, const HTuple& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HTuple* SurfaceMatchingResultID) const

HTuple HSurfaceMatchingResult::FindSurfaceModelImage(const HImageArray& Image, const HSurfaceModel& SurfaceModelID, const HObjectModel3D& ObjectModel3D, const HTuple& RelSamplingDistance, const HTuple& KeyPointFraction, const HTuple& MinScore, const HTuple& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score)

void FindSurfaceModelImage(const HObject& Image, const HTuple& SurfaceModelID, const HTuple& ObjectModel3D, const HTuple& RelSamplingDistance, const HTuple& KeyPointFraction, const HTuple& MinScore, const HTuple& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Pose, HTuple* Score, HTuple* SurfaceMatchingResultID)

HPoseArray HObjectModel3D::FindSurfaceModelImage(const HImage& Image, const HSurfaceModel& SurfaceModelID, double RelSamplingDistance, double KeyPointFraction, const HTuple& MinScore, const HString& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResultArray* SurfaceMatchingResultID) const

HPose HObjectModel3D::FindSurfaceModelImage(const HImage& Image, const HSurfaceModel& SurfaceModelID, double RelSamplingDistance, double KeyPointFraction, double MinScore, const HString& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResult* SurfaceMatchingResultID) const

HPose HObjectModel3D::FindSurfaceModelImage(const HImage& Image, const HSurfaceModel& SurfaceModelID, double RelSamplingDistance, double KeyPointFraction, double MinScore, const char* ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResult* SurfaceMatchingResultID) const

HPoseArray HSurfaceModel::FindSurfaceModelImage(const HImage& Image, const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, double KeyPointFraction, const HTuple& MinScore, const HString& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResultArray* SurfaceMatchingResultID) const

HPose HSurfaceModel::FindSurfaceModelImage(const HImage& Image, const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, double KeyPointFraction, double MinScore, const HString& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResult* SurfaceMatchingResultID) const

HPose HSurfaceModel::FindSurfaceModelImage(const HImage& Image, const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, double KeyPointFraction, double MinScore, const char* ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResult* SurfaceMatchingResultID) const

static HPoseArray HSurfaceMatchingResult::FindSurfaceModelImage(const HImage& Image, const HSurfaceModel& SurfaceModelID, const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, double KeyPointFraction, const HTuple& MinScore, const HString& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score, HSurfaceMatchingResultArray* SurfaceMatchingResultID)

HPose HSurfaceMatchingResult::FindSurfaceModelImage(const HImage& Image, const HSurfaceModel& SurfaceModelID, const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, double KeyPointFraction, double MinScore, const HString& ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score)

HPose HSurfaceMatchingResult::FindSurfaceModelImage(const HImage& Image, const HSurfaceModel& SurfaceModelID, const HObjectModel3D& ObjectModel3D, double RelSamplingDistance, double KeyPointFraction, double MinScore, const char* ReturnResultHandle, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* Score)

void HOperatorSetX.FindSurfaceModelImage(
[in] IHUntypedObjectX* Image, [in] VARIANT SurfaceModelID, [in] VARIANT ObjectModel3D, [in] VARIANT RelSamplingDistance, [in] VARIANT KeyPointFraction, [in] VARIANT MinScore, [in] VARIANT ReturnResultHandle, [in] VARIANT GenParamName, [in] VARIANT GenParamValue, [out] VARIANT* Pose, [out] VARIANT* Score, [out] VARIANT* SurfaceMatchingResultID)

VARIANT HObjectModel3DX.FindSurfaceModelImage(
[in] IHImageX* Image, [in] IHSurfaceModelX* SurfaceModelID, [in] double RelSamplingDistance, [in] double KeyPointFraction, [in] VARIANT MinScore, [in] BSTR ReturnResultHandle, [in] VARIANT GenParamName, [in] VARIANT GenParamValue, [out] VARIANT* Score, [out] IHSurfaceMatchingResultX*SurfaceMatchingResultID)

VARIANT HSurfaceModelX.FindSurfaceModelImage(
[in] IHImageX* Image, [in] IHObjectModel3DX* ObjectModel3D, [in] double RelSamplingDistance, [in] double KeyPointFraction, [in] VARIANT MinScore, [in] BSTR ReturnResultHandle, [in] VARIANT GenParamName, [in] VARIANT GenParamValue, [out] VARIANT* Score, [out] IHSurfaceMatchingResultX*SurfaceMatchingResultID)

VARIANT HSurfaceMatchingResultX.FindSurfaceModelImage(
[in] IHImageX* Image, [in] IHSurfaceModelX* SurfaceModelID, [in] IHObjectModel3DX* ObjectModel3D, [in] double RelSamplingDistance, [in] double KeyPointFraction, [in] VARIANT MinScore, [in] BSTR ReturnResultHandle, [in] VARIANT GenParamName, [in] VARIANT GenParamValue, [out] VARIANT* Score)

static void HOperatorSet.FindSurfaceModelImage(HObject image, HTuple surfaceModelID, HTuple objectModel3D, HTuple relSamplingDistance, HTuple keyPointFraction, HTuple minScore, HTuple returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple pose, out HTuple score, out HTuple surfaceMatchingResultID)

HPose[] HObjectModel3D.FindSurfaceModelImage(HImage image, HSurfaceModel surfaceModelID, double relSamplingDistance, double keyPointFraction, HTuple minScore, string returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple score, out HSurfaceMatchingResult[] surfaceMatchingResultID)

HPose HObjectModel3D.FindSurfaceModelImage(HImage image, HSurfaceModel surfaceModelID, double relSamplingDistance, double keyPointFraction, double minScore, string returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple score, out HSurfaceMatchingResult surfaceMatchingResultID)

HPose[] HSurfaceModel.FindSurfaceModelImage(HImage image, HObjectModel3D objectModel3D, double relSamplingDistance, double keyPointFraction, HTuple minScore, string returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple score, out HSurfaceMatchingResult[] surfaceMatchingResultID)

HPose HSurfaceModel.FindSurfaceModelImage(HImage image, HObjectModel3D objectModel3D, double relSamplingDistance, double keyPointFraction, double minScore, string returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple score, out HSurfaceMatchingResult surfaceMatchingResultID)

static HPose[] HSurfaceMatchingResult.FindSurfaceModelImage(HImage image, HSurfaceModel surfaceModelID, HObjectModel3D objectModel3D, double relSamplingDistance, double keyPointFraction, HTuple minScore, string returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple score, out HSurfaceMatchingResult[] surfaceMatchingResultID)

HPose HSurfaceMatchingResult.FindSurfaceModelImage(HImage image, HSurfaceModel surfaceModelID, HObjectModel3D objectModel3D, double relSamplingDistance, double keyPointFraction, double minScore, string returnResultHandle, HTuple genParamName, HTuple genParamValue, out HTuple score)

Description

The operator find_surface_model_imagefind_surface_model_imageFindSurfaceModelImagefind_surface_model_imageFindSurfaceModelImageFindSurfaceModelImage finds the best matches of the surface model SurfaceModelIDSurfaceModelIDSurfaceModelIDSurfaceModelIDSurfaceModelIDsurfaceModelID in the scene that is comprised of the 3D surface in ObjectModel3DObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D and the images of the scene in ImageImageImageImageImageimage. Note that the number of images passed in ImageImageImageImageImageimage must correspond to the number of cameras set with set_surface_model_paramset_surface_model_paramSetSurfaceModelParamset_surface_model_paramSetSurfaceModelParamSetSurfaceModelParam. Note also that the surface model must have been created by create_surface_modelcreate_surface_modelCreateSurfaceModelcreate_surface_modelCreateSurfaceModelCreateSurfaceModel with the parameter 'train_3d_edges'"train_3d_edges""train_3d_edges""train_3d_edges""train_3d_edges""train_3d_edges" enabled.

The images are used only in the sparse and dense refinement step. For this, the refinement simultaneously optimizes the alignment of the model with the 3D scene as well as the alignment of the reprojected edges with edges in the passed images. The domain of the images is ignored.

In addition to the parameters documented in find_surface_modelfind_surface_modelFindSurfaceModelfind_surface_modelFindSurfaceModelFindSurfaceModel, find_surface_model_imagefind_surface_model_imageFindSurfaceModelImagefind_surface_model_imageFindSurfaceModelImageFindSurfaceModelImage also supports the following generic parameters:

'min_contrast'"min_contrast""min_contrast""min_contrast""min_contrast""min_contrast":

Sets the minimum contrast of the object in the search images. Edges with a contrast below this threshold are ignored in the refinement.

Suggested values: 5, 10, 20

Default value: 10

Assertion: 'min_contrast'"min_contrast""min_contrast""min_contrast""min_contrast""min_contrast" >= 0

'max_deformation'"max_deformation""max_deformation""max_deformation""max_deformation""max_deformation":

Sets the search range in pixels for corresponding edges in the image. This parameter can be used if the shape of the object is slightly deformed compared to the original 3D model used in create_surface_modelcreate_surface_modelCreateSurfaceModelcreate_surface_modelCreateSurfaceModelCreateSurfaceModel. Note that increasing this parameter can have a significant impact on the runtime of the refinement.

Suggested values: 0, 1, 5

Default value: 1

Assertion: 'max_deformation'"max_deformation""max_deformation""max_deformation""max_deformation""max_deformation" >= 0

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.

Parameters

ImageImageImageImageImageimage (input_object)  (multichannel-)image(-array) objectHImageHImageHImageHImageXHobject (byte / uint2)

Images of the scene.

SurfaceModelIDSurfaceModelIDSurfaceModelIDSurfaceModelIDSurfaceModelIDsurfaceModelID (input_control)  surface_model HSurfaceModel, HTupleHTupleHSurfaceModel, HTupleHSurfaceModelX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Handle of the surface model.

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

Handle of the 3D object model containing the scene.

RelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistanceRelSamplingDistancerelSamplingDistance (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Scene sampling distance relative to the diameter of the surface model.

Default value: 0.05

Suggested values: 0.1, 0.07, 0.05, 0.04, 0.03

Restriction: 0 < RelSamplingDistance < 1

KeyPointFractionKeyPointFractionKeyPointFractionKeyPointFractionKeyPointFractionkeyPointFraction (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Fraction of sampled scene points used as key points.

Default value: 0.2

Suggested values: 0.3, 0.2, 0.1, 0.05

Restriction: 0 < KeyPointFraction <= 1

MinScoreMinScoreMinScoreMinScoreMinScoreminScore (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Minimum score of the returned poses.

Default value: 0

Restriction: MinScore >= 0

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

Enable returning a result handle in SurfaceMatchingResultIDSurfaceMatchingResultIDSurfaceMatchingResultIDSurfaceMatchingResultIDSurfaceMatchingResultIDsurfaceMatchingResultID.

Default value: 'false' "false" "false" "false" "false" "false"

Suggested values: 'true'"true""true""true""true""true", 'false'"false""false""false""false""false"

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

Names of the generic parameters.

Default value: []

List of values: '3d_edge_min_amplitude_abs'"3d_edge_min_amplitude_abs""3d_edge_min_amplitude_abs""3d_edge_min_amplitude_abs""3d_edge_min_amplitude_abs""3d_edge_min_amplitude_abs", '3d_edge_min_amplitude_rel'"3d_edge_min_amplitude_rel""3d_edge_min_amplitude_rel""3d_edge_min_amplitude_rel""3d_edge_min_amplitude_rel""3d_edge_min_amplitude_rel", '3d_edges'"3d_edges""3d_edges""3d_edges""3d_edges""3d_edges", 'dense_pose_refinement'"dense_pose_refinement""dense_pose_refinement""dense_pose_refinement""dense_pose_refinement""dense_pose_refinement", 'max_deformation'"max_deformation""max_deformation""max_deformation""max_deformation""max_deformation", 'max_gap'"max_gap""max_gap""max_gap""max_gap""max_gap", 'max_overlap_dist_abs'"max_overlap_dist_abs""max_overlap_dist_abs""max_overlap_dist_abs""max_overlap_dist_abs""max_overlap_dist_abs", 'max_overlap_dist_rel'"max_overlap_dist_rel""max_overlap_dist_rel""max_overlap_dist_rel""max_overlap_dist_rel""max_overlap_dist_rel", 'min_contrast'"min_contrast""min_contrast""min_contrast""min_contrast""min_contrast", 'num_matches'"num_matches""num_matches""num_matches""num_matches""num_matches", '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_scoring_dist_abs'"pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs""pose_ref_scoring_dist_abs", 'pose_ref_scoring_dist_rel'"pose_ref_scoring_dist_rel""pose_ref_scoring_dist_rel""pose_ref_scoring_dist_rel""pose_ref_scoring_dist_rel""pose_ref_scoring_dist_rel", 'pose_ref_sub_sampling'"pose_ref_sub_sampling""pose_ref_sub_sampling""pose_ref_sub_sampling""pose_ref_sub_sampling""pose_ref_sub_sampling", 'pose_ref_use_scene_normals'"pose_ref_use_scene_normals""pose_ref_use_scene_normals""pose_ref_use_scene_normals""pose_ref_use_scene_normals""pose_ref_use_scene_normals", 'scene_normal_computation'"scene_normal_computation""scene_normal_computation""scene_normal_computation""scene_normal_computation""scene_normal_computation", 'score_type'"score_type""score_type""score_type""score_type""score_type", 'sparse_pose_refinement'"sparse_pose_refinement""sparse_pose_refinement""sparse_pose_refinement""sparse_pose_refinement""sparse_pose_refinement", 'viewpoint'"viewpoint""viewpoint""viewpoint""viewpoint""viewpoint"

GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue (input_control)  attribute.value-array HTupleHTupleHTupleVARIANTHtuple (string / real / integer) (string / double / int / long) (HString / double / Hlong) (char* / double / Hlong) (BSTR / double / Hlong) (char* / double / Hlong)

Values of the generic parameters.

Default value: []

Suggested values: 0, 1, 'true'"true""true""true""true""true", 'false'"false""false""false""false""false", 0.005, 0.01, 0.03, 0.05, 0.1, 'num_scene_points'"num_scene_points""num_scene_points""num_scene_points""num_scene_points""num_scene_points", 'model_point_fraction'"model_point_fraction""model_point_fraction""model_point_fraction""model_point_fraction""model_point_fraction", 'num_model_points'"num_model_points""num_model_points""num_model_points""num_model_points""num_model_points", 'fast'"fast""fast""fast""fast""fast", 'mls'"mls""mls""mls""mls""mls"

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

3D pose of the surface model in the scene.

ScoreScoreScoreScoreScorescore (output_control)  real-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Score of the found instances of the surface model.

SurfaceMatchingResultIDSurfaceMatchingResultIDSurfaceMatchingResultIDSurfaceMatchingResultIDSurfaceMatchingResultIDsurfaceMatchingResultID (output_control)  surface_matching_result(-array) HSurfaceMatchingResult, HTupleHTupleHSurfaceMatchingResult, HTupleHSurfaceMatchingResultX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Handle of the matching result, if enabled in ReturnResultHandleReturnResultHandleReturnResultHandleReturnResultHandleReturnResultHandlereturnResultHandle.

Result

find_surface_model_imagefind_surface_model_imageFindSurfaceModelImagefind_surface_model_imageFindSurfaceModelImageFindSurfaceModelImage returns 2 (H_MSG_TRUE) if all parameters are correct. If necessary, an exception is raised.

Possible Predecessors

read_object_model_3dread_object_model_3dReadObjectModel3dread_object_model_3dReadObjectModel3dReadObjectModel3d, xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3d, get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParams, read_surface_modelread_surface_modelReadSurfaceModelread_surface_modelReadSurfaceModelReadSurfaceModel, create_surface_modelcreate_surface_modelCreateSurfaceModelcreate_surface_modelCreateSurfaceModelCreateSurfaceModel, get_surface_model_paramget_surface_model_paramGetSurfaceModelParamget_surface_model_paramGetSurfaceModelParamGetSurfaceModelParam, edges_object_model_3dedges_object_model_3dEdgesObjectModel3dedges_object_model_3dEdgesObjectModel3dEdgesObjectModel3d

Possible Successors

refine_surface_model_poserefine_surface_model_poseRefineSurfaceModelPoserefine_surface_model_poseRefineSurfaceModelPoseRefineSurfaceModelPose, get_surface_matching_resultget_surface_matching_resultGetSurfaceMatchingResultget_surface_matching_resultGetSurfaceMatchingResultGetSurfaceMatchingResult, clear_surface_matching_resultclear_surface_matching_resultClearSurfaceMatchingResultclear_surface_matching_resultClearSurfaceMatchingResultClearSurfaceMatchingResult, clear_object_model_3dclear_object_model_3dClearObjectModel3dclear_object_model_3dClearObjectModel3dClearObjectModel3d

Alternatives

refine_surface_model_poserefine_surface_model_poseRefineSurfaceModelPoserefine_surface_model_poseRefineSurfaceModelPoseRefineSurfaceModelPose, find_surface_modelfind_surface_modelFindSurfaceModelfind_surface_modelFindSurfaceModelFindSurfaceModel, refine_surface_model_pose_imagerefine_surface_model_pose_imageRefineSurfaceModelPoseImagerefine_surface_model_pose_imageRefineSurfaceModelPoseImageRefineSurfaceModelPoseImage

See also

refine_surface_model_poserefine_surface_model_poseRefineSurfaceModelPoserefine_surface_model_poseRefineSurfaceModelPoseRefineSurfaceModelPose, find_surface_modelfind_surface_modelFindSurfaceModelfind_surface_modelFindSurfaceModelFindSurfaceModel

Module

3D Metrology


ClassesClassesClassesClasses | | | | Operators