affine_trans_pixelT_affine_trans_pixelAffineTransPixelAffineTransPixelaffine_trans_pixel (Operator)

名称

affine_trans_pixelT_affine_trans_pixelAffineTransPixelAffineTransPixelaffine_trans_pixel — 对像素坐标应用任意仿射二维变换。

签名

affine_trans_pixel( : : HomMat2D, Row, Col : RowTrans, ColTrans)

Herror T_affine_trans_pixel(const Htuple HomMat2D, const Htuple Row, const Htuple Col, Htuple* RowTrans, Htuple* ColTrans)

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)

def affine_trans_pixel(hom_mat_2d: Sequence[float], row: MaybeSequence[Union[float, int]], col: MaybeSequence[Union[float, int]]) -> Tuple[Sequence[float], Sequence[float]]

def affine_trans_pixel_s(hom_mat_2d: Sequence[float], row: MaybeSequence[Union[float, int]], col: MaybeSequence[Union[float, int]]) -> Tuple[float, float]

描述

affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixelaffine_trans_pixel applies an arbitrary affine 2D transformation, i.e., scaling, rotation, translation, and slant (skewing), to the input pixels (RowRowRowRowrowrow,ColColColColcolcol) and returns the resulting pixels in (RowTransRowTransRowTransRowTransrowTransrow_trans,ColTransColTransColTransColTranscolTranscol_trans); the input and output pixels are subpixel precise coordinates. The affine transformation is described by the homogeneous transformation matrix given in HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d.

In contrast to affine_trans_point_2daffine_trans_point_2dAffineTransPoint2dAffineTransPoint2dAffineTransPoint2daffine_trans_point_2d, affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixelaffine_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 HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d the result is converted back to the standard coordinate system. This way, affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixelaffine_trans_pixel is compatible with affine_trans_imageaffine_trans_imageAffineTransImageAffineTransImageAffineTransImageaffine_trans_image, affine_trans_image_sizeaffine_trans_image_sizeAffineTransImageSizeAffineTransImageSizeAffineTransImageSizeaffine_trans_image_size, affine_trans_regionaffine_trans_regionAffineTransRegionAffineTransRegionAffineTransRegionaffine_trans_region, affine_trans_contour_xldaffine_trans_contour_xldAffineTransContourXldAffineTransContourXldAffineTransContourXldaffine_trans_contour_xld, and affine_trans_polygon_xldaffine_trans_polygon_xldAffineTransPolygonXldAffineTransPolygonXldAffineTransPolygonXldaffine_trans_polygon_xld.

Applying affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixelaffine_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)affine_trans_pixel(HomMat2D, Row, Col, RowTrans, ColTrans)AffineTransPixel(HomMat2D, Row, Col, RowTrans, ColTrans)AffineTransPixel(HomMat2D, Row, Col, RowTrans, ColTrans)AffineTransPixel(HomMat2D, Row, Col, RowTrans, ColTrans)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)affine_trans_point_2d(HomMat2D, Row+0.5, Col+0.5, RowTmp, ColTmp)AffineTransPoint2d(HomMat2D, Row+0.5, Col+0.5, RowTmp, ColTmp)AffineTransPoint2d(HomMat2D, Row+0.5, Col+0.5, RowTmp, ColTmp)AffineTransPoint2d(HomMat2D, Row+0.5, Col+0.5, RowTmp, ColTmp)affine_trans_point_2d(HomMat2D, Row+0.5, Col+0.5, RowTmp, ColTmp)
RowTrans := RowTmp-0.5
ColTrans := ColTmp-0.5

更多信息

For an explanation of the different 2D coordinate systems used in HALCON, see the introduction of chapter Transformations / 2D Transformations.

执行信息

参数

HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d (input_control)  hom_mat2d HHomMat2D, HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Input transformation matrix.

RowRowRowRowrowrow (input_control)  point.x(-array) HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Input pixel(s) (row coordinate).

默认值: 64

建议值: 0, 16, 32, 64, 128, 256, 512, 1024

ColColColColcolcol (input_control)  point.y(-array) HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Input pixel(s) (column coordinate).

默认值: 64

建议值: 0, 16, 32, 64, 128, 256, 512, 1024

RowTransRowTransRowTransRowTransrowTransrow_trans (output_control)  point.x(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Output pixel(s) (row coordinate).

ColTransColTransColTransColTranscolTranscol_trans (output_control)  point.y(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Output pixel(s) (column coordinate).

结果

If the matrix HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d represents an affine transformation (i.e., not a projective transformation), affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixelaffine_trans_pixel returns 2 ( H_MSG_TRUE) . Otherwise, an exception is raised.

可能的前趋

hom_mat2d_translatehom_mat2d_translateHomMat2dTranslateHomMat2dTranslateHomMat2dTranslatehom_mat2d_translate, hom_mat2d_translate_localhom_mat2d_translate_localHomMat2dTranslateLocalHomMat2dTranslateLocalHomMat2dTranslateLocalhom_mat2d_translate_local, hom_mat2d_scalehom_mat2d_scaleHomMat2dScaleHomMat2dScaleHomMat2dScalehom_mat2d_scale, hom_mat2d_scale_localhom_mat2d_scale_localHomMat2dScaleLocalHomMat2dScaleLocalHomMat2dScaleLocalhom_mat2d_scale_local, hom_mat2d_rotatehom_mat2d_rotateHomMat2dRotateHomMat2dRotateHomMat2dRotatehom_mat2d_rotate, hom_mat2d_rotate_localhom_mat2d_rotate_localHomMat2dRotateLocalHomMat2dRotateLocalHomMat2dRotateLocalhom_mat2d_rotate_local, hom_mat2d_slanthom_mat2d_slantHomMat2dSlantHomMat2dSlantHomMat2dSlanthom_mat2d_slant, hom_mat2d_slant_localhom_mat2d_slant_localHomMat2dSlantLocalHomMat2dSlantLocalHomMat2dSlantLocalhom_mat2d_slant_local, hom_mat2d_reflecthom_mat2d_reflectHomMat2dReflectHomMat2dReflectHomMat2dReflecthom_mat2d_reflect, hom_mat2d_reflect_localhom_mat2d_reflect_localHomMat2dReflectLocalHomMat2dReflectLocalHomMat2dReflectLocalhom_mat2d_reflect_local

替代

affine_trans_point_2daffine_trans_point_2dAffineTransPoint2dAffineTransPoint2dAffineTransPoint2daffine_trans_point_2d

模块

Foundation