Name
vector_to_proj_hom_mat2d_distortionT_vector_to_proj_hom_mat2d_distortionVectorToProjHomMat2dDistortionvector_to_proj_hom_mat2d_distortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortion — Bestimmung der projektiven Transformationsmatrix und des radialen
Verzeichnungskoeffizienten unter Verwendung vorgegebener
Punktkorrespondenzen.
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)
Herror 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)
void HOperatorSetX.VectorToProjHomMat2dDistortion(
[in] VARIANT Points1Row, [in] VARIANT Points1Col, [in] VARIANT Points2Row, [in] VARIANT Points2Col, [in] VARIANT CovRR1, [in] VARIANT CovRC1, [in] VARIANT CovCC1, [in] VARIANT CovRR2, [in] VARIANT CovRC2, [in] VARIANT CovCC2, [in] VARIANT ImageWidth, [in] VARIANT ImageHeight, [in] VARIANT Method, [out] VARIANT* HomMat2d, [out] VARIANT* Kappa, [out] VARIANT* Error)
double HHomMat2DX.VectorToProjHomMat2dDistortion(
[in] VARIANT Points1Row, [in] VARIANT Points1Col, [in] VARIANT Points2Row, [in] VARIANT Points2Col, [in] VARIANT CovRR1, [in] VARIANT CovRC1, [in] VARIANT CovCC1, [in] VARIANT CovRR2, [in] VARIANT CovRC2, [in] VARIANT CovCC2, [in] Hlong ImageWidth, [in] Hlong ImageHeight, [in] BSTR Method, [out] double* Error)
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)
vector_to_proj_hom_mat2d_distortionvector_to_proj_hom_mat2d_distortionVectorToProjHomMat2dDistortionvector_to_proj_hom_mat2d_distortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortion ermittelt aus
vorgegebenen Punktkorrespondenzen
(Points1RowPoints1RowPoints1RowPoints1RowPoints1Rowpoints1Row,Points1ColPoints1ColPoints1ColPoints1ColPoints1Colpoints1Col),
(Points2RowPoints2RowPoints2RowPoints2RowPoints2Rowpoints2Row,Points2ColPoints2ColPoints2ColPoints2ColPoints2Colpoints2Col) die projektive
Transformationsmatrix HomMat2DHomMat2DHomMat2DHomMat2DHomMat2DhomMat2D und den radialen
Verzeichnungskoeffizienten KappaKappaKappaKappaKappakappa, welche die
folgende Gleichung am besten erfüllen:
/ r2 \ / r1 \
| c2 | = HomMat2D * | c1 |.
\ 1 / \ 1 /
Hierbei sind (r1,c1) und
(r2,c2) Bildpunkte, die durch Entzerrung der Eingabebildpunkte mit
dem Divisionsmodell entstehen (siehe calibrate_camerascalibrate_camerasCalibrateCamerascalibrate_camerasCalibrateCamerasCalibrateCameras):
r = r' / (1+Kappa*(r'^2+c'^2)
c = c' / (1+Kappa*(r'^2+c'^2)
Hierbei bezeichnen (r1',c1') =
(Points1RowPoints1RowPoints1RowPoints1RowPoints1Rowpoints1Row-0.5*(ImageHeightImageHeightImageHeightImageHeightImageHeightimageHeight-1),
Points1ColPoints1ColPoints1ColPoints1ColPoints1Colpoints1Col-0.5*(ImageWidthImageWidthImageWidthImageWidthImageWidthimageWidth-1)) und (r2',c2') =
(Points2RowPoints2RowPoints2RowPoints2RowPoints2Rowpoints2Row-0.5*(ImageHeightImageHeightImageHeightImageHeightImageHeightimageHeight-1),
Points2ColPoints2ColPoints2ColPoints2ColPoints2Colpoints2Col-0.5*(ImageWidthImageWidthImageWidthImageWidthImageWidthimageWidth-1)) die verzerrten
Bildpunkte relativ zum Bildmittelpunkt.
vector_to_proj_hom_mat2d_distortionvector_to_proj_hom_mat2d_distortionVectorToProjHomMat2dDistortionvector_to_proj_hom_mat2d_distortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortion nimmt also an, dass der
Hauptpunkt, d.h. das Zentrum der radialen Verzeichnungen, im
Bildmittelpunkt liegt.
Das zurückgelieferte KappaKappaKappaKappaKappakappa kann dazu verwendet werden,
Kameraparameter zu konstruieren, die zur Entzerrung von Bildern oder
Bildpunkten verwendet werden können (siehe
change_radial_distortion_cam_parchange_radial_distortion_cam_parChangeRadialDistortionCamParchange_radial_distortion_cam_parChangeRadialDistortionCamParChangeRadialDistortionCamPar,
change_radial_distortion_imagechange_radial_distortion_imageChangeRadialDistortionImagechange_radial_distortion_imageChangeRadialDistortionImageChangeRadialDistortionImage und
change_radial_distortion_pointschange_radial_distortion_pointsChangeRadialDistortionPointschange_radial_distortion_pointsChangeRadialDistortionPointsChangeRadialDistortionPoints):
CamPar = [0.0,KappaKappaKappaKappaKappakappa,1.0,1.0,
0.5*(ImageWidthImageWidthImageWidthImageWidthImageWidthimageWidth-1),0.5*(ImageHeightImageHeightImageHeightImageHeightImageHeightimageHeight-1),
ImageWidthImageWidthImageWidthImageWidthImageWidthimageWidth,ImageHeightImageHeightImageHeightImageHeightImageHeightimageHeight]
Die minimale Anzahl an Punktkorrespondenzen ist fünf.
vector_to_proj_hom_mat2d_distortionvector_to_proj_hom_mat2d_distortionVectorToProjHomMat2dDistortionvector_to_proj_hom_mat2d_distortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortion 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
MethodMethodMethodMethodMethodmethod gesteuert werden. Für MethodMethodMethodMethodMethodmethod =
'linear'"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
MethodMethodMethodMethodMethodmethod = 'gold_standard'"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
MethodMethodMethodMethodMethodmethod = 'gold_standard'"gold_standard""gold_standard""gold_standard""gold_standard""gold_standard" gewählt werden.
Falls 'gold_standard'"gold_standard""gold_standard""gold_standard""gold_standard""gold_standard" verwendet wird und die Punkte mit
einem Operator wie points_foerstnerpoints_foerstnerPointsFoerstnerpoints_foerstnerPointsFoerstnerPointsFoerstner, der die Kovarianzmatrix
für jeden Punkt zurückliefert, extrahiert wurden, kann dies in der
Berechnung berücksichtigt werden, indem die Kovarianzen in
CovRR1CovRR1CovRR1CovRR1CovRR1covRR1, CovRC1CovRC1CovRC1CovRC1CovRC1covRC1, CovCC1CovCC1CovCC1CovCC1CovCC1covCC1 für die Punkte des
ersten Bildes und in CovRR2CovRR2CovRR2CovRR2CovRR2covRR2, CovRC2CovRC2CovRC2CovRC2CovRC2covRC2,
CovCC2CovCC2CovCC2CovCC2CovCC2covCC2 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""gold_standard" verwendet, so werden zur Berechnung intern
Einheits-Kovarianzmatrizen angenommen. Falls 'linear'"linear""linear""linear""linear""linear"
verwendet wird oder die Kovarianzen unbekannt sind, können in den
Kovarianzparametern leere Tupel übergeben werden.
Die Größe ErrorErrorErrorErrorErrorerror ist ein Gütemaß für die Schätzung der
projektiven Transformationsmatrix und gibt den mittleren
suymmetrischen 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_ransacproj_match_points_distortion_ransacProjMatchPointsDistortionRansacproj_match_points_distortion_ransacProjMatchPointsDistortionRansacProjMatchPointsDistortionRansac oder
proj_match_points_distortion_ransac_guidedproj_match_points_distortion_ransac_guidedProjMatchPointsDistortionRansacGuidedproj_match_points_distortion_ransac_guidedProjMatchPointsDistortionRansacGuidedProjMatchPointsDistortionRansacGuided zur Bestimmung
der Korrespondenz sowie der Transformation verwendet werden.
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.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Eingabepunkte in Bild 1 (Zeilenkoordinate).
Restriktion: length(Points1Row) >= 5
Eingabepunkte in Bild 1 (Spaltenkoordinate).
Restriktion: length(Points1Col) == length(Points1Row)
Eingabepunkte in Bild 2 (Zeilenkoordinate).
Restriktion: length(Points2Row) == length(Points1Row)
Eingabepunkte in Bild 2 (Spaltenkoordinate).
Restriktion: length(Points2Col) == length(Points1Row)
Varianz in Zeilenrichtung der Punkte in Bild 1.
Defaultwert: []
Kovarianz der Punkte in Bild 1.
Defaultwert: []
Varianz in Spaltenrichtung der Punkte in Bild 1.
Defaultwert: []
Varianz in Zeilenrichtung der Punkte in Bild 2.
Defaultwert: []
Kovarianz der Punkte in Bild 2.
Defaultwert: []
Varianz in Spaltenrichtung der Punkte in Bild 2.
Defaultwert: []
Breite der Bilder, aus denen die Punkte extrahiert
wurden.
Restriktion: ImageWidth > 0
Höhe der Bilder, aus denen die Punkte extrahiert
wurden.
Restriktion: ImageHeight > 0
Schätzalgorithmus.
Defaultwert:
'gold_standard'
"gold_standard"
"gold_standard"
"gold_standard"
"gold_standard"
"gold_standard"
Werteliste: 'gold_standard'"gold_standard""gold_standard""gold_standard""gold_standard""gold_standard", 'linear'"linear""linear""linear""linear""linear"
Homogene projektive Transformationsmatrix.
Berechneter Verzeichnungskoeffizient.
Mittlerer quadratischer Transformationsfehler.
proj_match_points_distortion_ransacproj_match_points_distortion_ransacProjMatchPointsDistortionRansacproj_match_points_distortion_ransacProjMatchPointsDistortionRansacProjMatchPointsDistortionRansac,
proj_match_points_distortion_ransac_guidedproj_match_points_distortion_ransac_guidedProjMatchPointsDistortionRansacGuidedproj_match_points_distortion_ransac_guidedProjMatchPointsDistortionRansacGuidedProjMatchPointsDistortionRansacGuided,
points_foerstnerpoints_foerstnerPointsFoerstnerpoints_foerstnerPointsFoerstnerPointsFoerstner,
points_harrispoints_harrisPointsHarrispoints_harrisPointsHarrisPointsHarris
change_radial_distortion_cam_parchange_radial_distortion_cam_parChangeRadialDistortionCamParchange_radial_distortion_cam_parChangeRadialDistortionCamParChangeRadialDistortionCamPar,
change_radial_distortion_imagechange_radial_distortion_imageChangeRadialDistortionImagechange_radial_distortion_imageChangeRadialDistortionImageChangeRadialDistortionImage,
change_radial_distortion_pointschange_radial_distortion_pointsChangeRadialDistortionPointschange_radial_distortion_pointsChangeRadialDistortionPointsChangeRadialDistortionPoints,
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,
hom_vector_to_proj_hom_mat2dhom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dhom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dHomVectorToProjHomMat2d
calibrate_camerascalibrate_camerasCalibrateCamerascalibrate_camerasCalibrateCamerasCalibrateCameras
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.
Calibration