projective_trans_contour_xldT_projective_trans_contour_xldProjectiveTransContourXldProjectiveTransContourXldprojective_trans_contour_xld (Operator)

Name

projective_trans_contour_xldT_projective_trans_contour_xldProjectiveTransContourXldProjectiveTransContourXldprojective_trans_contour_xld — Anwenden einer projektiven Transformation auf eine XLD-Kontur.

Signatur

projective_trans_contour_xld(Contours : ContoursProjTrans : HomMat2D : )

Herror T_projective_trans_contour_xld(const Hobject Contours, Hobject* ContoursProjTrans, const Htuple HomMat2D)

void ProjectiveTransContourXld(const HObject& Contours, HObject* ContoursProjTrans, const HTuple& HomMat2D)

HXLDCont HXLDCont::ProjectiveTransContourXld(const HHomMat2D& HomMat2D) const

HXLDCont HHomMat2D::ProjectiveTransContourXld(const HXLDCont& Contours) const

static void HOperatorSet.ProjectiveTransContourXld(HObject contours, out HObject contoursProjTrans, HTuple homMat2D)

HXLDCont HXLDCont.ProjectiveTransContourXld(HHomMat2D homMat2D)

HXLDCont HHomMat2D.ProjectiveTransContourXld(HXLDCont contours)

def projective_trans_contour_xld(contours: HObject, hom_mat_2d: Sequence[float]) -> HObject

Beschreibung

projective_trans_contour_xldprojective_trans_contour_xldProjectiveTransContourXldProjectiveTransContourXldProjectiveTransContourXldprojective_trans_contour_xld wendet die durch die homogene Matrix HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d beschriebene projektive Transformation auf die Konturen in ContoursContoursContoursContourscontourscontours an und liefert die Ergebniskonturen in ContoursProjTransContoursProjTransContoursProjTransContoursProjTranscontoursProjTranscontours_proj_trans zurück.

Zur Berechnung und Interpretation der Matrix siehe projective_trans_imageprojective_trans_imageProjectiveTransImageProjectiveTransImageProjectiveTransImageprojective_trans_image.

Achtung

Der Transformation liegt das gleiche Koordinatensystem zugrunde, das auch bei dem Operator affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixelaffine_trans_pixel verwendet wird. Das bedeutet, dass die Transformation nicht mit der Transformationsmatrix HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d, sondern mit einer modifizierte Version davon durchgeführt wird. Eine Transformation mit projective_trans_contour_xldprojective_trans_contour_xldProjectiveTransContourXldProjectiveTransContourXldProjectiveTransContourXldprojective_trans_contour_xld entspricht für jeden Punkt der Kontur 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 der Kontur mit Operatoren wie z.B. area_center_xldarea_center_xldAreaCenterXldAreaCenterXldAreaCenterXldarea_center_xld abgeleitet wurden. Wenn z.B. eine rotationssymmetrische XLD Kontur unter Verwendung von hom_mat2d_rotatehom_mat2d_rotateHomMat2dRotateHomMat2dRotateHomMat2dRotatehom_mat2d_rotate um ihren mit area_center_xldarea_center_xldAreaCenterXldAreaCenterXldAreaCenterXldarea_center_xld bestimmten Schwerpunkt rotiert wird, so liegt die transformierte Kontur nicht auf der Originalkontur. Dieser Effekt kann dadurch kompensiert werden, dass vor dem Aufruf von projective_trans_contour_xldprojective_trans_contour_xldProjectiveTransContourXldProjectiveTransContourXldProjectiveTransContourXldprojective_trans_contour_xld die Transformationsmatrix HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d durch die beiden folgenden Translationen modifiziert wird:
hom_mat2d_translate(HomMat2D, 0.5, 0.5, HomMat2DTmp)hom_mat2d_translate(HomMat2D, 0.5, 0.5, HomMat2DTmp)HomMat2dTranslate(HomMat2D, 0.5, 0.5, HomMat2DTmp)HomMat2dTranslate(HomMat2D, 0.5, 0.5, HomMat2DTmp)HomMat2dTranslate(HomMat2D, 0.5, 0.5, HomMat2DTmp)hom_mat2d_translate(HomMat2D, 0.5, 0.5, HomMat2DTmp)
hom_mat2d_translate_local(HomMat2DTmp, -0.5, -0.5, HomMat2DAdapted)hom_mat2d_translate_local(HomMat2DTmp, -0.5, -0.5, HomMat2DAdapted)HomMat2dTranslateLocal(HomMat2DTmp, -0.5, -0.5, HomMat2DAdapted)HomMat2dTranslateLocal(HomMat2DTmp, -0.5, -0.5, HomMat2DAdapted)HomMat2dTranslateLocal(HomMat2DTmp, -0.5, -0.5, HomMat2DAdapted)hom_mat2d_translate_local(HomMat2DTmp, -0.5, -0.5, HomMat2DAdapted)
projective_trans_contour_xld(Contours, ContoursAffineTrans, HomMat2DAdapted)projective_trans_contour_xld(Contours, ContoursAffineTrans, HomMat2DAdapted)ProjectiveTransContourXld(Contours, ContoursAffineTrans, HomMat2DAdapted)ProjectiveTransContourXld(Contours, ContoursAffineTrans, HomMat2DAdapted)ProjectiveTransContourXld(Contours, ContoursAffineTrans, HomMat2DAdapted)projective_trans_contour_xld(Contours, ContoursAffineTrans, HomMat2DAdapted)

