vector_to_proj_hom_mat2d_distortionT_vector_to_proj_hom_mat2d_distortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortionvector_to_proj_hom_mat2d_distortion (Operator)

Name

vector_to_proj_hom_mat2d_distortionT_vector_to_proj_hom_mat2d_distortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortionvector_to_proj_hom_mat2d_distortion — 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)

def vector_to_proj_hom_mat2d_distortion(points_1row: Sequence[Union[float, int]], points_1col: Sequence[Union[float, int]], points_2row: Sequence[Union[float, int]], points_2col: Sequence[Union[float, int]], cov_rr1: Sequence[Union[float, int]], cov_rc1: Sequence[Union[float, int]], cov_cc1: Sequence[Union[float, int]], cov_rr2: Sequence[Union[float, int]], cov_rc2: Sequence[Union[float, int]], cov_cc2: Sequence[Union[float, int]], image_width: int, image_height: int, method: str) -> Tuple[Sequence[float], float, float]

Beschreibung

vector_to_proj_hom_mat2d_distortionvector_to_proj_hom_mat2d_distortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortionvector_to_proj_hom_mat2d_distortion ermittelt aus vorgegebenen Punktkorrespondenzen (Points1RowPoints1RowPoints1RowPoints1Rowpoints1Rowpoints_1row,Points1ColPoints1ColPoints1ColPoints1Colpoints1Colpoints_1col), (Points2RowPoints2RowPoints2RowPoints2Rowpoints2Rowpoints_2row,Points2ColPoints2ColPoints2ColPoints2Colpoints2Colpoints_2col) die projektive Transformationsmatrix HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d und den radialen Verzeichnungskoeffizienten KappaKappaKappaKappakappakappa , 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_distortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortionvector_to_proj_hom_mat2d_distortion nimmt also an, dass der Hauptpunkt, d.h. das Zentrum der radialen Verzeichnungen, im Bildmittelpunkt liegt. Die Punktkorrespondenzen (Points1RowPoints1RowPoints1RowPoints1Rowpoints1Rowpoints_1row,Points1ColPoints1ColPoints1ColPoints1Colpoints1Colpoints_1col) und (Points2RowPoints2RowPoints2RowPoints2Rowpoints2Rowpoints_2row,Points2ColPoints2ColPoints2ColPoints2Colpoints2Colpoints_2col) müssen aus Bildern extrahiert werden, die mit derselben Kamera aufgenommen worden sind.

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_parChangeRadialDistortionCamParChangeRadialDistortionCamParChangeRadialDistortionCamParchange_radial_distortion_cam_par, change_radial_distortion_imagechange_radial_distortion_imageChangeRadialDistortionImageChangeRadialDistortionImageChangeRadialDistortionImagechange_radial_distortion_image und change_radial_distortion_pointschange_radial_distortion_pointsChangeRadialDistortionPointsChangeRadialDistortionPointsChangeRadialDistortionPointschange_radial_distortion_points):

Die minimale Anzahl an Punktkorrespondenzen ist fünf. vector_to_proj_hom_mat2d_distortionvector_to_proj_hom_mat2d_distortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortionVectorToProjHomMat2dDistortionvector_to_proj_hom_mat2d_distortion 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_foerstnerPointsFoerstnerPointsFoerstnerPointsFoerstnerpoints_foerstner, der die Kovarianzmatrix für jeden Punkt zurückliefert, extrahiert wurden, kann dies in der Berechnung berücksichtigt werden, indem die Kovarianzen in CovRR1CovRR1CovRR1CovRR1covRR1cov_rr1, CovRC1CovRC1CovRC1CovRC1covRC1cov_rc1, CovCC1CovCC1CovCC1CovCC1covCC1cov_cc1 für die Punkte des ersten Bildes und in CovRR2CovRR2CovRR2CovRR2covRR2cov_rr2, CovRC2CovRC2CovRC2CovRC2covRC2cov_rc2, CovCC2CovCC2CovCC2CovCC2covCC2cov_cc2 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 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_ransacProjMatchPointsDistortionRansacProjMatchPointsDistortionRansacProjMatchPointsDistortionRansacproj_match_points_distortion_ransac oder proj_match_points_distortion_ransac_guidedproj_match_points_distortion_ransac_guidedProjMatchPointsDistortionRansacGuidedProjMatchPointsDistortionRansacGuidedProjMatchPointsDistortionRansacGuidedproj_match_points_distortion_ransac_guided 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

Points1RowPoints1RowPoints1RowPoints1Rowpoints1Rowpoints_1row (input_control)  point.y-array HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Eingabepunkte in Bild 1 (Zeilenkoordinate).

Restriktion: length(Points1Row) >= 5

Points1ColPoints1ColPoints1ColPoints1Colpoints1Colpoints_1col (input_control)  point.x-array HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Eingabepunkte in Bild 1 (Spaltenkoordinate).

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

Points2RowPoints2RowPoints2RowPoints2Rowpoints2Rowpoints_2row (input_control)  point.y-array HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Eingabepunkte in Bild 2 (Zeilenkoordinate).

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

