Name
affine_trans_pixelT_affine_trans_pixelAffineTransPixelAffineTransPixel — Apply an arbitrary affine 2D transformation to pixel coordinates.
void AffineTransPixel(const HTuple& HomMat2D, const HTuple& Row, const HTuple& Col, HTuple* RowTrans, HTuple* ColTrans)
void HHomMat2D::AffineTransPixel(const HTuple& Row, const HTuple& Col, HTuple* RowTrans, HTuple* ColTrans) const
void HHomMat2D::AffineTransPixel(double Row, double Col, double* RowTrans, double* ColTrans) const
static void HOperatorSet.AffineTransPixel(HTuple homMat2D, HTuple row, HTuple col, out HTuple rowTrans, out HTuple colTrans)
void HHomMat2D.AffineTransPixel(HTuple row, HTuple col, out HTuple rowTrans, out HTuple colTrans)
void HHomMat2D.AffineTransPixel(double row, double col, out double rowTrans, out double colTrans)
affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixel applies an arbitrary affine 2D transformation,
i.e., scaling, rotation, translation, and slant (skewing), to the input
pixels (RowRowRowRowrow,ColColColColcol) and returns the resulting pixels in
(RowTransRowTransRowTransRowTransrowTrans,ColTransColTransColTransColTranscolTrans); the input and output pixels are
subpixel precise coordinates. The affine transformation is described by the
homogeneous transformation matrix given in HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D.
In contrast to affine_trans_point_2daffine_trans_point_2dAffineTransPoint2dAffineTransPoint2dAffineTransPoint2d, affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixel
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 HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D the result is converted back to
the standard coordinate system.
This way, affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixel is compatible with
affine_trans_imageaffine_trans_imageAffineTransImageAffineTransImageAffineTransImage, affine_trans_image_sizeaffine_trans_image_sizeAffineTransImageSizeAffineTransImageSizeAffineTransImageSize,
affine_trans_regionaffine_trans_regionAffineTransRegionAffineTransRegionAffineTransRegion, affine_trans_contour_xldaffine_trans_contour_xldAffineTransContourXldAffineTransContourXldAffineTransContourXld, and
affine_trans_polygon_xldaffine_trans_polygon_xldAffineTransPolygonXldAffineTransPolygonXldAffineTransPolygonXld.
Applying affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixel 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.
- 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.
RowRowRowRowrow (input_control) point.x(-array) → HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Input pixel(s) (row coordinate).
Default value: 64
Suggested values: 0, 16, 32, 64, 128, 256, 512, 1024
ColColColColcol (input_control) point.y(-array) → HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Input pixel(s) (column coordinate).
Default value: 64
Suggested values: 0, 16, 32, 64, 128, 256, 512, 1024
Output pixel(s) (row coordinate).
Output pixel(s) (column coordinate).
If the matrix HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D represents an affine transformation
(i.e., not a projective transformation),
affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixel returns 2 (H_MSG_TRUE). Otherwise, an exception
is raised.
hom_mat2d_translatehom_mat2d_translateHomMat2dTranslateHomMat2dTranslateHomMat2dTranslate,
hom_mat2d_translate_localhom_mat2d_translate_localHomMat2dTranslateLocalHomMat2dTranslateLocalHomMat2dTranslateLocal,
hom_mat2d_scalehom_mat2d_scaleHomMat2dScaleHomMat2dScaleHomMat2dScale,
hom_mat2d_scale_localhom_mat2d_scale_localHomMat2dScaleLocalHomMat2dScaleLocalHomMat2dScaleLocal,
hom_mat2d_rotatehom_mat2d_rotateHomMat2dRotateHomMat2dRotateHomMat2dRotate,
hom_mat2d_rotate_localhom_mat2d_rotate_localHomMat2dRotateLocalHomMat2dRotateLocalHomMat2dRotateLocal,
hom_mat2d_slanthom_mat2d_slantHomMat2dSlantHomMat2dSlantHomMat2dSlant,
hom_mat2d_slant_localhom_mat2d_slant_localHomMat2dSlantLocalHomMat2dSlantLocalHomMat2dSlantLocal,
hom_mat2d_reflecthom_mat2d_reflectHomMat2dReflectHomMat2dReflectHomMat2dReflect,
hom_mat2d_reflect_localhom_mat2d_reflect_localHomMat2dReflectLocalHomMat2dReflectLocalHomMat2dReflectLocal
affine_trans_point_2daffine_trans_point_2dAffineTransPoint2dAffineTransPoint2dAffineTransPoint2d
Foundation