Apply an arbitrary affine transformation to an XLD polygon.
::affine_trans_polygon_xld applies an arbitrary affine transformation, i.e., scaling, rotation, translation, and skewing, to an XLD polygon. The affine map is described by the transformation matrix given in HomMat2D , which is built up by using ::hom_mat2d_identity, ::hom_mat2d_scale, ::hom_mat2d_rotate, and ::hom_mat2d_translate.
The components of the homogeneous transformation matrix are interpreted as follows: the row coordinate of the image corresponds to the x coordinate of the matrix, while the column coordinate of the image corresponds to the y coordinate of the matrix. This is necessary to obtain a right-handed coordinate system, which is assumed for the homogeneous transformation matrices, also for the image. In particular, by doing so rotations are performed in the correct direction. Note that the (x,y) order of the matrices quite naturally corresponds to the usual (row,column) order for coordinates in the image.
The XLD contours that are possibly referenced by Polygons are neither transformed nor stored with the output polygons, since this is generally impossible without creating inconsistencies for the attributes of the XLD contours. Hence, operators that access the contours associated with a polygon, e.g., ::split_contours_xld will not work correctly.
|
Polygons (input_object) |
xld_poly(-array) -> Hobject: HXLDPoly(Array) |
| Input XLD polygons. | |
|
PolygonsAffinTrans (output_object) |
xld_poly(-array) -> Hobject * : HXLDPoly(Array) |
| Transformed XLD polygons. | |
|
HomMat2D (input_control) |
affine2d-array -> HTuple.double |
| Input transformation matrix. | |
| Number of elements: 6 | |
::affine_trans_polygon_xld returns H_MSG_TRUE if all parameter values are correct. If necessary, an exception is raised.
::hom_mat2d_identity, ::hom_mat2d_translate, ::hom_mat2d_rotate, ::hom_mat2d_scale
::affine_trans_image, ::affine_trans_region, ::affine_trans_contour_xld
Sub-pixel operators