object_model_3d_to_xyzT_object_model_3d_to_xyzObjectModel3dToXyzObjectModel3dToXyz (Operator)

Name

object_model_3d_to_xyzT_object_model_3d_to_xyzObjectModel3dToXyzObjectModel3dToXyz — Transform 3D points from a 3D object model to images.

Signature

object_model_3d_to_xyz( : X, Y, Z : ObjectModel3D, Type, CamParam, Pose : )

Herror T_object_model_3d_to_xyz(Hobject* X, Hobject* Y, Hobject* Z, const Htuple ObjectModel3D, const Htuple Type, const Htuple CamParam, const Htuple Pose)

void ObjectModel3dToXyz(HObject* X, HObject* Y, HObject* Z, const HTuple& ObjectModel3D, const HTuple& Type, const HTuple& CamParam, const HTuple& Pose)

static HImage HObjectModel3D::ObjectModel3dToXyz(HImage* Y, HImage* Z, const HObjectModel3DArray& ObjectModel3D, const HString& Type, const HCamPar& CamParam, const HPose& Pose)

HImage HObjectModel3D::ObjectModel3dToXyz(HImage* Y, HImage* Z, const HString& Type, const HCamPar& CamParam, const HPose& Pose) const

HImage HObjectModel3D::ObjectModel3dToXyz(HImage* Y, HImage* Z, const char* Type, const HCamPar& CamParam, const HPose& Pose) const

HImage HObjectModel3D::ObjectModel3dToXyz(HImage* Y, HImage* Z, const wchar_t* Type, const HCamPar& CamParam, const HPose& Pose) const   (Windows only)

HImage HCamPar::ObjectModel3dToXyz(HImage* Y, HImage* Z, const HObjectModel3DArray& ObjectModel3D, const HString& Type, const HPose& Pose) const

HImage HCamPar::ObjectModel3dToXyz(HImage* Y, HImage* Z, const HObjectModel3D& ObjectModel3D, const HString& Type, const HPose& Pose) const

HImage HCamPar::ObjectModel3dToXyz(HImage* Y, HImage* Z, const HObjectModel3D& ObjectModel3D, const char* Type, const HPose& Pose) const

HImage HCamPar::ObjectModel3dToXyz(HImage* Y, HImage* Z, const HObjectModel3D& ObjectModel3D, const wchar_t* Type, const HPose& Pose) const   (Windows only)

static void HOperatorSet.ObjectModel3dToXyz(out HObject x, out HObject y, out HObject z, HTuple objectModel3D, HTuple type, HTuple camParam, HTuple pose)

static HImage HObjectModel3D.ObjectModel3dToXyz(out HImage y, out HImage z, HObjectModel3D[] objectModel3D, string type, HCamPar camParam, HPose pose)

HImage HObjectModel3D.ObjectModel3dToXyz(out HImage y, out HImage z, string type, HCamPar camParam, HPose pose)

HImage HCamPar.ObjectModel3dToXyz(out HImage y, out HImage z, HObjectModel3D[] objectModel3D, string type, HPose pose)

HImage HCamPar.ObjectModel3dToXyz(out HImage y, out HImage z, HObjectModel3D objectModel3D, string type, HPose pose)

Description

The operator object_model_3d_to_xyzobject_model_3d_to_xyzObjectModel3dToXyzObjectModel3dToXyzObjectModel3dToXyz transforms the 3D points of the 3D object model ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D into the three images XXXXx, YYYYy, and ZZZZz.

Three transformation modes are possible. The parameter TypeTypeTypeTypetype is used to select one of them. Note that multiple 3D object models can be passed in ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D only for the mode 'cartesian_faces'"cartesian_faces""cartesian_faces""cartesian_faces""cartesian_faces". All other modes expect a single 3D object model.

'cartesian'"cartesian""cartesian""cartesian""cartesian":

First, each point is transformed into the camera coordinate system using the given PosePosePosePosepose. Then, these coordinates are projected into the image coordinate system based on the internal camera parameters CamParamCamParamCamParamCamParamcamParam.

The internal camera parameters CamParamCamParamCamParamCamParamcamParam describe the projection characteristics of the camera (see Calibration). The PosePosePosePosepose is in the form , where ccs denotes camera coordinate system and mcs the model coordinate system (which is a 3D world coordinate system), see Transformations / Poses and “Solution Guide III-C - 3D Vision”. Hence, it describes the position and orientation of the model coordinate system relative to the camera coordinate system.

The X-, Y-, and Z-coordinates of the transformed point are written into the corresponding image at the position of the projection. If multiple points are projected to the same image coordinates, the point with the smallest Z-value is written (hidden-point removal). The dimensions of the returned images are defined by the camera parameters.

The returned images show the object as it would look like when seeing it with the specified camera under the specified pose.

'cartesian_faces'"cartesian_faces""cartesian_faces""cartesian_faces""cartesian_faces":

