vector_to_proj_hom_mat2d_distortionT_vector_to_proj_hom_mat2d_distortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortion (Operator)

Name

vector_to_proj_hom_mat2d_distortionT_vector_to_proj_hom_mat2d_distortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortion — 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_distortionvector_to_proj_hom_mat2d_distortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortion ermittelt aus vorgegebenen Punktkorrespondenzen (Points1RowPoints1RowPoints1RowPoints1Rowpoints1Row,Points1ColPoints1ColPoints1ColPoints1Colpoints1Col), (Points2RowPoints2RowPoints2RowPoints2Rowpoints2Row,Points2ColPoints2ColPoints2ColPoints2Colpoints2Col) die projektive Transformationsmatrix HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D und den radialen Verzeichnungskoeffizienten KappaKappaKappaKappakappa , 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_distortionvector_to_proj_hom_mat2d_distortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortion nimmt also an, dass der Hauptpunkt, d.h. das Zentrum der radialen Verzeichnungen, im Bildmittelpunkt liegt. Die Punktkorrepondenzen (Points1RowPoints1RowPoints1RowPoints1Rowpoints1Row,Points1ColPoints1ColPoints1ColPoints1Colpoints1Col) und (Points2RowPoints2RowPoints2RowPoints2Rowpoints2Row,Points2ColPoints2ColPoints2ColPoints2Colpoints2Col) müssen aus Bildern extrahiert werden, die mit derselben Kamera aufgenommen worden sind.

Das zurückgelieferte KappaKappaKappaKappakappa 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_parChangeRadialDistortionCamParChangeRadialDistortionCamParChangeRadialDistortionCamPar, change_radial_distortion_imagechange_radial_distortion_imageChangeRadialDistortionImageChangeRadialDistortionImageChangeRadialDistortionImage und change_radial_distortion_pointschange_radial_distortion_pointsChangeRadialDistortionPointsChangeRadialDistortionPointsChangeRadialDistortionPoints):

Die minimale Anzahl an Punktkorrespondenzen ist fünf. vector_to_proj_hom_mat2d_distortionvector_to_proj_hom_mat2d_distortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortion 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 MethodMethodMethodMethodmethod gesteuert werden. Für MethodMethodMethodMethodmethod = '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 MethodMethodMethodMethodmethod = '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 MethodMethodMethodMethodmethod = '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_foerstnerpoints_foerstnerPointsFoerstnerPointsFoerstnerPointsFoerstner, der die Kovarianzmatrix für jeden Punkt zurückliefert, extrahiert wurden, kann dies in der Berechnung berücksichtigt werden, indem die Kovarianzen in CovRR1CovRR1CovRR1CovRR1covRR1, CovRC1CovRC1CovRC1CovRC1covRC1, CovCC1CovCC1CovCC1CovCC1covCC1 für die Punkte des ersten Bildes und in CovRR2CovRR2CovRR2CovRR2covRR2, CovRC2CovRC2CovRC2CovRC2covRC2, CovCC2CovCC2CovCC2CovCC2covCC2 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 ErrorErrorErrorErrorerror 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_ransacproj_match_points_distortion_ransacProjMatchPointsDistortionRansacProjMatchPointsDistortionRansacProjMatchPointsDistortionRansac oder proj_match_points_distortion_ransac_guidedproj_match_points_distortion_ransac_guidedProjMatchPointsDistortionRansacGuidedProjMatchPointsDistortionRansacGuidedProjMatchPointsDistortionRansacGuided 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

Parameter

Points1RowPoints1RowPoints1RowPoints1Rowpoints1Row (input_control)  point.y-array HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Eingabepunkte in Bild 1 (Zeilenkoordinate).

Restriktion: length(Points1Row) >= 5

Points1ColPoints1ColPoints1ColPoints1Colpoints1Col (input_control)  point.x-array HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Eingabepunkte in Bild 1 (Spaltenkoordinate).

Restriktion: length(Points1Col) == length(Points1Row)

Points2RowPoints2RowPoints2RowPoints2Rowpoints2Row (input_control)  point.y-array HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Eingabepunkte in Bild 2 (Zeilenkoordinate).

Restriktion: length(Points2Row) == length(Points1Row)

Points2ColPoints2ColPoints2ColPoints2Colpoints2Col (input_control)  point.x-array HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Eingabepunkte in Bild 2 (Spaltenkoordinate).

