hom_vector_to_proj_hom_mat2d
— Bestimmt eine projektive Transformationsmatrix unter Verwendung
vorgegebener Punktkorrespondenzen.
hom_vector_to_proj_hom_mat2d
ermittelt aus mindestens 4
vorgegebenen Punktkorrespondenzen
die homogene projektive Transformationsmatrix HomMat2D
, die
diese Gleichungen am besten erfüllt. Sind weniger als 4 Punktpaare
(Px
,Py
,Pw
),
(Qx
,Qy
,Qw
) 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
Method
gesteuert werden. Für konventionelle geometrische
Transformationen liefert die Einstellung
Method
='normalized_dlt' im allgemeinen die
besseren Ergebnisse. Ist aber eines der Qw
oder
Pw
gleich 0, so muss
Method
='dlt' gewählt werden.
Im Gegensatz zu vector_to_proj_hom_mat2d
können aufgrund
der Verwendung von homogenen Koordinaten mit
hom_vector_to_proj_hom_mat2d
unendlich ferne Punkte
(Pw
= 0 oder Qw
= 0) zur
Bestimmung der Transformation verwendet werden. Falls endliche
Punkte verwendet werden, wird im Normalfall Pw
=
1 und Qw
= 1 gewählt. In diesem Fall
kann auch vector_to_proj_hom_mat2d
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_ransac
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
Px
und die Spalten-Koordinaten in Py
ü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
(Row
,Column
). 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.
Px
(input_control) number-array →
(real / integer)
Eingabepunkte 1 (x-Koordinate).
Py
(input_control) number-array →
(real / integer)
Eingabepunkte 1 (y-Koordinate).
Pw
(input_control) number-array →
(real / integer)
Eingabepunkte 1 (w-Koordinate).
Qx
(input_control) number-array →
(real)
Eingabepunkte 2 (x-Koordinate).
Qy
(input_control) number-array →
(real)
Eingabepunkte 2 (y-Koordinate).
Qw
(input_control) number-array →
(real)
Eingabepunkte 2 (w-Koordinate).
Method
(input_control) string →
(string)
Schätzalgorithmus.
Defaultwert: 'normalized_dlt'
Werteliste: 'dlt' , 'normalized_dlt'
HomMat2D
(output_control) hom_mat2d →
(real)
Homogene projektive Transformationsmatrix.
proj_match_points_ransac
,
proj_match_points_ransac_guided
,
points_foerstner
,
points_harris
projective_trans_image
,
projective_trans_image_size
,
projective_trans_region
,
projective_trans_contour_xld
,
projective_trans_point_2d
,
projective_trans_pixel
vector_to_proj_hom_mat2d
,
proj_match_points_ransac
,
proj_match_points_ransac_guided
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