affine_trans_point_2dT_affine_trans_point_2dAffineTransPoint2dAffineTransPoint2daffine_trans_point_2d仿射变换点二维(算子)

名称

affine_trans_point_2dT_affine_trans_point_2dAffineTransPoint2dAffineTransPoint2daffine_trans_point_2d — 对点应用任意仿射二维变换。

签名

affine_trans_point_2d( : : HomMat2D, Px, Py : Qx, Qy)

Herror T_affine_trans_point_2d(const Htuple HomMat2D, const Htuple Px, const Htuple Py, Htuple* Qx, Htuple* Qy)

void AffineTransPoint2d(const HTuple& HomMat2D, const HTuple& Px, const HTuple& Py, HTuple* Qx, HTuple* Qy)

HTuple HHomMat2D::AffineTransPoint2d(const HTuple& Px, const HTuple& Py, HTuple* Qy) const

double HHomMat2D::AffineTransPoint2d(double Px, double Py, double* Qy) const

static void HOperatorSet.AffineTransPoint2d(HTuple homMat2D, HTuple px, HTuple py, out HTuple qx, out HTuple qy)

HTuple HHomMat2D.AffineTransPoint2d(HTuple px, HTuple py, out HTuple qy)

double HHomMat2D.AffineTransPoint2d(double px, double py, out double qy)

def affine_trans_point_2d(hom_mat_2d: Sequence[float], px: MaybeSequence[Union[float, int]], py: MaybeSequence[Union[float, int]]) -> Tuple[Sequence[float], Sequence[float]]

def affine_trans_point_2d_s(hom_mat_2d: Sequence[float], px: MaybeSequence[Union[float, int]], py: MaybeSequence[Union[float, int]]) -> Tuple[float, float]

描述

affine_trans_point_2daffine_trans_point_2dAffineTransPoint2dAffineTransPoint2dAffineTransPoint2daffine_trans_point_2d 对输入点 (PxPxPxPxpxpx,PyPyPyPypypy) 应用任意仿射二维变换,即缩放、旋转、平移和倾斜(偏斜),并将结果点返回为 (QxQxQxQxqxqx,QyQyQyQyqyqy)。该仿射变换由 HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d 中给出的齐次变换矩阵描述,对应于以下方程(输入和输出点均为齐次向量):

若需转换的点在标准图像坐标系中指定,其坐标必须通过 PxPxPxPxpxpx 传递,坐标则通过 PyPyPyPypypy 传递。此操作旨在为图像建立右手坐标系,尤其确保旋转操作按正确方向执行。需注意矩阵中 (x,y) 的顺序与图像坐标中常规的 (行,列) 顺序自然对应。

变换矩阵可通过 hom_mat2d_identityhom_mat2d_identityHomMat2dIdentityHomMat2dIdentityHomMat2dIdentityhom_mat2d_identityhom_mat2d_rotatehom_mat2d_rotateHomMat2dRotateHomMat2dRotateHomMat2dRotatehom_mat2d_rotatehom_mat2d_translatehom_mat2d_translateHomMat2dTranslateHomMat2dTranslateHomMat2dTranslatehom_mat2d_translate 等算子创建,也可由 vector_angle_to_rigidvector_angle_to_rigidVectorAngleToRigidVectorAngleToRigidVectorAngleToRigidvector_angle_to_rigid 等算子生成。

例如,如果 HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d 对应于刚性变换,即由旋转和平移组成,则点按以下方式进行变换:

执行信息

参数

HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d (输入控制)  hom_mat2d HHomMat2D, HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

输入变换矩阵。

PxPxPxPxpxpx (输入控制)  point.x(-array) HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

输入点( x 或行坐标)。

默认值: 64

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

PyPyPyPypypy (输入控制)  point.y(-array) HTupleMaybeSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

输入点( y 或列坐标)。

默认值: 64

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

QxQxQxQxqxqx (输出控制)  point.x(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

输出点( x 或行坐标)。

QyQyQyQyqyqy (输出控制)  point.y(-array) HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

输出点( y 或列坐标)。

结果

如果矩阵 HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d 表示仿射变换(即非投影变换),affine_trans_point_2daffine_trans_point_2dAffineTransPoint2dAffineTransPoint2dAffineTransPoint2daffine_trans_point_2d 返回 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

可能的后继

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

模块

基础