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.
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)
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.
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.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
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).
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"
Homogene projektive Transformationsmatrix.
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
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
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
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.
Calibration