vector_to_hom_mat3d T_vector_to_hom_mat3d VectorToHomMat3d VectorToHomMat3d vector_to_hom_mat3d (Operator)
Name
vector_to_hom_mat3d T_vector_to_hom_mat3d VectorToHomMat3d VectorToHomMat3d vector_to_hom_mat3d
— Approximate a 3D transformation from point correspondences.
Signature
void VectorToHomMat3d (const HTuple& TransformationType , const HTuple& Px , const HTuple& Py , const HTuple& Pz , const HTuple& Qx , const HTuple& Qy , const HTuple& Qz , HTuple* HomMat3D )
void HHomMat3D ::VectorToHomMat3d (const HString& TransformationType , const HTuple& Px , const HTuple& Py , const HTuple& Pz , const HTuple& Qx , const HTuple& Qy , const HTuple& Qz )
void HHomMat3D ::VectorToHomMat3d (const char* TransformationType , const HTuple& Px , const HTuple& Py , const HTuple& Pz , const HTuple& Qx , const HTuple& Qy , const HTuple& Qz )
void HHomMat3D ::VectorToHomMat3d (const wchar_t* TransformationType , const HTuple& Px , const HTuple& Py , const HTuple& Pz , const HTuple& Qx , const HTuple& Qy , const HTuple& Qz )
(
Windows only)
static void HOperatorSet .VectorToHomMat3d (HTuple transformationType , HTuple px , HTuple py , HTuple pz , HTuple qx , HTuple qy , HTuple qz , out HTuple homMat3D )
void HHomMat3D .VectorToHomMat3d (string transformationType , HTuple px , HTuple py , HTuple pz , HTuple qx , HTuple qy , HTuple qz )
def vector_to_hom_mat3d (transformation_type : str, px : Sequence[float], py : Sequence[float], pz : Sequence[float], qx : Sequence[float], qy : Sequence[float], qz : Sequence[float]) -> Sequence[float]
Description
vector_to_hom_mat3d vector_to_hom_mat3d VectorToHomMat3d VectorToHomMat3d vector_to_hom_mat3d
approximates an affine or projective 3D
transformation from point correspondences and returns it as the
homogeneous transformation matrix HomMat3D HomMat3D HomMat3D homMat3D hom_mat_3d
.
The type of the 3D transformation to compute is specified with
TransformationType TransformationType TransformationType transformationType transformation_type
. For TransformationType TransformationType TransformationType transformationType transformation_type
=
'rigid' "rigid" "rigid" "rigid" "rigid" , a rigid 3D transformation (a rotation and a
translation), for TransformationType TransformationType TransformationType transformationType transformation_type
=
'similarity' "similarity" "similarity" "similarity" "similarity" , a 3D similarity transformation (a uniform
scaling, a rotation, and a translation), for
TransformationType TransformationType TransformationType transformationType transformation_type
= 'affine' "affine" "affine" "affine" "affine" a general affine
3D transformation, and for TransformationType TransformationType TransformationType transformationType transformation_type
=
'projective' "projective" "projective" "projective" "projective" a projective 3D transformation is computed.
The minimum required number of point correspondences is 3 for
TransformationType TransformationType TransformationType transformationType transformation_type
= 'rigid' "rigid" "rigid" "rigid" "rigid" , 3 for
TransformationType TransformationType TransformationType transformationType transformation_type
= 'similarity' "similarity" "similarity" "similarity" "similarity" , 4 for
TransformationType TransformationType TransformationType transformationType transformation_type
= 'affine' "affine" "affine" "affine" "affine" , and 5 for
TransformationType TransformationType TransformationType transformationType transformation_type
= 'projective' "projective" "projective" "projective" "projective" .
The point correspondences are passed in the tuples
(Px Px Px px px
,Py Py Py py py
,Pz Pz Pz pz pz
) and
(Qx Qx Qx qx qx
,Qy Qy Qy qy qy
,Qz Qz Qz qz qz
), where corresponding points
must be at the same index positions in the tuples. If more than the
minimum number of point correspondences are passed, the
transformation is overdetermined. In this case, the returned
transformation is the transformation that minimizes the distances
between the transformed input points
(Px Px Px px px
,Py Py Py py py
,Pz Pz Pz pz pz
) and the points
(Qx Qx Qx qx qx
,Qy Qy Qy qy qy
,Qz Qz Qz qz qz
), as described in the following
equation (points as homogeneous vectors):
HomMat3D HomMat3D HomMat3D homMat3D hom_mat_3d
can be used directly with operators that transform
3D data using affine transformations, e.g.,
affine_trans_point_3d affine_trans_point_3d AffineTransPoint3d AffineTransPoint3d affine_trans_point_3d
.
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
TransformationType TransformationType TransformationType transformationType transformation_type
(input_control) string →
HTuple str HTuple Htuple (string) (string ) (HString ) (char* )
Type of the transformation to compute.
Default:
'rigid'
"rigid"
"rigid"
"rigid"
"rigid"
List of values:
'affine' "affine" "affine" "affine" "affine" , 'projective' "projective" "projective" "projective" "projective" , 'rigid' "rigid" "rigid" "rigid" "rigid" , 'similarity' "similarity" "similarity" "similarity" "similarity"
Px Px Px px px
(input_control) point3d.x-array →
HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
X coordinates of the original points.
Py Py Py py py
(input_control) point3d.y-array →
HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Y coordinates of the original points.
Pz Pz Pz pz pz
(input_control) point3d.z-array →
HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Z coordinates of the original points.
Qx Qx Qx qx qx
(input_control) point3d.x-array →
HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
X coordinates of the transformed points.
Qy Qy Qy qy qy
(input_control) point3d.x-array →
HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Y coordinates of the transformed points.
Qz Qz Qz qz qz
(input_control) point3d.z-array →
HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Z coordinates of the transformed points.
HomMat3D HomMat3D HomMat3D homMat3D hom_mat_3d
(output_control) hom_mat3d →
HHomMat3D , HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Output transformation matrix.
Possible Successors
hom_mat3d_to_pose hom_mat3d_to_pose HomMat3dToPose HomMat3dToPose hom_mat3d_to_pose
,
affine_trans_point_3d affine_trans_point_3d AffineTransPoint3d AffineTransPoint3d affine_trans_point_3d
See also
point_pluecker_line_to_hom_mat3d point_pluecker_line_to_hom_mat3d PointPlueckerLineToHomMat3d PointPlueckerLineToHomMat3d point_pluecker_line_to_hom_mat3d
Module
Foundation