Restriktion: length(Points2Col) == length(Points1Row)

CovRR1CovRR1CovRR1CovRR1covRR1 (input_control)  number-array HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Varianz in Zeilenrichtung der Punkte in Bild 1.

Defaultwert: []

CovRC1CovRC1CovRC1CovRC1covRC1 (input_control)  number-array HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Kovarianz der Punkte in Bild 1.

Defaultwert: []

CovCC1CovCC1CovCC1CovCC1covCC1 (input_control)  number-array HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Varianz in Spaltenrichtung der Punkte in Bild 1.

Defaultwert: []

CovRR2CovRR2CovRR2CovRR2covRR2 (input_control)  number-array HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Varianz in Zeilenrichtung der Punkte in Bild 2.

Defaultwert: []

CovRC2CovRC2CovRC2CovRC2covRC2 (input_control)  number-array HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Kovarianz der Punkte in Bild 2.

Defaultwert: []

CovCC2CovCC2CovCC2CovCC2covCC2 (input_control)  number-array HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Varianz in Spaltenrichtung der Punkte in Bild 2.

Defaultwert: []

ImageWidthImageWidthImageWidthImageWidthimageWidth (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Breite der Bilder, aus denen die Punkte extrahiert wurden.

Restriktion: ImageWidth > 0

ImageHeightImageHeightImageHeightImageHeightimageHeight (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Höhe der Bilder, aus denen die Punkte extrahiert wurden.

Restriktion: ImageHeight > 0

MethodMethodMethodMethodmethod (input_control)  string HTupleHTupleHtuple (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"

HomMat2DHomMat2DHomMat2DHomMat2DhomMat2D (output_control)  hom_mat2d HHomMat2D, HTupleHTupleHtuple (real) (double) (double) (double)

Homogene projektive Transformationsmatrix.

KappaKappaKappaKappakappa (output_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Berechneter Verzeichnungskoeffizient.

ErrorErrorErrorErrorerror (output_control)  real HTupleHTupleHtuple (real) (double) (double) (double)

Mittlerer quadratischer Transformationsfehler.

Vorgänger

proj_match_points_distortion_ransacproj_match_points_distortion_ransacProjMatchPointsDistortionRansacProjMatchPointsDistortionRansacProjMatchPointsDistortionRansac, proj_match_points_distortion_ransac_guidedproj_match_points_distortion_ransac_guidedProjMatchPointsDistortionRansacGuidedProjMatchPointsDistortionRansacGuidedProjMatchPointsDistortionRansacGuided, points_foerstnerpoints_foerstnerPointsFoerstnerPointsFoerstnerPointsFoerstner, points_harrispoints_harrisPointsHarrisPointsHarrisPointsHarris

Nachfolger

change_radial_distortion_cam_parchange_radial_distortion_cam_parChangeRadialDistortionCamParChangeRadialDistortionCamParChangeRadialDistortionCamPar, change_radial_distortion_imagechange_radial_distortion_imageChangeRadialDistortionImageChangeRadialDistortionImageChangeRadialDistortionImage, change_radial_distortion_pointschange_radial_distortion_pointsChangeRadialDistortionPointsChangeRadialDistortionPointsChangeRadialDistortionPoints, projective_trans_imageprojective_trans_imageProjectiveTransImageProjectiveTransImageProjectiveTransImage, projective_trans_image_sizeprojective_trans_image_sizeProjectiveTransImageSizeProjectiveTransImageSizeProjectiveTransImageSize, projective_trans_regionprojective_trans_regionProjectiveTransRegionProjectiveTransRegionProjectiveTransRegion, projective_trans_contour_xldprojective_trans_contour_xldProjectiveTransContourXldProjectiveTransContourXldProjectiveTransContourXld, projective_trans_point_2dprojective_trans_point_2dProjectiveTransPoint2dProjectiveTransPoint2dProjectiveTransPoint2d, projective_trans_pixelprojective_trans_pixelProjectiveTransPixelProjectiveTransPixelProjectiveTransPixel

Alternativen

vector_to_proj_hom_mat2dvector_to_proj_hom_mat2dVectorToProjHomMat2dVectorToProjHomMat2dVectorToProjHomMat2d, hom_vector_to_proj_hom_mat2dhom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dHomVectorToProjHomMat2dHomVectorToProjHomMat2d

Siehe auch

calibrate_camerascalibrate_camerasCalibrateCamerasCalibrateCamerasCalibrateCameras

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