Ein Überblick zu den verschiedenen in HALCON verwendeten 2D Koordinatensystemen ist in der Einleitung zum Kapitel Transformationen / 2D-Transformationen gegeben.

Ausführungsinformationen

Parameter

ContoursContoursContoursContourscontourscontours (input_object)  xld_cont(-array) objectHXLDContHObjectHXLDContHobject

Eingabekonturen.

ContoursProjTransContoursProjTransContoursProjTransContoursProjTranscontoursProjTranscontours_proj_trans (output_object)  xld_cont(-array) objectHXLDContHObjectHXLDContHobject *

Ausgabekonturen.

HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d (input_control)  hom_mat2d HHomMat2D, HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Homogene projektive Transformationsmatrix.

Vorgänger

vector_to_proj_hom_mat2dvector_to_proj_hom_mat2dVectorToProjHomMat2dVectorToProjHomMat2dVectorToProjHomMat2dvector_to_proj_hom_mat2d, hom_vector_to_proj_hom_mat2dhom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dHomVectorToProjHomMat2dHomVectorToProjHomMat2dhom_vector_to_proj_hom_mat2d, proj_match_points_ransacproj_match_points_ransacProjMatchPointsRansacProjMatchPointsRansacProjMatchPointsRansacproj_match_points_ransac, proj_match_points_ransac_guidedproj_match_points_ransac_guidedProjMatchPointsRansacGuidedProjMatchPointsRansacGuidedProjMatchPointsRansacGuidedproj_match_points_ransac_guided, hom_mat3d_projecthom_mat3d_projectHomMat3dProjectHomMat3dProjectHomMat3dProjecthom_mat3d_project

Siehe auch

projective_trans_imageprojective_trans_imageProjectiveTransImageProjectiveTransImageProjectiveTransImageprojective_trans_image, projective_trans_image_sizeprojective_trans_image_sizeProjectiveTransImageSizeProjectiveTransImageSizeProjectiveTransImageSizeprojective_trans_image_size, projective_trans_regionprojective_trans_regionProjectiveTransRegionProjectiveTransRegionProjectiveTransRegionprojective_trans_region, projective_trans_point_2dprojective_trans_point_2dProjectiveTransPoint2dProjectiveTransPoint2dProjectiveTransPoint2dprojective_trans_point_2d, projective_trans_pixelprojective_trans_pixelProjectiveTransPixelProjectiveTransPixelProjectiveTransPixelprojective_trans_pixel

Modul

Foundation