KlassenKlassenKlassenKlassen | | | | Operatoren

projective_trans_image_sizeT_projective_trans_image_sizeProjectiveTransImageSizeprojective_trans_image_sizeProjectiveTransImageSizeProjectiveTransImageSize (Operator)

Name

projective_trans_image_sizeT_projective_trans_image_sizeProjectiveTransImageSizeprojective_trans_image_sizeProjectiveTransImageSizeProjectiveTransImageSize — Berechnen der projektive Transformation eines Bildes bei vorgegebener Zielgröße.

Signatur

projective_trans_image_size(Image : TransImage : HomMat2D, Interpolation, Width, Height, TransformDomain : )

Herror T_projective_trans_image_size(const Hobject Image, Hobject* TransImage, const Htuple HomMat2D, const Htuple Interpolation, const Htuple Width, const Htuple Height, const Htuple TransformDomain)

Herror projective_trans_image_size(Hobject Image, Hobject* TransImage, const HTuple& HomMat2D, const HTuple& Interpolation, const HTuple& Width, const HTuple& Height, const HTuple& TransformDomain)

HImage HImage::ProjectiveTransImageSize(const HTuple& HomMat2D, const HTuple& Interpolation, const HTuple& Width, const HTuple& Height, const HTuple& TransformDomain) const

HImageArray HImageArray::ProjectiveTransImageSize(const HTuple& HomMat2D, const HTuple& Interpolation, const HTuple& Width, const HTuple& Height, const HTuple& TransformDomain) const

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

void HOperatorSetX.ProjectiveTransImageSize(
[in] IHUntypedObjectX* Image, [out] IHUntypedObjectX*TransImage, [in] VARIANT HomMat2d, [in] VARIANT Interpolation, [in] VARIANT Width, [in] VARIANT Height, [in] VARIANT TransformDomain)

IHImageX* HImageX.ProjectiveTransImageSize(
[in] IHHomMat2DX* HomMat2d, [in] BSTR Interpolation, [in] Hlong Width, [in] Hlong Height, [in] BSTR TransformDomain)

IHImageX* HHomMat2DX.ProjectiveTransImageSize(
[in] IHImageX* Image, [in] BSTR Interpolation, [in] Hlong Width, [in] Hlong Height, [in] BSTR TransformDomain)

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)

Beschreibung

projective_trans_image_sizeprojective_trans_image_sizeProjectiveTransImageSizeprojective_trans_image_sizeProjectiveTransImageSizeProjectiveTransImageSize wendet die durch die homogene Transformationsmatrix HomMat2DHomMat2DHomMat2DHomMat2DHomMat2DhomMat2D beschriebene projektive Transformation (Homographie) auf das Eingabebild ImageImageImageImageImageimage an und speichert das Ergebnis in das Ausgabebild TransImageTransImageTransImageTransImageTransImagetransImage.

TransImageTransImageTransImageTransImageTransImagetransImage wird dabei auf die Zielgrösse HeightHeightHeightHeightHeightheightxWidthWidthWidthWidthWidthwidth beschnitten. Ansonsten entspricht der Operator der Alternative projective_trans_imageprojective_trans_imageProjectiveTransImageprojective_trans_imageProjectiveTransImageProjectiveTransImage.

Achtung

Der Transformation liegt das gleiche Koordinatensystem zugrunde, das auch bei dem Operator affine_trans_pixelaffine_trans_pixelAffineTransPixelaffine_trans_pixelAffineTransPixelAffineTransPixel verwendet wird. Das bedeutet, dass die Transformation nicht mit der Transformationsmatrix HomMat2DHomMat2DHomMat2DHomMat2DHomMat2DhomMat2D, sondern mit einer modifizierte Version davon durchgeführt wird. Eine Transformation mit projective_trans_image_sizeprojective_trans_image_sizeProjectiveTransImageSizeprojective_trans_image_sizeProjectiveTransImageSizeProjectiveTransImageSize entspricht für jeden Punkt

(Row_i, Col_i) 
des Bildes der folgenden Kette von Transformationen (Ein- und Ausgabekoordinaten als homogene Vektoren dargestellt):