Points2ColPoints2ColPoints2ColPoints2Colpoints2Colpoints_2col (input_control)  point.x-array HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Eingabepunkte in Bild 2 (Spaltenkoordinate).

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

CovRR1CovRR1CovRR1CovRR1covRR1cov_rr1 (input_control)  number-array HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Varianz in Zeilenrichtung der Punkte in Bild 1.

Defaultwert: []

CovRC1CovRC1CovRC1CovRC1covRC1cov_rc1 (input_control)  number-array HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Kovarianz der Punkte in Bild 1.

Defaultwert: []

CovCC1CovCC1CovCC1CovCC1covCC1cov_cc1 (input_control)  number-array HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Varianz in Spaltenrichtung der Punkte in Bild 1.

Defaultwert: []

CovRR2CovRR2CovRR2CovRR2covRR2cov_rr2 (input_control)  number-array HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Varianz in Zeilenrichtung der Punkte in Bild 2.

Defaultwert: []

CovRC2CovRC2CovRC2CovRC2covRC2cov_rc2 (input_control)  number-array HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Kovarianz der Punkte in Bild 2.

Defaultwert: []

CovCC2CovCC2CovCC2CovCC2covCC2cov_cc2 (input_control)  number-array HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Varianz in Spaltenrichtung der Punkte in Bild 2.

Defaultwert: []

ImageWidthImageWidthImageWidthImageWidthimageWidthimage_width (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Breite der Bilder, aus denen die Punkte extrahiert wurden.

Restriktion: ImageWidth > 0

ImageHeightImageHeightImageHeightImageHeightimageHeightimage_height (input_control)  integer HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

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

Restriktion: ImageHeight > 0

MethodMethodMethodMethodmethodmethod (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

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"

HomMat2DHomMat2DHomMat2DHomMat2DhomMat2Dhom_mat_2d (output_control)  hom_mat2d HHomMat2D, HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Homogene projektive Transformationsmatrix.

KappaKappaKappaKappakappakappa (output_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Berechneter Verzeichnungskoeffizient.

ErrorErrorErrorErrorerrorerror (output_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Mittlerer quadratischer Transformationsfehler.

Vorgänger

proj_match_points_distortion_ransacproj_match_points_distortion_ransacProjMatchPointsDistortionRansacProjMatchPointsDistortionRansacProjMatchPointsDistortionRansacproj_match_points_distortion_ransac, proj_match_points_distortion_ransac_guidedproj_match_points_distortion_ransac_guidedProjMatchPointsDistortionRansacGuidedProjMatchPointsDistortionRansacGuidedProjMatchPointsDistortionRansacGuidedproj_match_points_distortion_ransac_guided, points_foerstnerpoints_foerstnerPointsFoerstnerPointsFoerstnerPointsFoerstnerpoints_foerstner, points_harrispoints_harrisPointsHarrisPointsHarrisPointsHarrispoints_harris

Nachfolger

change_radial_distortion_cam_parchange_radial_distortion_cam_parChangeRadialDistortionCamParChangeRadialDistortionCamParChangeRadialDistortionCamParchange_radial_distortion_cam_par, change_radial_distortion_imagechange_radial_distortion_imageChangeRadialDistortionImageChangeRadialDistortionImageChangeRadialDistortionImagechange_radial_distortion_image, change_radial_distortion_pointschange_radial_distortion_pointsChangeRadialDistortionPointsChangeRadialDistortionPointsChangeRadialDistortionPointschange_radial_distortion_points, projective_trans_imageprojective_trans_imageProjectiveTransImageProjectiveTransImageProjectiveTransImageprojective_trans_image, projective_trans_image_sizeprojective_trans_image_sizeProjectiveTransImageSizeProjectiveTransImageSizeProjectiveTransImageSizeprojective_trans_image_size, projective_trans_regionprojective_trans_regionProjectiveTransRegionProjectiveTransRegionProjectiveTransRegionprojective_trans_region, projective_trans_contour_xldprojective_trans_contour_xldProjectiveTransContourXldProjectiveTransContourXldProjectiveTransContourXldprojective_trans_contour_xld, projective_trans_point_2dprojective_trans_point_2dProjectiveTransPoint2dProjectiveTransPoint2dProjectiveTransPoint2dprojective_trans_point_2d, projective_trans_pixelprojective_trans_pixelProjectiveTransPixelProjectiveTransPixelProjectiveTransPixelprojective_trans_pixel

Alternativen

vector_to_proj_hom_mat2dvector_to_proj_hom_mat2dVectorToProjHomMat2dVectorToProjHomMat2dVectorToProjHomMat2dvector_to_proj_hom_mat2d, hom_vector_to_proj_hom_mat2dhom_vector_to_proj_hom_mat2dHomVectorToProjHomMat2dHomVectorToProjHomMat2dHomVectorToProjHomMat2dhom_vector_to_proj_hom_mat2d

Siehe auch

calibrate_camerascalibrate_camerasCalibrateCamerasCalibrateCamerasCalibrateCamerascalibrate_cameras

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