KlassenKlassenKlassenKlassen | | | | Operatoren

hom_vector_to_proj_hom_mat2dT_hom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dhom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dHomVectorToProjHomMat2d (Operator)

Name

hom_vector_to_proj_hom_mat2dT_hom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dhom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dHomVectorToProjHomMat2d — Bestimmt eine projektive Transformationsmatrix unter Verwendung vorgegebener Punktkorrespondenzen.

Signatur

hom_vector_to_proj_hom_mat2d( : : Px, Py, Pw, Qx, Qy, Qw, Method : HomMat2D)

Herror T_hom_vector_to_proj_hom_mat2d(const Htuple Px, const Htuple Py, const Htuple Pw, const Htuple Qx, const Htuple Qy, const Htuple Qw, const Htuple Method, Htuple* HomMat2D)

Herror hom_vector_to_proj_hom_mat2d(const HTuple& Px, const HTuple& Py, const HTuple& Pw, const HTuple& Qx, const HTuple& Qy, const HTuple& Qw, const HTuple& Method, HTuple* HomMat2D)

void HomVectorToProjHomMat2d(const HTuple& Px, const HTuple& Py, const HTuple& Pw, const HTuple& Qx, const HTuple& Qy, const HTuple& Qw, const HTuple& Method, HTuple* HomMat2D)

void HHomMat2D::HomVectorToProjHomMat2d(const HTuple& Px, const HTuple& Py, const HTuple& Pw, const HTuple& Qx, const HTuple& Qy, const HTuple& Qw, const HString& Method)

void HHomMat2D::HomVectorToProjHomMat2d(const HTuple& Px, const HTuple& Py, const HTuple& Pw, const HTuple& Qx, const HTuple& Qy, const HTuple& Qw, const char* Method)

void HOperatorSetX.HomVectorToProjHomMat2d(
[in] VARIANT Px, [in] VARIANT Py, [in] VARIANT Pw, [in] VARIANT Qx, [in] VARIANT Qy, [in] VARIANT Qw, [in] VARIANT Method, [out] VARIANT* HomMat2d)

void HHomMat2DX.HomVectorToProjHomMat2d(
[in] VARIANT Px, [in] VARIANT Py, [in] VARIANT Pw, [in] VARIANT Qx, [in] VARIANT Qy, [in] VARIANT Qw, [in] BSTR Method)

static void HOperatorSet.HomVectorToProjHomMat2d(HTuple px, HTuple py, HTuple pw, HTuple qx, HTuple qy, HTuple qw, HTuple method, out HTuple homMat2D)

void HHomMat2D.HomVectorToProjHomMat2d(HTuple px, HTuple py, HTuple pw, HTuple qx, HTuple qy, HTuple qw, string method)

Beschreibung

hom_vector_to_proj_hom_mat2dhom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dhom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dHomVectorToProjHomMat2d ermittelt aus mindestens 4 vorgegebenen Punktkorrespondenzen

die homogene projektive Transformationsmatrix HomMat2DHomMat2DHomMat2DHomMat2DHomMat2DhomMat2D, die diese Gleichungen am besten erfüllt. Sind weniger als 4 Punktpaare (PxPxPxPxPxpx,PyPyPyPyPypy,PwPwPwPwPwpw), (QxQxQxQxQxqx,QyQyQyQyQyqy,QwQwQwQwQwqw) angegeben, so ist eine solche Transformation nicht eindeutig bestimmbar. Sind genau 4 Punktpaare gegeben, so kann eine Matrix gefunden werden, die die Punkte genau ineinander überführt. Andernfalls wird die Matrix so gewählt, dass der Fehler möglichst klein wird. Um dieses Ergebnis zu erreichen, sind verschiedene Algorithmen verfügbar. Welches Verfahren verwendet werden soll, kann mittels des Parameters MethodMethodMethodMethodMethodmethod gesteuert werden. Für konventionelle geometrische Transformationen liefert die Einstellung MethodMethodMethodMethodMethodmethod='normalized_dlt'"normalized_dlt""normalized_dlt""normalized_dlt""normalized_dlt""normalized_dlt" im allgemeinen die besseren Ergebnisse. Ist aber eines der QwQwQwQwQwqw oder PwPwPwPwPwpw gleich 0, so muss MethodMethodMethodMethodMethodmethod='dlt'"dlt""dlt""dlt""dlt""dlt" gewählt werden.

