affine_trans_point_2dT_affine_trans_point_2dAffineTransPoint2dAffineTransPoint2daffine_trans_point_2d仿射变换点二维(算子)
名称
affine_trans_point_2dT_affine_trans_point_2dAffineTransPoint2dAffineTransPoint2daffine_trans_point_2d — 对点应用任意仿射二维变换。
签名
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
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_identity、 hom_mat2d_rotatehom_mat2d_rotateHomMat2dRotateHomMat2dRotateHomMat2dRotatehom_mat2d_rotate、
hom_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
模块
基础