vector_angle_to_rigid T_vector_angle_to_rigid VectorAngleToRigid VectorAngleToRigid (Operator)
Name
vector_angle_to_rigid T_vector_angle_to_rigid VectorAngleToRigid VectorAngleToRigid
— 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 )
Description
vector_angle_to_rigid vector_angle_to_rigid VectorAngleToRigid VectorAngleToRigid VectorAngleToRigid
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 homMat2D
. 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 HomMat2dRotate
and hom_mat2d_translate hom_mat2d_translate HomMat2dTranslate HomMat2dTranslate HomMat2dTranslate
):
The coordinates of the original point are passed in
(Row1 Row1 Row1 Row1 row1
,Column1 Column1 Column1 Column1 column1
), while the corresponding angle is passed in
Angle1 Angle1 Angle1 Angle1 angle1
. The coordinates of the transformed point are passed in
(Row2 Row2 Row2 Row2 row2
,Column2 Column2 Column2 Column2 column2
), while the corresponding angle is passed in
Angle2 Angle2 Angle2 Angle2 angle2
. 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 VectorAngleToRigid
is useful to
construct a rigid affine transformation from the results of the matching
operators (e.g., find_shape_model find_shape_model FindShapeModel FindShapeModel FindShapeModel
),
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 homMat2D
can be used directly with operators that transform data
using affine transformations, e.g., affine_trans_image affine_trans_image AffineTransImage AffineTransImage AffineTransImage
.
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 row1
(input_control) point.y →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Row coordinate of the original point.
Column1 Column1 Column1 Column1 column1
(input_control) point.x →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Column coordinate of the original point.
Angle1 Angle1 Angle1 Angle1 angle1
(input_control) angle.rad →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Angle of the original point.
Row2 Row2 Row2 Row2 row2
(input_control) point.y →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Row coordinate of the transformed point.
Column2 Column2 Column2 Column2 column2
(input_control) point.x →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Column coordinate of the transformed point.
Angle2 Angle2 Angle2 Angle2 angle2
(input_control) angle.rad →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Angle of the transformed point.
HomMat2D HomMat2D HomMat2D HomMat2D homMat2D
(output_control) hom_mat2d →
HHomMat2D , HTuple HTuple Htuple (real) (double ) (double ) (double )
Output transformation matrix.
Example (HDevelop)
create_shape_model (ImageReduced, 0, rad(-45), rad(180), 0, \
'none', 'use_polarity', 30, 10, ModelID)
get_shape_model_contours (ModelXLD, ModelID, 1)
find_shape_model (SearchImage, ModelID, rad(-45), rad(180), \
0.5, 1, 0.5, 'interpolation', \
0, 0, Row, Column, Angle, Score)
* Create transformation matrix
vector_angle_to_rigid (0, 0, 0, Row, Column, Angle, HomMat2DObject)
* Transform model contours for visualization
affine_trans_contour_xld (ModelXLD, ObjectXLD, HomMat2DObject)
* Calculate true position of the model origin in the search image
affine_trans_pixel (HomMat2DObject, 0, 0, RowObject, ColObject)
Possible Predecessors
find_shape_model find_shape_model FindShapeModel FindShapeModel FindShapeModel
Possible Successors
hom_mat2d_invert hom_mat2d_invert HomMat2dInvert HomMat2dInvert HomMat2dInvert
,
affine_trans_image affine_trans_image AffineTransImage AffineTransImage AffineTransImage
,
affine_trans_region affine_trans_region AffineTransRegion AffineTransRegion AffineTransRegion
,
affine_trans_contour_xld affine_trans_contour_xld AffineTransContourXld AffineTransContourXld AffineTransContourXld
,
affine_trans_polygon_xld affine_trans_polygon_xld AffineTransPolygonXld AffineTransPolygonXld AffineTransPolygonXld
,
affine_trans_point_2d affine_trans_point_2d AffineTransPoint2d AffineTransPoint2d AffineTransPoint2d
Alternatives
vector_to_rigid vector_to_rigid VectorToRigid VectorToRigid VectorToRigid
See also
vector_field_to_hom_mat2d vector_field_to_hom_mat2d VectorFieldToHomMat2d VectorFieldToHomMat2d VectorFieldToHomMat2d
Module
Foundation