HALCON Reference Manual 10.0.2
Name
affine_trans_point_2dT_affine_trans_point_2daffine_trans_point_2dAffineTransPoint2dAffineTransPoint2d — Apply an arbitrary affine 2D transformation to points.
Herror T_affine_trans_point_2d(const Htuple HomMat2D, const Htuple Px, const Htuple Py, Htuple* Qx, Htuple* Qy)
Herror affine_trans_point_2d(const HTuple& HomMat2D, const HTuple& Px, const HTuple& Py, double* Qx, double* Qy)
Herror affine_trans_point_2d(const HTuple& HomMat2D, const HTuple& Px, const HTuple& Py, HTuple* Qx, HTuple* Qy)
affine_trans_point_2daffine_trans_point_2daffine_trans_point_2dAffineTransPoint2dAffineTransPoint2d applies an arbitrary affine 2D transformation,
i.e., scaling, rotation, translation, and slant (skewing), to the input
points (PxPxPxPxpx,PyPyPyPypy) and returns the resulting points in
(QxQxQxQxqx,QyQyQyQyqy). The affine transformation is described by the
homogeneous transformation matrix given in HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D. This
corresponds to the following equation (input and output points as
homogeneous vectors):
/ Qx \ / Px \
| Qy | = HomMat2D * | Py |
\ 1 / \ 1 /
If the points to transform are specified in standard image coordinates, their
row coordinates must be passed in PxPxPxPxpx and their column
coordinates in PyPyPyPypy. This is necessary to obtain a right-handed
coordinate system for the image. In particular, this assures that rotations
are performed in the correct direction. Note that the (x,y) order of the
matrices quite naturally corresponds to the usual (row,column) order for
coordinates in the image.
The transformation matrix can be created using the operators
hom_mat2d_identityhom_mat2d_identityhom_mat2d_identityHomMat2dIdentityHomMat2dIdentity, hom_mat2d_rotatehom_mat2d_rotatehom_mat2d_rotateHomMat2dRotateHomMat2dRotate,
hom_mat2d_translatehom_mat2d_translatehom_mat2d_translateHomMat2dTranslateHomMat2dTranslate, etc., or can be the result of operators like
vector_angle_to_rigidvector_angle_to_rigidvector_angle_to_rigidVectorAngleToRigidVectorAngleToRigid.
For example, if HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D corresponds to a rigid transformation,
i.e., if it consists of a rotation and a translation, the
points are transformed as follows:
/ Qx \ / Px \ / / Px \ \
| Qy | = | R t | * | Py | = | R*\ Py / + t |
\ 1 / | 0 0 1 | \ 1 / \ 1 /
- Multithreading type: reentrant (runs in parallel with non-exclusive operators).
- Multithreading scope: global (may be called from any thread).
- Processed without parallelization.
Input transformation matrix.
PxPxPxPxpx (input_control) point.x(-array) → HTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong)
Input point(s) (x or row coordinate).
Default value: 64
Suggested values: 0, 16, 32, 64, 128, 256, 512, 1024
PyPyPyPypy (input_control) point.y(-array) → HTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong)
Input point(s) (y or column coordinate).
Default value: 64
Suggested values: 0, 16, 32, 64, 128, 256, 512, 1024
QxQxQxQxqx (output_control) point.x(-array) → HTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double)
Output point(s) (x or row coordinate).
QyQyQyQyqy (output_control) point.y(-array) → HTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double)
Output point(s) (y or column coordinate).
If the matrix HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D represents an affine transformation
(i.e., not a projective transformation),
affine_trans_point_2daffine_trans_point_2daffine_trans_point_2dAffineTransPoint2dAffineTransPoint2d returns 2 (H_MSG_TRUE). Otherwise, an exception
is raised.
hom_mat2d_translatehom_mat2d_translatehom_mat2d_translateHomMat2dTranslateHomMat2dTranslate,
hom_mat2d_translate_localhom_mat2d_translate_localhom_mat2d_translate_localHomMat2dTranslateLocalHomMat2dTranslateLocal,
hom_mat2d_scalehom_mat2d_scalehom_mat2d_scaleHomMat2dScaleHomMat2dScale,
hom_mat2d_scale_localhom_mat2d_scale_localhom_mat2d_scale_localHomMat2dScaleLocalHomMat2dScaleLocal,
hom_mat2d_rotatehom_mat2d_rotatehom_mat2d_rotateHomMat2dRotateHomMat2dRotate,
hom_mat2d_rotate_localhom_mat2d_rotate_localhom_mat2d_rotate_localHomMat2dRotateLocalHomMat2dRotateLocal,
hom_mat2d_slanthom_mat2d_slanthom_mat2d_slantHomMat2dSlantHomMat2dSlant,
hom_mat2d_slant_localhom_mat2d_slant_localhom_mat2d_slant_localHomMat2dSlantLocalHomMat2dSlantLocal
hom_mat2d_translatehom_mat2d_translatehom_mat2d_translateHomMat2dTranslateHomMat2dTranslate,
hom_mat2d_translate_localhom_mat2d_translate_localhom_mat2d_translate_localHomMat2dTranslateLocalHomMat2dTranslateLocal,
hom_mat2d_scalehom_mat2d_scalehom_mat2d_scaleHomMat2dScaleHomMat2dScale,
hom_mat2d_scale_localhom_mat2d_scale_localhom_mat2d_scale_localHomMat2dScaleLocalHomMat2dScaleLocal,
hom_mat2d_rotatehom_mat2d_rotatehom_mat2d_rotateHomMat2dRotateHomMat2dRotate,
hom_mat2d_rotate_localhom_mat2d_rotate_localhom_mat2d_rotate_localHomMat2dRotateLocalHomMat2dRotateLocal,
hom_mat2d_slanthom_mat2d_slanthom_mat2d_slantHomMat2dSlantHomMat2dSlant,
hom_mat2d_slant_localhom_mat2d_slant_localhom_mat2d_slant_localHomMat2dSlantLocalHomMat2dSlantLocal
Foundation
| HALCON Reference Manual 10.0.2 |
Copyright © 1996-2011 MVTec Software GmbH |