vector_to_proj_hom_mat2d_distortion T_vector_to_proj_hom_mat2d_distortion VectorToProjHomMat2dDistortion VectorToProjHomMat2dDistortion (Operator)
Name
vector_to_proj_hom_mat2d_distortion T_vector_to_proj_hom_mat2d_distortion VectorToProjHomMat2dDistortion VectorToProjHomMat2dDistortion
— Bestimmung der projektiven Transformationsmatrix und des radialen
Verzeichnungskoeffizienten unter Verwendung vorgegebener
Punktkorrespondenzen.
Signatur
vector_to_proj_hom_mat2d_distortion ( : : Points1Row , Points1Col , Points2Row , Points2Col , CovRR1 , CovRC1 , CovCC1 , CovRR2 , CovRC2 , CovCC2 , ImageWidth , ImageHeight , Method : HomMat2D , Kappa , Error )
Herror T_vector_to_proj_hom_mat2d_distortion (const Htuple Points1Row , const Htuple Points1Col , const Htuple Points2Row , const Htuple Points2Col , const Htuple CovRR1 , const Htuple CovRC1 , const Htuple CovCC1 , const Htuple CovRR2 , const Htuple CovRC2 , const Htuple CovCC2 , const Htuple ImageWidth , const Htuple ImageHeight , const Htuple Method , Htuple* HomMat2D , Htuple* Kappa , Htuple* Error )
void VectorToProjHomMat2dDistortion (const HTuple& Points1Row , const HTuple& Points1Col , const HTuple& Points2Row , const HTuple& Points2Col , const HTuple& CovRR1 , const HTuple& CovRC1 , const HTuple& CovCC1 , const HTuple& CovRR2 , const HTuple& CovRC2 , const HTuple& CovCC2 , const HTuple& ImageWidth , const HTuple& ImageHeight , const HTuple& Method , HTuple* HomMat2D , HTuple* Kappa , HTuple* Error )
double HHomMat2D ::VectorToProjHomMat2dDistortion (const HTuple& Points1Row , const HTuple& Points1Col , const HTuple& Points2Row , const HTuple& Points2Col , const HTuple& CovRR1 , const HTuple& CovRC1 , const HTuple& CovCC1 , const HTuple& CovRR2 , const HTuple& CovRC2 , const HTuple& CovCC2 , Hlong ImageWidth , Hlong ImageHeight , const HString& Method , double* Error )
double HHomMat2D ::VectorToProjHomMat2dDistortion (const HTuple& Points1Row , const HTuple& Points1Col , const HTuple& Points2Row , const HTuple& Points2Col , const HTuple& CovRR1 , const HTuple& CovRC1 , const HTuple& CovCC1 , const HTuple& CovRR2 , const HTuple& CovRC2 , const HTuple& CovCC2 , Hlong ImageWidth , Hlong ImageHeight , const char* Method , double* Error )
double HHomMat2D ::VectorToProjHomMat2dDistortion (const HTuple& Points1Row , const HTuple& Points1Col , const HTuple& Points2Row , const HTuple& Points2Col , const HTuple& CovRR1 , const HTuple& CovRC1 , const HTuple& CovCC1 , const HTuple& CovRR2 , const HTuple& CovRC2 , const HTuple& CovCC2 , Hlong ImageWidth , Hlong ImageHeight , const wchar_t* Method , double* Error )
(Nur Windows)
static void HOperatorSet .VectorToProjHomMat2dDistortion (HTuple points1Row , HTuple points1Col , HTuple points2Row , HTuple points2Col , HTuple covRR1 , HTuple covRC1 , HTuple covCC1 , HTuple covRR2 , HTuple covRC2 , HTuple covCC2 , HTuple imageWidth , HTuple imageHeight , HTuple method , out HTuple homMat2D , out HTuple kappa , out HTuple error )
double HHomMat2D .VectorToProjHomMat2dDistortion (HTuple points1Row , HTuple points1Col , HTuple points2Row , HTuple points2Col , HTuple covRR1 , HTuple covRC1 , HTuple covCC1 , HTuple covRR2 , HTuple covRC2 , HTuple covCC2 , int imageWidth , int imageHeight , string method , out double error )
Beschreibung
vector_to_proj_hom_mat2d_distortion vector_to_proj_hom_mat2d_distortion VectorToProjHomMat2dDistortion VectorToProjHomMat2dDistortion VectorToProjHomMat2dDistortion
ermittelt aus
vorgegebenen Punktkorrespondenzen
(Points1Row Points1Row Points1Row Points1Row points1Row
,Points1Col Points1Col Points1Col Points1Col points1Col
),
(Points2Row Points2Row Points2Row Points2Row points2Row
,Points2Col Points2Col Points2Col Points2Col points2Col
) die projektive
Transformationsmatrix HomMat2D HomMat2D HomMat2D HomMat2D homMat2D
und den radialen
Verzeichnungskoeffizienten Kappa Kappa Kappa Kappa kappa
, welche die
folgende Gleichung am besten erfüllen:
Hierbei sind
Bildpunkte, die durch Entzerrung der Eingabebildpunkte mit
dem Divisionsmodell entstehen (siehe Kalibrierung ):
Hierbei bezeichnen
die verzerrten
Bildpunkte relativ zum Bildmittelpunkt.
vector_to_proj_hom_mat2d_distortion vector_to_proj_hom_mat2d_distortion VectorToProjHomMat2dDistortion VectorToProjHomMat2dDistortion VectorToProjHomMat2dDistortion
nimmt also an, dass der
Hauptpunkt, d.h. das Zentrum der radialen Verzeichnungen, im
Bildmittelpunkt liegt. Die Punktkorrepondenzen
(Points1Row Points1Row Points1Row Points1Row points1Row
,Points1Col Points1Col Points1Col Points1Col points1Col
) und
(Points2Row Points2Row Points2Row Points2Row points2Row
,Points2Col Points2Col Points2Col Points2Col points2Col
) müssen aus Bildern extrahiert
werden, die mit derselben Kamera aufgenommen worden sind.
Das zurückgelieferte Kappa Kappa Kappa Kappa kappa
kann dazu verwendet werden,
Kameraparameter zu konstruieren, die zur Entzerrung von Bildern oder
Bildpunkten verwendet werden können (siehe
change_radial_distortion_cam_par change_radial_distortion_cam_par ChangeRadialDistortionCamPar ChangeRadialDistortionCamPar ChangeRadialDistortionCamPar
,
change_radial_distortion_image change_radial_distortion_image ChangeRadialDistortionImage ChangeRadialDistortionImage ChangeRadialDistortionImage
und
change_radial_distortion_points change_radial_distortion_points ChangeRadialDistortionPoints ChangeRadialDistortionPoints ChangeRadialDistortionPoints
):
Die minimale Anzahl an Punktkorrespondenzen ist fünf.
vector_to_proj_hom_mat2d_distortion vector_to_proj_hom_mat2d_distortion VectorToProjHomMat2dDistortion VectorToProjHomMat2dDistortion VectorToProjHomMat2dDistortion
minimiert den
Transformationsfehler basierend auf den obigen Gleichungen. Um dies
zu erreichen, sind verschiedene Algorithmen verfügbar. Welches
Verfahren verwendet werden soll, kann mittels des Parameters
Method Method Method Method method
gesteuert werden. Für Method Method Method Method method
=
'linear' "linear" "linear" "linear" "linear" wird ein lineares Verfahren verwendet, das einen
algebraischen Fehler basierend auf den obigen Gleichungen minimiert.
Dieses Verfahren ist sehr schnell und liefert genaue Ergebnisse für
geringes bis mittleres Rauschen der Punktkoordinaten und für die
meisten Verzeichnungen (außer kleinen Verzeichnungen). Für
Method Method Method Method method
= 'gold_standard' "gold_standard" "gold_standard" "gold_standard" "gold_standard" wird eine mathematisch
optimale, dafür aber langsamere, Optimierung durchführt, die den
geometrischen Reprojektionsfehler minimiert. Im allgemeinen sollte
Method Method Method Method method
= 'gold_standard' "gold_standard" "gold_standard" "gold_standard" "gold_standard" gewählt werden.
Falls 'gold_standard' "gold_standard" "gold_standard" "gold_standard" "gold_standard" verwendet wird und die Punkte mit
einem Operator wie points_foerstner points_foerstner PointsFoerstner PointsFoerstner PointsFoerstner
, der die Kovarianzmatrix
für jeden Punkt zurückliefert, extrahiert wurden, kann dies in der
Berechnung berücksichtigt werden, indem die Kovarianzen in
CovRR1 CovRR1 CovRR1 CovRR1 covRR1
, CovRC1 CovRC1 CovRC1 CovRC1 covRC1
, CovCC1 CovCC1 CovCC1 CovCC1 covCC1
für die Punkte des
ersten Bildes und in CovRR2 CovRR2 CovRR2 CovRR2 covRR2
, CovRC2 CovRC2 CovRC2 CovRC2 covRC2
,
CovCC2 CovCC2 CovCC2 CovCC2 covCC2
für die Punkte des zweiten Bildes übergeben werden.
Sind die Kovarianzen unbekannt und wird die Methode
'gold_standard' "gold_standard" "gold_standard" "gold_standard" "gold_standard" verwendet, so werden zur Berechnung intern
Einheits-Kovarianzmatrizen angenommen. Falls 'linear' "linear" "linear" "linear" "linear"
verwendet wird oder die Kovarianzen unbekannt sind, können in den
Kovarianzparametern leere Tupel übergeben werden.
Die Größe Error Error Error Error error
ist ein Gütemaß für die Schätzung der
projektiven Transformationsmatrix und gibt den mittleren
symmetrischen euklidischen Abstand in Pixeln zwischen den Punkten
und ihren korrespondierenden transformierten Punkten an.
Falls die Korrespondenz zwischen den Punkten nicht bestimmt worden
ist, sollten proj_match_points_distortion_ransac proj_match_points_distortion_ransac ProjMatchPointsDistortionRansac ProjMatchPointsDistortionRansac ProjMatchPointsDistortionRansac
oder
proj_match_points_distortion_ransac_guided proj_match_points_distortion_ransac_guided ProjMatchPointsDistortionRansacGuided ProjMatchPointsDistortionRansacGuided ProjMatchPointsDistortionRansacGuided
zur Bestimmung
der Korrespondenz sowie der Transformation verwendet werden.
Achtung
Es 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.
Ausführungsinformationen
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
Wird ohne Parallelisierung verarbeitet.
Parameter
Points1Row Points1Row Points1Row Points1Row points1Row
(input_control) point.y-array →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Eingabepunkte in Bild 1 (Zeilenkoordinate).
Restriktion: length(Points1Row) >= 5
Points1Col Points1Col Points1Col Points1Col points1Col
(input_control) point.x-array →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Eingabepunkte in Bild 1 (Spaltenkoordinate).
Restriktion: length(Points1Col) == length(Points1Row)
Points2Row Points2Row Points2Row Points2Row points2Row
(input_control) point.y-array →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Eingabepunkte in Bild 2 (Zeilenkoordinate).
Restriktion: length(Points2Row) == length(Points1Row)
Points2Col Points2Col Points2Col Points2Col points2Col
(input_control) point.x-array →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Eingabepunkte in Bild 2 (Spaltenkoordinate).
Restriktion: length(Points2Col) == length(Points1Row)
CovRR1 CovRR1 CovRR1 CovRR1 covRR1
(input_control) number-array →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Varianz in Zeilenrichtung der Punkte in Bild 1.
Defaultwert: []
CovRC1 CovRC1 CovRC1 CovRC1 covRC1
(input_control) number-array →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Kovarianz der Punkte in Bild 1.
Defaultwert: []
CovCC1 CovCC1 CovCC1 CovCC1 covCC1
(input_control) number-array →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Varianz in Spaltenrichtung der Punkte in Bild 1.
Defaultwert: []
CovRR2 CovRR2 CovRR2 CovRR2 covRR2
(input_control) number-array →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Varianz in Zeilenrichtung der Punkte in Bild 2.
Defaultwert: []
CovRC2 CovRC2 CovRC2 CovRC2 covRC2
(input_control) number-array →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Kovarianz der Punkte in Bild 2.
Defaultwert: []
CovCC2 CovCC2 CovCC2 CovCC2 covCC2
(input_control) number-array →
HTuple HTuple Htuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
Varianz in Spaltenrichtung der Punkte in Bild 2.
Defaultwert: []
ImageWidth ImageWidth ImageWidth ImageWidth imageWidth
(input_control) integer →
HTuple HTuple Htuple (integer) (int / long) (Hlong ) (Hlong )
Breite der Bilder, aus denen die Punkte extrahiert
wurden.
Restriktion: ImageWidth > 0
ImageHeight ImageHeight ImageHeight ImageHeight imageHeight
(input_control) integer →
HTuple HTuple Htuple (integer) (int / long) (Hlong ) (Hlong )
Höhe der Bilder, aus denen die Punkte extrahiert
wurden.
Restriktion: ImageHeight > 0
Method Method Method Method method
(input_control) string →
HTuple HTuple Htuple (string) (string ) (HString ) (char* )
Schätzalgorithmus.
Defaultwert:
'gold_standard'
"gold_standard"
"gold_standard"
"gold_standard"
"gold_standard"
Werteliste: 'gold_standard' "gold_standard" "gold_standard" "gold_standard" "gold_standard" , 'linear' "linear" "linear" "linear" "linear"
HomMat2D HomMat2D HomMat2D HomMat2D homMat2D
(output_control) hom_mat2d →
HHomMat2D , HTuple HTuple Htuple (real) (double ) (double ) (double )
Homogene projektive Transformationsmatrix.
Kappa Kappa Kappa Kappa kappa
(output_control) real →
HTuple HTuple Htuple (real) (double ) (double ) (double )
Berechneter Verzeichnungskoeffizient.
Error Error Error Error error
(output_control) real →
HTuple HTuple Htuple (real) (double ) (double ) (double )
Mittlerer quadratischer Transformationsfehler.
Vorgänger
proj_match_points_distortion_ransac proj_match_points_distortion_ransac ProjMatchPointsDistortionRansac ProjMatchPointsDistortionRansac ProjMatchPointsDistortionRansac
,
proj_match_points_distortion_ransac_guided proj_match_points_distortion_ransac_guided ProjMatchPointsDistortionRansacGuided ProjMatchPointsDistortionRansacGuided ProjMatchPointsDistortionRansacGuided
,
points_foerstner points_foerstner PointsFoerstner PointsFoerstner PointsFoerstner
,
points_harris points_harris PointsHarris PointsHarris PointsHarris
Nachfolger
change_radial_distortion_cam_par change_radial_distortion_cam_par ChangeRadialDistortionCamPar ChangeRadialDistortionCamPar ChangeRadialDistortionCamPar
,
change_radial_distortion_image change_radial_distortion_image ChangeRadialDistortionImage ChangeRadialDistortionImage ChangeRadialDistortionImage
,
change_radial_distortion_points change_radial_distortion_points ChangeRadialDistortionPoints ChangeRadialDistortionPoints ChangeRadialDistortionPoints
,
projective_trans_image projective_trans_image ProjectiveTransImage ProjectiveTransImage ProjectiveTransImage
,
projective_trans_image_size projective_trans_image_size ProjectiveTransImageSize ProjectiveTransImageSize ProjectiveTransImageSize
,
projective_trans_region projective_trans_region ProjectiveTransRegion ProjectiveTransRegion ProjectiveTransRegion
,
projective_trans_contour_xld projective_trans_contour_xld ProjectiveTransContourXld ProjectiveTransContourXld ProjectiveTransContourXld
,
projective_trans_point_2d projective_trans_point_2d ProjectiveTransPoint2d ProjectiveTransPoint2d ProjectiveTransPoint2d
,
projective_trans_pixel projective_trans_pixel ProjectiveTransPixel ProjectiveTransPixel ProjectiveTransPixel
Alternativen
vector_to_proj_hom_mat2d vector_to_proj_hom_mat2d VectorToProjHomMat2d VectorToProjHomMat2d VectorToProjHomMat2d
,
hom_vector_to_proj_hom_mat2d hom_vector_to_proj_hom_mat2d HomVectorToProjHomMat2d HomVectorToProjHomMat2d HomVectorToProjHomMat2d
Siehe auch
calibrate_cameras calibrate_cameras CalibrateCameras CalibrateCameras CalibrateCameras
Literatur
Richard Hartley, Andrew Zisserman: „Multiple View Geometry in
Computer Vision“; Cambridge University Press, Cambridge; 2003.
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