vector_to_hom_mat3dT_vector_to_hom_mat3dVectorToHomMat3dVectorToHomMat3d (Operator)

Name

vector_to_hom_mat3dT_vector_to_hom_mat3dVectorToHomMat3dVectorToHomMat3d — Approximate a 3D transformation from point correspondences.

Signature

vector_to_hom_mat3d( : : TransformationType, Px, Py, Pz, Qx, Qy, Qz : HomMat3D)

Herror T_vector_to_hom_mat3d(const Htuple TransformationType, const Htuple Px, const Htuple Py, const Htuple Pz, const Htuple Qx, const Htuple Qy, const Htuple Qz, Htuple* HomMat3D)

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)

Description

vector_to_hom_mat3dvector_to_hom_mat3dVectorToHomMat3dVectorToHomMat3dVectorToHomMat3d approximates an affine or projective 3D transformation from point correspondences and returns it as the homogeneous transformation matrix HomMat3DHomMat3DHomMat3DHomMat3DhomMat3D.

The type of the 3D transformation to compute is specified with TransformationTypeTransformationTypeTransformationTypeTransformationTypetransformationType. For TransformationTypeTransformationTypeTransformationTypeTransformationTypetransformationType = 'rigid'"rigid""rigid""rigid""rigid", a rigid 3D transformation (a rotation and a translation), for TransformationTypeTransformationTypeTransformationTypeTransformationTypetransformationType = 'similarity'"similarity""similarity""similarity""similarity", a 3D similarity transformation (a uniform scaling, a rotation, and a translation), for TransformationTypeTransformationTypeTransformationTypeTransformationTypetransformationType = 'affine'"affine""affine""affine""affine" a general affine 3D transformation, and for TransformationTypeTransformationTypeTransformationTypeTransformationTypetransformationType = 'projective'"projective""projective""projective""projective" a projective 3D transformation is computed.

The minimum required number of point correspondences is 3 for TransformationTypeTransformationTypeTransformationTypeTransformationTypetransformationType = 'rigid'"rigid""rigid""rigid""rigid", 3 for TransformationTypeTransformationTypeTransformationTypeTransformationTypetransformationType = 'similarity'"similarity""similarity""similarity""similarity", 4 for TransformationTypeTransformationTypeTransformationTypeTransformationTypetransformationType = 'affine'"affine""affine""affine""affine", and 5 for TransformationTypeTransformationTypeTransformationTypeTransformationTypetransformationType = 'projective'"projective""projective""projective""projective".

The point correspondences are passed in the tuples (PxPxPxPxpx,PyPyPyPypy,PzPzPzPzpz) and (QxQxQxQxqx,QyQyQyQyqy,QzQzQzQzqz), 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 (PxPxPxPxpx,PyPyPyPypy,PzPzPzPzpz) and the points (QxQxQxQxqx,QyQyQyQyqy,QzQzQzQzqz), as described in the following equation (points as homogeneous vectors):

HomMat3DHomMat3DHomMat3DHomMat3DhomMat3D can be used directly with operators that transform 3D data using affine transformations, e.g., affine_trans_point_3daffine_trans_point_3dAffineTransPoint3dAffineTransPoint3dAffineTransPoint3d.

Execution Information

Parameters

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

Type of the transformation to compute.

Default value: '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"

PxPxPxPxpx (input_control)  point3d.x-array HTupleHTupleHtuple (real) (double) (double) (double)

X coordinates of the original points.

PyPyPyPypy (input_control)  point3d.y-array HTupleHTupleHtuple (real) (double) (double) (double)

Y coordinates of the original points.

PzPzPzPzpz (input_control)  point3d.z-array HTupleHTupleHtuple (real) (double) (double) (double)

Z coordinates of the original points.

QxQxQxQxqx (input_control)  point3d.x-array HTupleHTupleHtuple (real) (double) (double) (double)

X coordinates of the transformed points.

QyQyQyQyqy (input_control)  point3d.x-array HTupleHTupleHtuple (real) (double) (double) (double)

Y coordinates of the transformed points.

QzQzQzQzqz (input_control)  point3d.z-array HTupleHTupleHtuple (real) (double) (double) (double)

Z coordinates of the transformed points.

HomMat3DHomMat3DHomMat3DHomMat3DhomMat3D (output_control)  hom_mat3d HHomMat3D, HTupleHTupleHtuple (real) (double) (double) (double)

Output transformation matrix.

Possible Successors

hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPoseHomMat3dToPose, affine_trans_point_3daffine_trans_point_3dAffineTransPoint3dAffineTransPoint3dAffineTransPoint3d

Module

Foundation