affine_trans_pixelT_affine_trans_pixelAffineTransPixelAffineTransPixel (Operator)

Name

affine_trans_pixelT_affine_trans_pixelAffineTransPixelAffineTransPixel — Wendet eine beliebige affine 2D-Transformation auf Pixelkoordinaten an.

Signatur

affine_trans_pixel( : : HomMat2D, Row, Col : RowTrans, ColTrans)

Herror T_affine_trans_pixel(const Htuple HomMat2D, const Htuple Row, const Htuple Col, Htuple* RowTrans, Htuple* ColTrans)

void AffineTransPixel(const HTuple& HomMat2D, const HTuple& Row, const HTuple& Col, HTuple* RowTrans, HTuple* ColTrans)

void HHomMat2D::AffineTransPixel(const HTuple& Row, const HTuple& Col, HTuple* RowTrans, HTuple* ColTrans) const

void HHomMat2D::AffineTransPixel(double Row, double Col, double* RowTrans, double* ColTrans) const

static void HOperatorSet.AffineTransPixel(HTuple homMat2D, HTuple row, HTuple col, out HTuple rowTrans, out HTuple colTrans)

void HHomMat2D.AffineTransPixel(HTuple row, HTuple col, out HTuple rowTrans, out HTuple colTrans)

void HHomMat2D.AffineTransPixel(double row, double col, out double rowTrans, out double colTrans)

Beschreibung

affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixel wendet eine beliebige affine 2D-Transformation (Skalierung, Drehung, Verschiebung, Scherung) auf die Eingabepixel (RowRowRowRowrow,ColColColColcol) an und liefert die Ergebnispixel in (RowTransRowTransRowTransRowTransrowTrans,ColTransColTransColTransColTranscolTrans) zurück; die Ein- und Ausgabepixel sind jeweils subpixelgenaue Punkte. Die Transformation wird durch eine homogene Transformationsmatrix beschrieben, die in HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D übergeben wird.

Im Gegensatz zu affine_trans_point_2daffine_trans_point_2dAffineTransPoint2dAffineTransPoint2dAffineTransPoint2d transformiert affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixel die Eingabepixelkoordinaten zuerst vom HALCON-Standard-Koordinatensystem (mit dem Ursprung im Mittelpunkt des oberen linken Pixels) in ein Koordinatensystem mit dem Ursprung in der oberen linken Ecke des oberen linken Pixels. Das Ergebnis der darauf folgenden Transformation mit HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D wird dann wieder in das Standard-Koordinatensystem zurücktransformiert. Dadurch ist affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixel mit den Operatoren affine_trans_imageaffine_trans_imageAffineTransImageAffineTransImageAffineTransImage, affine_trans_image_sizeaffine_trans_image_sizeAffineTransImageSizeAffineTransImageSizeAffineTransImageSize, affine_trans_regionaffine_trans_regionAffineTransRegionAffineTransRegionAffineTransRegion, affine_trans_contour_xldaffine_trans_contour_xldAffineTransContourXldAffineTransContourXldAffineTransContourXld und affine_trans_polygon_xldaffine_trans_polygon_xldAffineTransPolygonXldAffineTransPolygonXldAffineTransPolygonXld kompatibel.

Eine Transformation mit affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixel entspricht der folgenden Kette von Transformationen (Ein- und Ausgabepixel als homogene Vektoren dargestellt):

Damit entspricht

affine_trans_pixel (HomMat2D, Row, Col, RowTrans, ColTrans) der folgenden Operatorfolge: affine_trans_point_2d (HomMat2D, Row+0.5, Col+0.5, RowTmp, ColTmp) RowTrans := RowTmp-0.5 ColTrans := ColTmp-0.5

Weitere Informationen

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

Ausführungsinformationen

Parameter

HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D (input_control)  hom_mat2d HHomMat2D, HTupleHTupleHtuple (real) (double) (double) (double)

Eingabe-Transformationsmatrix.

RowRowRowRowrow (input_control)  point.x(-array) HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Eingabepixel (Zeilenkoordinate).

Defaultwert: 64

Wertevorschläge: 0, 16, 32, 64, 128, 256, 512, 1024

ColColColColcol (input_control)  point.y(-array) HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Eingabepixel (Spaltenkoordinate).

Defaultwert: 64

Wertevorschläge: 0, 16, 32, 64, 128, 256, 512, 1024

RowTransRowTransRowTransRowTransrowTrans (output_control)  point.x(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Ausgabepixel (Zeilenkoordinate).

ColTransColTransColTransColTranscolTrans (output_control)  point.y(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Ausgabepixel (Spaltenkoordinate).

Ergebnis

Falls die Matrix HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D eine affine Abbildung darstellt (d.h. keine projektive Abbildung), liefert affine_trans_pixelaffine_trans_pixelAffineTransPixelAffineTransPixelAffineTransPixel den Wert 2 (H_MSG_TRUE) zurück. Ansonsten wird eine Ausnahmebehandlung durchgeführt.

Vorgänger

hom_mat2d_translatehom_mat2d_translateHomMat2dTranslateHomMat2dTranslateHomMat2dTranslate, hom_mat2d_translate_localhom_mat2d_translate_localHomMat2dTranslateLocalHomMat2dTranslateLocalHomMat2dTranslateLocal, hom_mat2d_scalehom_mat2d_scaleHomMat2dScaleHomMat2dScaleHomMat2dScale, hom_mat2d_scale_localhom_mat2d_scale_localHomMat2dScaleLocalHomMat2dScaleLocalHomMat2dScaleLocal, hom_mat2d_rotatehom_mat2d_rotateHomMat2dRotateHomMat2dRotateHomMat2dRotate, hom_mat2d_rotate_localhom_mat2d_rotate_localHomMat2dRotateLocalHomMat2dRotateLocalHomMat2dRotateLocal, hom_mat2d_slanthom_mat2d_slantHomMat2dSlantHomMat2dSlantHomMat2dSlant, hom_mat2d_slant_localhom_mat2d_slant_localHomMat2dSlantLocalHomMat2dSlantLocalHomMat2dSlantLocal, hom_mat2d_reflecthom_mat2d_reflectHomMat2dReflectHomMat2dReflectHomMat2dReflect, hom_mat2d_reflect_localhom_mat2d_reflect_localHomMat2dReflectLocalHomMat2dReflectLocalHomMat2dReflectLocal

Alternativen

affine_trans_point_2daffine_trans_point_2dAffineTransPoint2dAffineTransPoint2dAffineTransPoint2d

Modul

Foundation