Name
projective_trans_image_sizeT_projective_trans_image_sizeProjectiveTransImageSizeProjectiveTransImageSize — Apply a projective transformation to an image and specify the output
image size.
void ProjectiveTransImageSize(const HObject& Image, HObject* TransImage, const HTuple& HomMat2D, const HTuple& Interpolation, const HTuple& Width, const HTuple& Height, const HTuple& TransformDomain)
HImage HImage::ProjectiveTransImageSize(const HHomMat2D& HomMat2D, const HString& Interpolation, Hlong Width, Hlong Height, const HString& TransformDomain) const
HImage HImage::ProjectiveTransImageSize(const HHomMat2D& HomMat2D, const char* Interpolation, Hlong Width, Hlong Height, const char* TransformDomain) const
HImage HHomMat2D::ProjectiveTransImageSize(const HImage& Image, const HString& Interpolation, Hlong Width, Hlong Height, const HString& TransformDomain) const
HImage HHomMat2D::ProjectiveTransImageSize(const HImage& Image, const char* Interpolation, Hlong Width, Hlong Height, const char* TransformDomain) const
static void HOperatorSet.ProjectiveTransImageSize(HObject image, out HObject transImage, HTuple homMat2D, HTuple interpolation, HTuple width, HTuple height, HTuple transformDomain)
HImage HImage.ProjectiveTransImageSize(HHomMat2D homMat2D, string interpolation, int width, int height, string transformDomain)
HImage HHomMat2D.ProjectiveTransImageSize(HImage image, string interpolation, int width, int height, string transformDomain)
projective_trans_image_sizeprojective_trans_image_sizeProjectiveTransImageSizeProjectiveTransImageSizeProjectiveTransImageSize applies the projective
transformation (homography) determined by the homogeneous
transformation matrix HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D on the input image
ImageImageImageImageimage and stores the result into the output image
TransImageTransImageTransImageTransImagetransImage.
TransImageTransImageTransImageTransImagetransImage will be clipped at the output dimensions
HeightHeightHeightHeightheightxWidthWidthWidthWidthwidth. Apart from this,
projective_trans_image_sizeprojective_trans_image_sizeProjectiveTransImageSizeProjectiveTransImageSizeProjectiveTransImageSize is identical to its alternative
version projective_trans_imageprojective_trans_imageProjectiveTransImageProjectiveTransImageProjectiveTransImage.
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_image_sizeprojective_trans_image_sizeProjectiveTransImageSizeProjectiveTransImageSizeProjectiveTransImageSize 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_image_sizeprojective_trans_image_sizeProjectiveTransImageSizeProjectiveTransImageSizeProjectiveTransImageSize:
hom_mat2d_translate(HomMat2D, 0.5, 0.5, HomMat2DTmp)
hom_mat2d_translate_local(HomMat2DTmp, -0.5, -0.5, HomMat2DAdapted)
projective_trans_image_size(Image, TransImage, HomMat2DAdapted,
'bilinear', Width, Height, 'false')
For an explanation of the different 2D coordinate systems
used in HALCON, see the introduction of chapter
Transformations / 2D Transformations.
projective_trans_image_sizeprojective_trans_image_sizeProjectiveTransImageSizeProjectiveTransImageSizeProjectiveTransImageSize 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.
- 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.
Homogeneous projective transformation matrix.
Interpolation method for the transformation.
Default value:
'bilinear'
"bilinear"
"bilinear"
"bilinear"
"bilinear"
List of values: 'bilinear'"bilinear""bilinear""bilinear""bilinear", 'nearest_neighbor'"nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor"
Should the domain of the input image also be
transformed?
Default value:
'false'
"false"
"false"
"false"
"false"
List of values: 'false'"false""false""false""false", 'true'"true""true""true""true"
List of values (for compute devices): 'false'"false""false""false""false"
vector_to_proj_hom_mat2dvector_to_proj_hom_mat2dVectorToProjHomMat2dVectorToProjHomMat2dVectorToProjHomMat2d,
hom_vector_to_proj_hom_mat2dhom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dHomVectorToProjHomMat2dHomVectorToProjHomMat2d,
proj_match_points_ransacproj_match_points_ransacProjMatchPointsRansacProjMatchPointsRansacProjMatchPointsRansac,
proj_match_points_ransac_guidedproj_match_points_ransac_guidedProjMatchPointsRansacGuidedProjMatchPointsRansacGuidedProjMatchPointsRansacGuided,
hom_mat3d_projecthom_mat3d_projectHomMat3dProjectHomMat3dProjectHomMat3dProject
projective_trans_imageprojective_trans_imageProjectiveTransImageProjectiveTransImageProjectiveTransImage,
projective_trans_contour_xldprojective_trans_contour_xldProjectiveTransContourXldProjectiveTransContourXldProjectiveTransContourXld,
projective_trans_regionprojective_trans_regionProjectiveTransRegionProjectiveTransRegionProjectiveTransRegion,
projective_trans_point_2dprojective_trans_point_2dProjectiveTransPoint2dProjectiveTransPoint2dProjectiveTransPoint2d,
projective_trans_pixelprojective_trans_pixelProjectiveTransPixelProjectiveTransPixelProjectiveTransPixel
Foundation