vector_angle_to_rigid🔗
Short description🔗
vector_angle_to_rigid — Compute a rigid affine transformation from points and angles.
Signature🔗
vector_angle_to_rigid( point.y Row1, point.x Column1, angle.rad Angle1, point.y Row2, point.x Column2, angle.rad Angle2, out hom_mat2d HomMat2D )
Description🔗
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. The matrix consists of 2
components: a rotation matrix R and a
translation vector t (also see
hom_mat2d_rotate and hom_mat2d_translate):
The coordinates of the original point are passed in
(Row1,Column1), while the corresponding angle is passed in
Angle1. The coordinates of the transformed point are passed in
(Row2,Column2), while the corresponding angle is passed in
Angle2. The following equation describes the transformation of the
point using homogeneous vectors:
In particular, the operator vector_angle_to_rigid is useful to
construct a rigid affine transformation from the results of the matching
operators (e.g., 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 can be used directly with operators that transform data
using affine transformations, e.g., affine_trans_image.
Execution information🔗
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 (input_control) point.y → (real / integer)
Row coordinate of the original point.
Column1 (input_control) point.x → (real / integer)
Column coordinate of the original point.
Angle1 (input_control) angle.rad → (real / integer)
Angle of the original point.
Row2 (input_control) point.y → (real / integer)
Row coordinate of the transformed point.
Column2 (input_control) point.x → (real / integer)
Column coordinate of the transformed point.
Angle2 (input_control) angle.rad → (real / integer)
Angle of the transformed point.
HomMat2D (output_control) hom_mat2d → (real)
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)
Combinations with other operators🔗
Combinations
Possible predecessors
Possible successors
hom_mat2d_invert, affine_trans_image, affine_trans_region, affine_trans_contour_xld, affine_trans_polygon_xld, affine_trans_point_2d
Alternatives
See also
Module🔗
Foundation