In order to use this transformation, the input 3D object models need to contain faces (triangles or polygons), otherwise, the 3D object model without faces is disregarded. Note that if the 3D object models have polygon faces, those are converted internally to triangles. This conversion can be done beforehand to speed up this operator. For this, read_object_model_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3d can be called with the GenParamNameGenParamNameGenParamNameGenParamNamegenParamName 'convert_to_triangles'"convert_to_triangles""convert_to_triangles""convert_to_triangles""convert_to_triangles" set to 'true'"true""true""true""true", to convert all faces to triangles. Alternatively, triangulate_object_model_3dtriangulate_object_model_3dTriangulateObjectModel3dTriangulateObjectModel3dTriangulateObjectModel3d can be called prior to this operator.

First, each face of the 3D object models ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D is transformed into the camera coordinate system using the given PosePosePosePosepose. Then, these coordinates are projected into the image coordinate system based on the internal camera parameters CamParamCamParamCamParamCamParamcamParam, while keeping the 3D information (X-, Y-, and Z-coordinates) for each of those pixels. For a more detailed explanation of CamParamCamParamCamParamCamParamcamParam and PosePosePosePosepose please refer to the section 'cartesian'"cartesian""cartesian""cartesian""cartesian". If multiple face are projected to the same image coordinates, the value with the smallest Z-value is written (hidden-point removal). The dimensions of the returned images are defined by the camera parameters.

The returned images show the objects as they would look like when seeing them with the specified camera under the specified pose.

In case that OpenGL 2.1, GLSL 1.2, and the OpenGL extensions GL_EXT_framebuffer_object and GL_EXT_framebuffer_blit are available, speed increases.

This TypeTypeTypeTypetype can be used to create 3D object models containing 2D mapping data, by creating a 3D object model from the returned images using xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d. Note that in many cases, it is recommended to use the 2D mapping data, if available, for speed and robustness reasons. This is beneficial for example when using sample_object_model_3dsample_object_model_3dSampleObjectModel3dSampleObjectModel3dSampleObjectModel3d, surface_normals_object_model_3dsurface_normals_object_model_3dSurfaceNormalsObjectModel3dSurfaceNormalsObjectModel3dSurfaceNormalsObjectModel3d, or when preparing a 3D object model for surface-based matching, e.g., smoothing, removing outliers, and reducing the domain.

'from_xyz_map'"from_xyz_map""from_xyz_map""from_xyz_map""from_xyz_map":

This transformation mode works only if the 3D object model was created with the operator xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d. It writes each 3D point to the image coordinate where it originally came from, using the mapping attribute that is stored within the 3D object model.

The parameters CamParamCamParamCamParamCamParamcamParam and PosePosePosePosepose are ignored. The dimensions of the returned images are equal to the dimensions of the original images that were used with xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d to create the 3D object model and can be queried from get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParamsGetObjectModel3dParams with 'mapping_size'"mapping_size""mapping_size""mapping_size""mapping_size".

This transformation mode is faster than 'cartesian'"cartesian""cartesian""cartesian""cartesian". It is suitable, e.g., to visualize the results of a segmentation done with segment_object_model_3dsegment_object_model_3dSegmentObjectModel3dSegmentObjectModel3dSegmentObjectModel3d.

Attention

Cameras with hypercentric lenses are not supported.

Execution Information

Parameters

XXXXx (output_object)  singlechannelimage objectHImageHImageHobject * (real)

Image with the X-Coordinates of the 3D points.

YYYYy (output_object)  singlechannelimage objectHImageHImageHobject * (real)

Image with the Y-Coordinates of the 3D points.

ZZZZz (output_object)  singlechannelimage objectHImageHImageHobject * (real)

Image with the Z-Coordinates of the 3D points.

ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D (input_control)  object_model_3d(-array) HObjectModel3D, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle of the 3D object model.

TypeTypeTypeTypetype (input_control)  string HTupleHTupleHtuple (string) (string) (HString) (char*)

Type of the conversion.

Default value: 'cartesian' "cartesian" "cartesian" "cartesian" "cartesian"

List of values: 'cartesian'"cartesian""cartesian""cartesian""cartesian", 'cartesian_faces'"cartesian_faces""cartesian_faces""cartesian_faces""cartesian_faces", 'from_xyz_map'"from_xyz_map""from_xyz_map""from_xyz_map""from_xyz_map"

CamParamCamParamCamParamCamParamcamParam (input_control)  campar HCamPar, HTupleHTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)

Camera parameters.

PosePosePosePosepose (input_control)  pose HPose, HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Pose of the 3D object model.

Number of elements: Pose == 0 || Pose == 7 || Pose == 12

Result

The operator object_model_3d_to_xyzobject_model_3d_to_xyzObjectModel3dToXyzObjectModel3dToXyzObjectModel3dToXyz returns the value 2 (H_MSG_TRUE) if the given parameters are correct. Otherwise, an exception will be raised.

Possible Predecessors

read_object_model_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3d, xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d, triangulate_object_model_3dtriangulate_object_model_3dTriangulateObjectModel3dTriangulateObjectModel3dTriangulateObjectModel3d

Alternatives

project_object_model_3dproject_object_model_3dProjectObjectModel3dProjectObjectModel3dProjectObjectModel3d

See also

xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d, get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParamsGetObjectModel3dParams

Module

3D Metrology