Im Gegensatz zu vector_to_proj_hom_mat2dvector_to_proj_hom_mat2dVectorToProjHomMat2dvector_to_proj_hom_mat2dVectorToProjHomMat2dVectorToProjHomMat2d können aufgrund der Verwendung von homogenen Koordinaten mit hom_vector_to_proj_hom_mat2dhom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dhom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dHomVectorToProjHomMat2d unendlich ferne Punkte (PwPwPwPwPwpw = 0 oder QwQwQwQwQwqw = 0) zur Bestimmung der Transformation verwendet werden. Falls endliche Punkte verwendet werden, wird im Normalfall PwPwPwPwPwpw = 1 und QwQwQwQwQwqw = 1 gewählt. In diesem Fall kann auch vector_to_proj_hom_mat2dvector_to_proj_hom_mat2dVectorToProjHomMat2dvector_to_proj_hom_mat2dVectorToProjHomMat2dVectorToProjHomMat2d verwendet werden, wobei dort zusätzlich noch eine weitere Optimierungsmethode zur Verfügung steht und die Kovarianzen der Punkte berücksichtigt werden können. Falls die Korrespondenz zwischen den Punkten nicht bestimmt worden ist, sollte proj_match_points_ransacproj_match_points_ransacProjMatchPointsRansacproj_match_points_ransacProjMatchPointsRansacProjMatchPointsRansac zur Bestimmung der Korrespondenz sowie der Transformation verwendet werden.

Falls die zu transformierenden Punkte in Standard-Bildkoordinaten vorliegen, müssen die Zeilen-Koordinaten der Punkte in PxPxPxPxPxpx und die Spalten-Koordinaten in PyPyPyPyPypy übergeben werden. Dies ist notwendig, um für das Bild ein rechtshändiges Koordinatensystem zu erhalten. Insbesondere werden dadurch Rotationen im korrekten Drehsinn ausgeführt. Die Koordinatenreihenfolge (x,y) der Matrizen entspricht dann der üblichen Koordinatenreihenfolge (Zeile,Spalte) der Bilder.

Achtung

Es ist zu beachten, dass homogene Transformationsmatrizen sich auf ein allgemeines rechtshändiges mathematisches Koordinatensystem beziehen. Falls eine homogene Transformationsmatrix zur Transformation von Bildern, Regionen, XLD-Konturen oder anderen Daten, die aus Bildern extrahiert wurden, verwendet werden soll, ist zu beachten, dass die Zeilenkoordinaten in den x-Koordinaten und die Spaltenkoordinaten in den y-Koordinaten übergeben werden müssen. Die Übergabereihenfolge von Zeilen- und Spaltenkoordinaten entspricht also der üblichen Reihenfolge (RowRowRowRowRowrow,ColumnColumnColumnColumnColumncolumn). Diese Konvention ist unerlässlich, um bei der Transformation von Bilddaten ein rechtshändiges Koordinatensystem zu erhalten, so dass z.B. insbesondere Rotationen in der mathematisch korrekten Drehrichtung ausgeführt werden.

Weiterhin ist zu beachten, dass, falls eine homogene Transformationsmatrix zur Transformation von Bildern, Regionen, XLD-Konturen oder anderen Daten, die aus Bildern extrahiert wurden, verwendet werden soll, angenommen wird, dass der Ursprung des Koordinatensystems der homogenen Transformationsmatrix in der linken oberen Ecke des Pixels liegt. Die Bildverarbeitungsoperatoren, die Punktkoordinaten zurückliefern, nehmen hingegen ein Koordinatensystem an, in dem der Ursprung in der Mitte eines Pixels liegt. Daher muss, um eine konsistente homogene Transformationsmatrix zu erhalten, 0.5 zu den Punktkoordinaten addiert werden, bevor die Transformation berechnet wird.

