ClassesClassesClassesClasses | | | | Operators

vector_to_hom_mat3dT_vector_to_hom_mat3dVectorToHomMat3dvector_to_hom_mat3dVectorToHomMat3dVectorToHomMat3d (Operator)

Name

vector_to_hom_mat3dT_vector_to_hom_mat3dVectorToHomMat3dvector_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)

Herror 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 HOperatorSetX.VectorToHomMat3d(
[in] VARIANT TransformationType, [in] VARIANT Px, [in] VARIANT Py, [in] VARIANT Pz, [in] VARIANT Qx, [in] VARIANT Qy, [in] VARIANT Qz, [out] VARIANT* HomMat3d)

void HHomMat3DX.VectorToHomMat3d(
[in] BSTR TransformationType, [in] VARIANT Px, [in] VARIANT Py, [in] VARIANT Pz, [in] VARIANT Qx, [in] VARIANT Qy, [in] VARIANT Qz)

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_mat3dVectorToHomMat3dvector_to_hom_mat3dVectorToHomMat3dVectorToHomMat3d approximates an affine or projective 3D transformation from point correspondences and returns it as the homogeneous transformation matrix HomMat3DHomMat3DHomMat3DHomMat3DHomMat3DhomMat3D.

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

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

The point correspondences are passed in the tuples (PxPxPxPxPxpx,PyPyPyPyPypy,PzPzPzPzPzpz) and (QxQxQxQxQxqx,QyQyQyQyQyqy,QzQzQzQzQzqz), 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 (PxPxPxPxPxpx,PyPyPyPyPypy,PzPzPzPzPzpz) and the points (QxQxQxQxQxqx,QyQyQyQyQyqy,QzQzQzQzQzqz), as described in the following equation (points as homogeneous vectors):

             || / Qx[i] \                / Px[i] \ ||^2
 sum of all  || | Qy[i] |  -  HomMat3D * | Py[i] | ||  =  minimum
             || | Qz[i] |                | Pz[i] | ||
             || \  1    /                \  1    / ||

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

Parallelization

Parameters

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

Type of the transformation to compute.

Default value: 'rigid' "rigid" "rigid" "rigid" "rigid" "rigid"

List of values: 'affine'"affine""affine""affine""affine""affine", 'projective'"projective""projective""projective""projective""projective", 'rigid'"rigid""rigid""rigid""rigid""rigid", 'similarity'"similarity""similarity""similarity""similarity""similarity"

PxPxPxPxPxpx (input_control)  point3d.x-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

X coordinates of the original points.

PyPyPyPyPypy (input_control)  point3d.y-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Y coordinates of the original points.

PzPzPzPzPzpz (input_control)  point3d.z-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Z coordinates of the original points.

QxQxQxQxQxqx (input_control)  point3d.x-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

X coordinates of the transformed points.

QyQyQyQyQyqy (input_control)  point3d.x-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Y coordinates of the transformed points.

QzQzQzQzQzqz (input_control)  point3d.z-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Z coordinates of the transformed points.

HomMat3DHomMat3DHomMat3DHomMat3DHomMat3DhomMat3D (output_control)  hom_mat3d HHomMat3D, HTupleHTupleHTupleHHomMat3DX, VARIANTHtuple (real) (double) (double) (double) (double) (double)

Output transformation matrix.

Possible Successors

hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPosehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPose, affine_trans_point_3daffine_trans_point_3dAffineTransPoint3daffine_trans_point_3dAffineTransPoint3dAffineTransPoint3d

Module

Foundation


ClassesClassesClassesClasses | | | | Operators