Dies kann zu unerwarteten Ergebnissen führen, wenn die Transformationsmatrix unter Verwendung von Koordinaten erstellt wurde, die von dem Bild mit Operatoren wie z.B. area_center_grayarea_center_grayAreaCenterGrayarea_center_grayAreaCenterGrayAreaCenterGray abgeleitet wurden. Wenn z.B. ein rotationssymmetrisches Bild unter Verwendung von hom_mat2d_rotatehom_mat2d_rotateHomMat2dRotatehom_mat2d_rotateHomMat2dRotateHomMat2dRotate um seinen mit area_center_grayarea_center_grayAreaCenterGrayarea_center_grayAreaCenterGrayAreaCenterGray bestimmten Schwerpunkt rotiert wird, so liegt das transformierte Bild nicht auf dem Originalbild. Dieser Effekt kann dadurch kompensiert werden, dass vor dem Aufruf von projective_trans_image_sizeprojective_trans_image_sizeProjectiveTransImageSizeprojective_trans_image_sizeProjectiveTransImageSizeProjectiveTransImageSize die Transformationsmatrix HomMat2DHomMat2DHomMat2DHomMat2DHomMat2DhomMat2D durch die beiden folgenden Translationen modifiziert wird:

  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') 

projective_trans_image_sizeprojective_trans_image_sizeProjectiveTransImageSizeprojective_trans_image_sizeProjectiveTransImageSizeProjectiveTransImageSize kann auf OpenCL Geräten ausgeführt werden, wenn das Eingangsbild die maximale Größe für Bildobjekte des ausgewählten Gerätes nicht überschreitet und der Parameter TransformDomainTransformDomainTransformDomainTransformDomainTransformDomaintransformDomain auf 'false'"false""false""false""false""false" gesetzt wird. Das Ergebnis kann dabei geringfühgig von dem auf der CPU berechneten abweichen.

Parallelisierung

Parameter

ImageImageImageImageImageimage (input_object)  (multichannel-)image(-array) objectHImageHImageHImageHImageXHobject (byte* / uint2* / real*) *erlaubt für Compute Devices

Eingabebild.

TransImageTransImageTransImageTransImageTransImagetransImage (output_object)  (multichannel-)image(-array) objectHImageHImageHImageHImageXHobject * (byte / uint2 / real)

Ergebnisbild.

HomMat2DHomMat2DHomMat2DHomMat2DHomMat2DhomMat2D (input_control)  hom_mat2d HHomMat2D, HTupleHTupleHTupleHHomMat2DX, VARIANTHtuple (real) (double) (double) (double) (double) (double)

Homogene projektive Transformationsmatrix.

InterpolationInterpolationInterpolationInterpolationInterpolationinterpolation (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Interpolationsmethode für die Transformation.

Defaultwert: 'bilinear' "bilinear" "bilinear" "bilinear" "bilinear" "bilinear"

Werteliste: 'bilinear'"bilinear""bilinear""bilinear""bilinear""bilinear", 'nearest_neighbor'"nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor""nearest_neighbor"

WidthWidthWidthWidthWidthwidth (input_control)  extent.x HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Breite des Ausgabebildes.

HeightHeightHeightHeightHeightheight (input_control)  extent.y HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Höhe des Ausgabebildes.

TransformDomainTransformDomainTransformDomainTransformDomainTransformDomaintransformDomain (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Soll die Region des Eingabebildes auch transformiert werden?

Defaultwert: 'false' "false" "false" "false" "false" "false"

Werteliste: 'false'"false""false""false""false""false", 'true'"true""true""true""true""true"

Werteliste (für Compute Devices): 'false'"false""false""false""false""false"

Vorgänger

vector_to_proj_hom_mat2dvector_to_proj_hom_mat2dVectorToProjHomMat2dvector_to_proj_hom_mat2dVectorToProjHomMat2dVectorToProjHomMat2d, hom_vector_to_proj_hom_mat2dhom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dhom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dHomVectorToProjHomMat2d, proj_match_points_ransacproj_match_points_ransacProjMatchPointsRansacproj_match_points_ransacProjMatchPointsRansacProjMatchPointsRansac, proj_match_points_ransac_guidedproj_match_points_ransac_guidedProjMatchPointsRansacGuidedproj_match_points_ransac_guidedProjMatchPointsRansacGuidedProjMatchPointsRansacGuided, hom_mat3d_projecthom_mat3d_projectHomMat3dProjecthom_mat3d_projectHomMat3dProjectHomMat3dProject

Siehe auch

projective_trans_imageprojective_trans_imageProjectiveTransImageprojective_trans_imageProjectiveTransImageProjectiveTransImage, projective_trans_contour_xldprojective_trans_contour_xldProjectiveTransContourXldprojective_trans_contour_xldProjectiveTransContourXldProjectiveTransContourXld, projective_trans_regionprojective_trans_regionProjectiveTransRegionprojective_trans_regionProjectiveTransRegionProjectiveTransRegion, projective_trans_point_2dprojective_trans_point_2dProjectiveTransPoint2dprojective_trans_point_2dProjectiveTransPoint2dProjectiveTransPoint2d, projective_trans_pixelprojective_trans_pixelProjectiveTransPixelprojective_trans_pixelProjectiveTransPixelProjectiveTransPixel

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren