affine_trans_pixelπ
Short descriptionπ
affine_trans_pixel β Apply an arbitrary affine 2D transformation to pixel coordinates.
Signatureπ
affine_trans_pixel( hom_mat2d HomMat2D, point.x Row, point.y Col, out point.x RowTrans, out point.y ColTrans )
Descriptionπ
affine_trans_pixel applies an arbitrary affine 2D transformation,
i.e., scaling, rotation, translation, and slant (skewing), to the input
pixels (Row,Col) and returns the resulting pixels in
(RowTrans,ColTrans); the input and output pixels are
subpixel precise coordinates. The affine transformation is described by the
homogeneous transformation matrix given in HomMat2D.
In contrast to affine_trans_point_2d, affine_trans_pixel
first converts the input coordinates from HALCONβs standard coordinate
system (with the origin in the center of the upper left pixel) to a coordinate
system with the origin in the upper left corner of the upper left pixel. After
the transformation with HomMat2D the result is converted back to
the standard coordinate system.
This way, affine_trans_pixel is compatible with
affine_trans_image, affine_trans_image_size,
affine_trans_region, affine_trans_contour_xld, and
affine_trans_polygon_xld.
Applying affine_trans_pixel corresponds to the following chain of
transformations (input and output pixels as homogeneous vectors):
Hence, affine_trans_pixel(HomMat2D, Row, Col, RowTrans, ColTrans)
corresponds to the following operator sequence:
| Β |
|---|
affine_trans_point_2d(HomMat2D, Row+0.5, Col+0.5, RowTmp, ColTmp) |
RowTrans := RowTmp-0.5 |
ColTrans := ColTmp-0.5 |
Further Informationπ
For an explanation of the different 2D coordinate systems used in HALCON, see the introduction of chapter Transformations / 2D Transformations.
Execution informationπ
Execution information
-
Multithreading type: reentrant (runs in parallel with non-exclusive operators).
-
Multithreading scope: global (may be called from any thread).
-
Automatically parallelized on internal data level.
Parametersπ
HomMat2D (input_control) hom_mat2d β (real)
Input transformation matrix.
Row (input_control) point.x(-array) β (real / integer)
Input pixel(s) (row coordinate).
Default: 64
Suggested values: 0, 16, 32, 64, 128, 256, 512, 1024
Col (input_control) point.y(-array) β (real / integer)
Input pixel(s) (column coordinate).
Default: 64
Suggested values: 0, 16, 32, 64, 128, 256, 512, 1024
RowTrans (output_control) point.x(-array) β (real)
Output pixel(s) (row coordinate).
ColTrans (output_control) point.y(-array) β (real)
Output pixel(s) (column coordinate).
Resultπ
If the matrix HomMat2D represents an affine transformation
(i.e., not a projective transformation),
affine_trans_pixel returns 2 (H_MSG_TRUE). Otherwise, an exception
is raised.
Combinations with other operatorsπ
Combinations
Possible predecessors
hom_mat2d_translate, hom_mat2d_translate_local, hom_mat2d_scale, hom_mat2d_scale_local, hom_mat2d_rotate, hom_mat2d_rotate_local, hom_mat2d_slant, hom_mat2d_slant_local, hom_mat2d_reflect, hom_mat2d_reflect_local
Alternatives
Moduleπ
Foundation