affine_trans_pixelT_affine_trans_pixelAffineTransPixelAffineTransPixelaffine_trans_pixel仿射变换像素(算子)
名称
affine_trans_pixelT_affine_trans_pixelAffineTransPixelAffineTransPixelaffine_trans_pixel — 对像素坐标应用任意仿射二维变换。
签名
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 对输入像素点 (RowRowRowRowrowrow,ColColColColcolcol) 应用任意仿射二维变换,即缩放、旋转、平移和倾斜(偏 斜),并将变换后的像素点返回至 (RowTransRowTransRowTransRowTransrowTransrow_trans,ColTransColTransColTransColTranscolTranscol_trans);输入与输出像素点均为亚像素级精确坐标。该仿射变换由 HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d 中给出的齐次变换矩阵描述。
与 affine_trans_point_2daffine_trans_point_2dAffineTransPoint2dAffineTransPoint2dAffineTransPoint2daffine_trans_point_2d 不同, affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixelaffine_trans_pixel 首先将输入坐标从 HALCON 标准坐标系(原点位于左上角像素的中心)转换为原点位于左上角像素的左上角的坐标系。经 HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d 变换后,结果将重新转换回标准坐标系。通过这种方式,affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixelaffine_trans_pixel 可与 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 及 affine_trans_polygon_xldaffine_trans_polygon_xldAffineTransPolygonXldAffineTransPolygonXldAffineTransPolygonXldaffine_trans_polygon_xld 实现兼容。
应用 affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixelaffine_trans_pixel 对应以下变换链(输入和输出像素作为齐次向量):
因此,
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) 对应于以下算子序列:
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
|
更多信息
有关 HALCON 中使用的不同二维坐标系的说明,请参阅 变换 / 二维变换 一章的引言。
执行信息
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 在内部数据级别上自动并行化。
参数
HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d (输入控制) hom_mat2d → HHomMat2D, HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
输入变换矩阵。
RowRowRowRowrowrow (输入控制) point.x(-array) → HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
输入像素(行坐标)。
默认值:
64
建议值:
0, 16, 32, 64, 128, 256, 512, 1024
ColColColColcolcol (输入控制) point.y(-array) → HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
输入像素(列坐标)。
默认值:
64
建议值:
0, 16, 32, 64, 128, 256, 512, 1024
RowTransRowTransRowTransRowTransrowTransrow_trans (输出控制) point.x(-array) → HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
输出像素(行坐标)。
ColTransColTransColTransColTranscolTranscol_trans (输出控制) point.y(-array) → HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
输出像素(列坐标)。
结果
如果矩阵 HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d 表示仿射变换(即非投影变换),affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixelaffine_trans_pixel 返回 2 ( H_MSG_TRUE )。否则,将抛出异常。
可能的前趋
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
模块
基础