object_model_3d_to_xyz T_object_model_3d_to_xyz ObjectModel3dToXyz ObjectModel3dToXyz object_model_3d_to_xyz (Operator)
Name
object_model_3d_to_xyz T_object_model_3d_to_xyz ObjectModel3dToXyz ObjectModel3dToXyz object_model_3d_to_xyz
— Transform 3D points from a 3D object model to images.
Signature
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 )
def object_model_3d_to_xyz (object_model_3d : MaybeSequence[HHandle], type : str, cam_param : Sequence[Union[float, int, str]], pose : Sequence[Union[int, float]]) -> Tuple[HObject, HObject, HObject]
Description
The operator object_model_3d_to_xyz object_model_3d_to_xyz ObjectModel3dToXyz ObjectModel3dToXyz ObjectModel3dToXyz object_model_3d_to_xyz
transforms the 3D points of
the 3D object model ObjectModel3D ObjectModel3D ObjectModel3D ObjectModel3D objectModel3D object_model_3d
into the three images
X X X X x x
, Y Y Y Y y y
, and Z Z Z Z z z
.
Three transformation modes are possible. The parameter Type Type Type Type type type
is
used to select one of them. Note that multiple 3D object models can be
passed in ObjectModel3D ObjectModel3D ObjectModel3D ObjectModel3D objectModel3D object_model_3d
only for the mode 'cartesian_faces' "cartesian_faces" "cartesian_faces" "cartesian_faces" "cartesian_faces" "cartesian_faces" .
All other modes expect a single 3D object model.
'cartesian' "cartesian" "cartesian" "cartesian" "cartesian" "cartesian" :
First, each point is transformed into the camera coordinate system
using the given Pose Pose Pose Pose pose pose
. Then, these coordinates are projected
into the image coordinate system based on the internal camera parameters
CamParam CamParam CamParam CamParam camParam cam_param
.
The internal camera parameters CamParam CamParam CamParam CamParam camParam cam_param
describe the
projection characteristics of the camera (see
Calibration ).
The Pose Pose Pose Pose pose pose
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" "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_3d read_object_model_3d ReadObjectModel3d ReadObjectModel3d ReadObjectModel3d read_object_model_3d
can be called with the
GenParamName GenParamName GenParamName GenParamName genParamName gen_param_name
'convert_to_triangles' "convert_to_triangles" "convert_to_triangles" "convert_to_triangles" "convert_to_triangles" "convert_to_triangles" set to
'true' "true" "true" "true" "true" "true" , to convert all faces to triangles.
Alternatively, triangulate_object_model_3d triangulate_object_model_3d TriangulateObjectModel3d TriangulateObjectModel3d TriangulateObjectModel3d triangulate_object_model_3d
can be called prior
to this operator.
First, each face of the 3D object models ObjectModel3D ObjectModel3D ObjectModel3D ObjectModel3D objectModel3D object_model_3d
is
transformed into the camera coordinate system
using the given Pose Pose Pose Pose pose pose
. Then, these coordinates are projected
into the image coordinate system based on the internal camera parameters
CamParam CamParam CamParam CamParam camParam cam_param
, while keeping the 3D information (X-, Y-, and
Z-coordinates) for each of those pixels. For a more detailed explanation
of CamParam CamParam CamParam CamParam camParam cam_param
and Pose Pose Pose Pose pose pose
please refer to the section
'cartesian' "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 Type Type Type Type type type
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_3d xyz_to_object_model_3d XyzToObjectModel3d XyzToObjectModel3d XyzToObjectModel3d xyz_to_object_model_3d
.
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_3d sample_object_model_3d SampleObjectModel3d SampleObjectModel3d SampleObjectModel3d sample_object_model_3d
,
surface_normals_object_model_3d surface_normals_object_model_3d SurfaceNormalsObjectModel3d SurfaceNormalsObjectModel3d SurfaceNormalsObjectModel3d surface_normals_object_model_3d
, or when preparing a 3D object
model for surface-based matching, e.g., smoothing, removing outliers, and
reducing the domain.
'cartesian_faces_no_opengl' "cartesian_faces_no_opengl" "cartesian_faces_no_opengl" "cartesian_faces_no_opengl" "cartesian_faces_no_opengl" "cartesian_faces_no_opengl" :
This transformation mode works in the same way as the method
'cartesian_faces' "cartesian_faces" "cartesian_faces" "cartesian_faces" "cartesian_faces" "cartesian_faces" but does not use OpenGL.
In general, 'cartesian_faces' "cartesian_faces" "cartesian_faces" "cartesian_faces" "cartesian_faces" "cartesian_faces" automatically determines
if OpenGL is available.
Thus, it is usually not required to use
'cartesian_faces_no_opengl' "cartesian_faces_no_opengl" "cartesian_faces_no_opengl" "cartesian_faces_no_opengl" "cartesian_faces_no_opengl" "cartesian_faces_no_opengl" explicitly.
It can make sense, however, to use it in cases where the automatic mode
selection does not work due to, for example, driver issues with OpenGL.
'from_xyz_map' "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_3d xyz_to_object_model_3d XyzToObjectModel3d XyzToObjectModel3d XyzToObjectModel3d xyz_to_object_model_3d
.
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 CamParam CamParam CamParam CamParam camParam cam_param
and Pose Pose Pose Pose pose pose
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_3d xyz_to_object_model_3d XyzToObjectModel3d XyzToObjectModel3d XyzToObjectModel3d xyz_to_object_model_3d
to
create the 3D object model and can be queried from
get_object_model_3d_params get_object_model_3d_params GetObjectModel3dParams GetObjectModel3dParams GetObjectModel3dParams get_object_model_3d_params
with 'mapping_size' "mapping_size" "mapping_size" "mapping_size" "mapping_size" "mapping_size" .
This transformation mode is faster than 'cartesian' "cartesian" "cartesian" "cartesian" "cartesian" "cartesian" .
It is suitable, e.g., to visualize the results of a segmentation done with
segment_object_model_3d segment_object_model_3d SegmentObjectModel3d SegmentObjectModel3d SegmentObjectModel3d segment_object_model_3d
.
Attention
Cameras with hypercentric lenses are not supported.
For displaying large faces with a non-zero distortion
in CamParam CamParam CamParam CamParam camParam cam_param
, note that the distortion is only applied to the
points of the model. In the projection, these points are subsequently
connected by straight lines. For a good approximation of the distorted
lines, please use a triangulation with sufficiently small triangles.
Execution Information
Multithreading type: reentrant (runs in parallel with non-exclusive operators).
Multithreading scope: global (may be called from any thread).
Processed without parallelization.
Parameters
X X X X x x
(output_object) singlechannelimage →
object HImage HObject HImage Hobject * (real)
Image with the X-Coordinates of the 3D points.
Y Y Y Y y y
(output_object) singlechannelimage →
object HImage HObject HImage Hobject * (real)
Image with the Y-Coordinates of the 3D points.
Z Z Z Z z z
(output_object) singlechannelimage →
object HImage HObject HImage Hobject * (real)
Image with the Z-Coordinates of the 3D points.
ObjectModel3D ObjectModel3D ObjectModel3D ObjectModel3D objectModel3D object_model_3d
(input_control) object_model_3d(-array) →
HObjectModel3D , HTuple MaybeSequence[HHandle] HTuple Htuple (handle) (IntPtr ) (HHandle ) (handle )
Handle of the 3D object model.
Type Type Type Type type type
(input_control) string →
HTuple str HTuple Htuple (string) (string ) (HString ) (char* )
Type of the conversion.
Default value:
'cartesian'
"cartesian"
"cartesian"
"cartesian"
"cartesian"
"cartesian"
List of values: 'cartesian' "cartesian" "cartesian" "cartesian" "cartesian" "cartesian" , 'cartesian_faces' "cartesian_faces" "cartesian_faces" "cartesian_faces" "cartesian_faces" "cartesian_faces" , 'cartesian_faces_no_opengl' "cartesian_faces_no_opengl" "cartesian_faces_no_opengl" "cartesian_faces_no_opengl" "cartesian_faces_no_opengl" "cartesian_faces_no_opengl" , 'from_xyz_map' "from_xyz_map" "from_xyz_map" "from_xyz_map" "from_xyz_map" "from_xyz_map"
CamParam CamParam CamParam CamParam camParam cam_param
(input_control) campar →
HCamPar , HTuple Sequence[Union[float, int, str]] HTuple Htuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)
Camera parameters.
Pose Pose Pose Pose pose pose
(input_control) pose →
HPose , HTuple Sequence[Union[int, float]] HTuple Htuple (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_xyz object_model_3d_to_xyz ObjectModel3dToXyz ObjectModel3dToXyz ObjectModel3dToXyz object_model_3d_to_xyz
returns the value
2 (H_MSG_TRUE ) if the given parameters are correct. Otherwise, an exception
will be raised.
Possible Predecessors
read_object_model_3d read_object_model_3d ReadObjectModel3d ReadObjectModel3d ReadObjectModel3d read_object_model_3d
,
xyz_to_object_model_3d xyz_to_object_model_3d XyzToObjectModel3d XyzToObjectModel3d XyzToObjectModel3d xyz_to_object_model_3d
,
triangulate_object_model_3d triangulate_object_model_3d TriangulateObjectModel3d TriangulateObjectModel3d TriangulateObjectModel3d triangulate_object_model_3d
Alternatives
project_object_model_3d project_object_model_3d ProjectObjectModel3d ProjectObjectModel3d ProjectObjectModel3d project_object_model_3d
See also
xyz_to_object_model_3d xyz_to_object_model_3d XyzToObjectModel3d XyzToObjectModel3d XyzToObjectModel3d xyz_to_object_model_3d
,
get_object_model_3d_params get_object_model_3d_params GetObjectModel3dParams GetObjectModel3dParams GetObjectModel3dParams get_object_model_3d_params
Module
3D Metrology