For images of type 'byte'"byte""byte""byte""byte" or 'uint2'"uint2""uint2""uint2""uint2" the system
parameter 'int_zooming'"int_zooming""int_zooming""int_zooming""int_zooming" selects between fast calculation in
floating point arithmetics ('int_zooming'"int_zooming""int_zooming""int_zooming""int_zooming" = 'true'"true""true""true""true")
and highly accurate floating point arithmetics
('int_zooming'"int_zooming""int_zooming""int_zooming""int_zooming" = 'false'"false""false""false""false"). Especially for
InterpolationInterpolationInterpolationInterpolationinterpolation = 'bilinear'"bilinear""bilinear""bilinear""bilinear", however, the faster
calculation can lead to minor gray value deviations since the
faster algorithm is less accurate and only has an accuracy around
times the size of the image. Therefore, when
applying large scales 'int_zooming'"int_zooming""int_zooming""int_zooming""int_zooming" = 'false'"false""false""false""false"
is recommended.
Attention
The used coordinate system is the same as in
affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixel. This means that in fact not
HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D is applied but a modified version. Therefore,
applying projective_trans_imageprojective_trans_imageProjectiveTransImageProjectiveTransImageProjectiveTransImage corresponds to the following
chain of transformations, which is applied to each point (Row_i,
Col_i) of the image (input and output
pixels as homogeneous vectors):
As an effect, you might get unexpected results when creating projective
transformations based on coordinates that are derived from the
image, e.g., by operators like area_center_grayarea_center_grayAreaCenterGrayAreaCenterGrayAreaCenterGray. For
example, if you use this operator to calculate the center of gravity
of a rotationally symmetric image and then rotate the image around
this point using hom_mat2d_rotatehom_mat2d_rotateHomMat2dRotateHomMat2dRotateHomMat2dRotate, the resulting image will
not lie on the original one. In such a case, you can compensate this
effect by applying the following translations to HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D
before using it in projective_trans_imageprojective_trans_imageProjectiveTransImageProjectiveTransImageProjectiveTransImage:
projective_trans_imageprojective_trans_imageProjectiveTransImageProjectiveTransImageProjectiveTransImage can be executed on OpenCL devices if the input
image does not exceed the maximum size of image objects of the selected
device and the parameter TransformDomainTransformDomainTransformDomainTransformDomaintransformDomain is set to
'false'"false""false""false""false". The result can diverge slightly from that calculated on
the CPU.
Execution Information
Supports OpenCL compute devices.
Multithreading type: reentrant (runs in parallel with non-exclusive operators).
Multithreading scope: global (may be called from any thread).
Automatically parallelized on tuple level.
Automatically parallelized on channel level.
Automatically parallelized on internal data level.
List of values: 'bilinear'"bilinear""bilinear""bilinear""bilinear", 'nearest_neighbor'"nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor"