vector_angle_to_rigid T_vector_angle_to_rigid VectorAngleToRigid VectorAngleToRigid vector_angle_to_rigid (Operator)
vector_angle_to_rigid T_vector_angle_to_rigid VectorAngleToRigid VectorAngleToRigid vector_angle_to_rigid
— Compute a rigid affine transformation from points and angles.
Signature
void VectorAngleToRigid (const HTuple& Row1 , const HTuple& Column1 , const HTuple& Angle1 , const HTuple& Row2 , const HTuple& Column2 , const HTuple& Angle2 , HTuple* HomMat2D )
void HHomMat2D ::VectorAngleToRigid (const HTuple& Row1 , const HTuple& Column1 , const HTuple& Angle1 , const HTuple& Row2 , const HTuple& Column2 , const HTuple& Angle2 )
void HHomMat2D ::VectorAngleToRigid (double Row1 , double Column1 , double Angle1 , double Row2 , double Column2 , double Angle2 )
static void HOperatorSet .VectorAngleToRigid (HTuple row1 , HTuple column1 , HTuple angle1 , HTuple row2 , HTuple column2 , HTuple angle2 , out HTuple homMat2D )
void HHomMat2D .VectorAngleToRigid (HTuple row1 , HTuple column1 , HTuple angle1 , HTuple row2 , HTuple column2 , HTuple angle2 )
void HHomMat2D .VectorAngleToRigid (double row1 , double column1 , double angle1 , double row2 , double column2 , double angle2 )
def vector_angle_to_rigid (row_1 : Union[float, int], column_1 : Union[float, int], angle_1 : Union[float, int], row_2 : Union[float, int], column_2 : Union[float, int], angle_2 : Union[float, int]) -> Sequence[float]
Description
vector_angle_to_rigid vector_angle_to_rigid VectorAngleToRigid VectorAngleToRigid vector_angle_to_rigid
computes a rigid affine transformation, i.e., a
transformation consisting of a rotation and a translation, from a point
correspondence and two corresponding angles and returns it as the
homogeneous transformation matrix HomMat2D HomMat2D HomMat2D homMat2D hom_mat_2d
. The matrix consists of 2
components: a rotation matrix R and a
translation vector t (also see
hom_mat2d_rotate hom_mat2d_rotate HomMat2dRotate HomMat2dRotate hom_mat2d_rotate
and hom_mat2d_translate hom_mat2d_translate HomMat2dTranslate HomMat2dTranslate hom_mat2d_translate
):
The coordinates of the original point are passed in
(Row1 Row1 Row1 row1 row_1
,Column1 Column1 Column1 column1 column_1
), while the corresponding angle is passed in
Angle1 Angle1 Angle1 angle1 angle_1
. The coordinates of the transformed point are passed in
(Row2 Row2 Row2 row2 row_2
,Column2 Column2 Column2 column2 column_2
), while the corresponding angle is passed in
Angle2 Angle2 Angle2 angle2 angle_2
. The following equation describes the transformation of the
point using homogeneous vectors:
In particular, the operator vector_angle_to_rigid vector_angle_to_rigid VectorAngleToRigid VectorAngleToRigid vector_angle_to_rigid
is useful to
construct a rigid affine transformation from the results of the matching
operators (e.g., find_ncc_model find_ncc_model FindNccModel FindNccModel find_ncc_model
),
which transforms a reference image to the current image or (if the parameters
are passed in reverse order) from the current image to the reference image.
HomMat2D HomMat2D HomMat2D homMat2D hom_mat_2d
can be used directly with operators that transform data
using affine transformations, e.g., affine_trans_image affine_trans_image AffineTransImage AffineTransImage affine_trans_image
.
Execution Information
Multithreading type: reentrant (runs in parallel with non-exclusive operators).
Multithreading scope: global (may be called from any thread).
Processed without parallelization.
Parameters
Row1 Row1 Row1 row1 row_1
(input_control) point.y →
HTuple Union[float, int] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Row coordinate of the original point.
Column1 Column1 Column1 column1 column_1
(input_control) point.x →
HTuple Union[float, int] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Column coordinate of the original point.
Angle1 Angle1 Angle1 angle1 angle_1
(input_control) angle.rad →
HTuple Union[float, int] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Angle of the original point.
Row2 Row2 Row2 row2 row_2
(input_control) point.y →
HTuple Union[float, int] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Row coordinate of the transformed point.
Column2 Column2 Column2 column2 column_2
(input_control) point.x →
HTuple Union[float, int] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Column coordinate of the transformed point.
Angle2 Angle2 Angle2 angle2 angle_2
(input_control) angle.rad →
HTuple Union[float, int] HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Angle of the transformed point.
HomMat2D HomMat2D HomMat2D homMat2D hom_mat_2d
(output_control) hom_mat2d →
HHomMat2D , HTuple Sequence[float] HTuple Htuple (real) (double ) (double ) (double )
Output transformation matrix.
Example (HDevelop)
read_image (Image, 'face_masks/face_mask_01')
* Prepare NCC matching.
gen_rectangle2 (ROI, 616.5, 708.5, rad(-82.4054), 50, 35)
reduce_domain (Image, ROI, ImageReduced)
create_ncc_model (ImageReduced, 'auto', rad(0), rad(360), 'auto',\
'use_polarity', ModelID)
read_image (SearchImage, 'face_masks/face_mask_02')
find_ncc_model (SearchImage, ModelID, rad(0), rad(360), 0.7, 1, 0.5,\
'true', 0, Row, Column, Angle, Score)
get_ncc_model_region (ModelRegion, ModelID)
gen_contour_region_xld (ModelRegion, ModelContours, 'border_holes')
* Create transformation matrix for found match.
vector_angle_to_rigid (0, 0, 0, Row, Column, Angle, HomMat2D)
affine_trans_contour_xld (ModelContours, ContoursAffineTrans, HomMat2D)
Possible Predecessors
get_ncc_model_region get_ncc_model_region GetNccModelRegion GetNccModelRegion get_ncc_model_region
Possible Successors
hom_mat2d_invert hom_mat2d_invert HomMat2dInvert HomMat2dInvert hom_mat2d_invert
,
affine_trans_image affine_trans_image AffineTransImage AffineTransImage affine_trans_image
,
affine_trans_region affine_trans_region AffineTransRegion AffineTransRegion affine_trans_region
,
affine_trans_contour_xld affine_trans_contour_xld AffineTransContourXld AffineTransContourXld affine_trans_contour_xld
,
affine_trans_polygon_xld affine_trans_polygon_xld AffineTransPolygonXld AffineTransPolygonXld affine_trans_polygon_xld
,
affine_trans_point_2d affine_trans_point_2d AffineTransPoint2d AffineTransPoint2d affine_trans_point_2d
Alternatives
vector_to_rigid vector_to_rigid VectorToRigid VectorToRigid vector_to_rigid
See also
vector_field_to_hom_mat2d vector_field_to_hom_mat2d VectorFieldToHomMat2d VectorFieldToHomMat2d vector_field_to_hom_mat2d
Module
Foundation