Parallelisierung

Parameter

PxPxPxPxPxpx (input_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Eingabepunkte 1 (x-Koordinate).

PyPyPyPyPypy (input_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Eingabepunkte 1 (y-Koordinate).

PwPwPwPwPwpw (input_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Eingabepunkte 1 (w-Koordinate).

QxQxQxQxQxqx (input_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Eingabepunkte 2 (x-Koordinate).

QyQyQyQyQyqy (input_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Eingabepunkte 2 (y-Koordinate).

QwQwQwQwQwqw (input_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Eingabepunkte 2 (w-Koordinate).

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

Schätzalgorithmus.

Defaultwert: 'normalized_dlt' "normalized_dlt" "normalized_dlt" "normalized_dlt" "normalized_dlt" "normalized_dlt"

Werteliste: 'dlt'"dlt""dlt""dlt""dlt""dlt", 'normalized_dlt'"normalized_dlt""normalized_dlt""normalized_dlt""normalized_dlt""normalized_dlt"

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

Homogene projektive Transformationsmatrix.

Vorgänger

proj_match_points_ransacproj_match_points_ransacProjMatchPointsRansacproj_match_points_ransacProjMatchPointsRansacProjMatchPointsRansac, proj_match_points_ransac_guidedproj_match_points_ransac_guidedProjMatchPointsRansacGuidedproj_match_points_ransac_guidedProjMatchPointsRansacGuidedProjMatchPointsRansacGuided, points_foerstnerpoints_foerstnerPointsFoerstnerpoints_foerstnerPointsFoerstnerPointsFoerstner, points_harrispoints_harrisPointsHarrispoints_harrisPointsHarrisPointsHarris

Nachfolger

projective_trans_imageprojective_trans_imageProjectiveTransImageprojective_trans_imageProjectiveTransImageProjectiveTransImage, projective_trans_image_sizeprojective_trans_image_sizeProjectiveTransImageSizeprojective_trans_image_sizeProjectiveTransImageSizeProjectiveTransImageSize, projective_trans_regionprojective_trans_regionProjectiveTransRegionprojective_trans_regionProjectiveTransRegionProjectiveTransRegion, projective_trans_contour_xldprojective_trans_contour_xldProjectiveTransContourXldprojective_trans_contour_xldProjectiveTransContourXldProjectiveTransContourXld, projective_trans_point_2dprojective_trans_point_2dProjectiveTransPoint2dprojective_trans_point_2dProjectiveTransPoint2dProjectiveTransPoint2d, projective_trans_pixelprojective_trans_pixelProjectiveTransPixelprojective_trans_pixelProjectiveTransPixelProjectiveTransPixel

Alternativen

vector_to_proj_hom_mat2dvector_to_proj_hom_mat2dVectorToProjHomMat2dvector_to_proj_hom_mat2dVectorToProjHomMat2dVectorToProjHomMat2d, proj_match_points_ransacproj_match_points_ransacProjMatchPointsRansacproj_match_points_ransacProjMatchPointsRansacProjMatchPointsRansac, proj_match_points_ransac_guidedproj_match_points_ransac_guidedProjMatchPointsRansacGuidedproj_match_points_ransac_guidedProjMatchPointsRansacGuidedProjMatchPointsRansacGuided

Literatur

Richard Hartley, Andrew Zisserman: „Multiple View Geometry in Computer Vision“; Cambridge University Press, Cambridge; 2000.
Olivier Faugeras, Quang-Tuan Luong: „The Geometry of Multiple Images: The Laws That Govern the Formation of Multiple Images of a Scene and Some of Their Applications“; MIT Press, Cambridge, MA; 2001.

Modul

Calibration


KlassenKlassenKlassenKlassen | | | | Operatoren