Name
vector_to_fundamental_matrix_distortionT_vector_to_fundamental_matrix_distortionVectorToFundamentalMatrixDistortionvector_to_fundamental_matrix_distortionVectorToFundamentalMatrixDistortionVectorToFundamentalMatrixDistortion — Bestimmung der Fundamental-Matrix und des radialen
Verzeichnungskoeffizienten unter Verwendung vorgegebener
Punktkorrespondenzen sowie Rekonstruktion der 3D Raumpunkte.
vector_to_fundamental_matrix_distortion( : : Rows1, Cols1, Rows2, Cols2, CovRR1, CovRC1, CovCC1, CovRR2, CovRC2, CovCC2, ImageWidth, ImageHeight, Method : FMatrix, Kappa, Error, X, Y, Z, W)
Herror T_vector_to_fundamental_matrix_distortion(const Htuple Rows1, const Htuple Cols1, const Htuple Rows2, const Htuple Cols2, 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* FMatrix, Htuple* Kappa, Htuple* Error, Htuple* X, Htuple* Y, Htuple* Z, Htuple* W)
Herror vector_to_fundamental_matrix_distortion(const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, 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* FMatrix, HTuple* Kappa, HTuple* Error, HTuple* X, HTuple* Y, HTuple* Z, HTuple* W)
void VectorToFundamentalMatrixDistortion(const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, 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* FMatrix, HTuple* Kappa, HTuple* Error, HTuple* X, HTuple* Y, HTuple* Z, HTuple* W)
double HHomMat2D::VectorToFundamentalMatrixDistortion(const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, 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, HTuple* X, HTuple* Y, HTuple* Z, HTuple* W)
double HHomMat2D::VectorToFundamentalMatrixDistortion(const HTuple& Rows1, const HTuple& Cols1, const HTuple& Rows2, const HTuple& Cols2, 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, HTuple* X, HTuple* Y, HTuple* Z, HTuple* W)
void HOperatorSetX.VectorToFundamentalMatrixDistortion(
[in] VARIANT Rows1, [in] VARIANT Cols1, [in] VARIANT Rows2, [in] VARIANT Cols2, [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* FMatrix, [out] VARIANT* Kappa, [out] VARIANT* Error, [out] VARIANT* X, [out] VARIANT* Y, [out] VARIANT* Z, [out] VARIANT* W)
double HHomMat2DX.VectorToFundamentalMatrixDistortion(
[in] VARIANT Rows1, [in] VARIANT Cols1, [in] VARIANT Rows2, [in] VARIANT Cols2, [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, [out] VARIANT* X, [out] VARIANT* Y, [out] VARIANT* Z, [out] VARIANT* W)
static void HOperatorSet.VectorToFundamentalMatrixDistortion(HTuple rows1, HTuple cols1, HTuple rows2, HTuple cols2, HTuple covRR1, HTuple covRC1, HTuple covCC1, HTuple covRR2, HTuple covRC2, HTuple covCC2, HTuple imageWidth, HTuple imageHeight, HTuple method, out HTuple FMatrix, out HTuple kappa, out HTuple error, out HTuple x, out HTuple y, out HTuple z, out HTuple w)
double HHomMat2D.VectorToFundamentalMatrixDistortion(HTuple rows1, HTuple cols1, HTuple rows2, HTuple cols2, HTuple covRR1, HTuple covRC1, HTuple covCC1, HTuple covRR2, HTuple covRC2, HTuple covCC2, int imageWidth, int imageHeight, string method, out double error, out HTuple x, out HTuple y, out HTuple z, out HTuple w)
vector_to_fundamental_matrix_distortionvector_to_fundamental_matrix_distortionVectorToFundamentalMatrixDistortionvector_to_fundamental_matrix_distortionVectorToFundamentalMatrixDistortionVectorToFundamentalMatrixDistortion ermittelt aus
vorgegebenen Punktkorrespondenzen (Rows1Rows1Rows1Rows1Rows1rows1,Cols1Cols1Cols1Cols1Cols1cols1),
(Rows2Rows2Rows2Rows2Rows2rows2,Cols2Cols2Cols2Cols2Cols2cols2) die Fundamental-Matrix
FMatrixFMatrixFMatrixFMatrixFMatrixFMatrix und den radialen Verzeichnungskoeffizienten
KappaKappaKappaKappaKappakappa, welche die Epipolargleichung
T
/ c2 \ / c1 \
| r2 | * FMatrix * | r1 | = 0 .
\ 1 / \ 1 /
am besten erfüllen. 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') =
(Rows1Rows1Rows1Rows1Rows1rows1-0.5*(ImageHeightImageHeightImageHeightImageHeightImageHeightimageHeight-1),
Cols1Cols1Cols1Cols1Cols1cols1-0.5*(ImageWidthImageWidthImageWidthImageWidthImageWidthimageWidth-1)) und (r2',c2') =
(Rows2Rows2Rows2Rows2Rows2rows2-0.5*(ImageHeightImageHeightImageHeightImageHeightImageHeightimageHeight-1),
Cols2Cols2Cols2Cols2Cols2cols2-0.5*(ImageWidthImageWidthImageWidthImageWidthImageWidthimageWidth-1)) die verzerrten
Bildpunkte relativ zum Bildmittelpunkt.
vector_to_fundamental_matrix_distortionvector_to_fundamental_matrix_distortionVectorToFundamentalMatrixDistortionvector_to_fundamental_matrix_distortionVectorToFundamentalMatrixDistortionVectorToFundamentalMatrixDistortion 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]
Zu beachten bei den obigen Formeln ist die Position von Spalte bzw.
Zeile in den Punktkoordinaten. Da die Fundamental-Matrix die
projektive Beziehung zweier Stereobilder im 3D Raum wiedergibt, muss
die X/Y Notation mit dem Kamerakoordinatensystem konform sein.
(X,Y) Koordinaten entsprechen daher einem (Column,Row) Paar.
Für eine beliebige relative Lage der Kameras zueinander ist die
minimale Anzahl an Punktkorrespondenzen neun. MethodMethodMethodMethodMethodmethod ist
dann gleich 'linear'"linear""linear""linear""linear""linear" oder 'gold_standard'"gold_standard""gold_standard""gold_standard""gold_standard""gold_standard" zu
wählen. Sind die linke und rechte Kamera identisch und ist
zusätzlich die relative Lage zwischen den Kameras eine reine
Translation, so ist MethodMethodMethodMethodMethodmethod gleich 'trans_linear'"trans_linear""trans_linear""trans_linear""trans_linear""trans_linear"
oder 'trans_gold_standard'"trans_gold_standard""trans_gold_standard""trans_gold_standard""trans_gold_standard""trans_gold_standard" zu wählen. In diesem speziellen
Fall ist die minimale Anzahl an korrespondierenden Punkten nur vier.
Die Fundamental-Matrix wird so berechnet, dass ein Fehlermaß
minimiert wird. Um dieses Ergebnis zu erreichen, sind verschiedene
Algorithmen verfügbar. Welches Verfahren verwendet werden soll,
kann ebenfalls mittels des Parameters MethodMethodMethodMethodMethodmethod gesteuert
werden. Für MethodMethodMethodMethodMethodmethod gleich 'linear'"linear""linear""linear""linear""linear" bzw.
'trans_linear'"trans_linear""trans_linear""trans_linear""trans_linear""trans_linear" wird ein lineares Verfahren verwendet, das
einen algebraischen Fehler basierend auf obigen Epipolargleichungen
minimiert. Dieses Verfahren ist sehr schnell. Für den Fall der
reinen Translation (MethodMethodMethodMethodMethodmethod = 'trans_linear'"trans_linear""trans_linear""trans_linear""trans_linear""trans_linear")
liefert das lineare Verfahren genaue Ergebnisse für geringes bis
mittleres Rauschen der Punktkoordinaten und für die meisten
Verzeichnungen (außer sehr kleinen Verzeichnungen). Für eine
beliebige Lage der Kameras (MethodMethodMethodMethodMethodmethod = 'linear'"linear""linear""linear""linear""linear")
liefert das lineare Verfahren nur für sehr geringes Rauschen der
Punktkoordinaten und hinreichend große Verzeichnungen genaue
Ergebnisse. Für MethodMethodMethodMethodMethodmethod gleich 'gold_standard'"gold_standard""gold_standard""gold_standard""gold_standard""gold_standard"
bzw. 'trans_gold_standard'"trans_gold_standard""trans_gold_standard""trans_gold_standard""trans_gold_standard""trans_gold_standard" wird eine mathematisch
optimale, dafür aber langsamere, Optimierung durchgeführt, die den
geometrischen Reprojektionsfehler von rekonstruierten projektiven 3D
Punkten minimiert. In diesem Fall werden neben der
Fundamental-Matrix und dem radialen Verzeichnungskoeffizienten auch
die projektiven Koordinaten
(XXXXXx,YYYYYy,ZZZZZz,WWWWWw) der rekonstruierten
Punkte zurückgegeben. Für beliebige Lage der Kameras sollte im
allgemeinen MethodMethodMethodMethodMethodmethod = 'gold_standard'"gold_standard""gold_standard""gold_standard""gold_standard""gold_standard" gewählt
werden.
Falls die Methode 'gold_standard'"gold_standard""gold_standard""gold_standard""gold_standard""gold_standard" bzw.
'trans_gold_standard'"trans_gold_standard""trans_gold_standard""trans_gold_standard""trans_gold_standard""trans_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" bzw. 'trans_gold_standard'"trans_gold_standard""trans_gold_standard""trans_gold_standard""trans_gold_standard""trans_gold_standard"
verwendet, so werden zur Berechnung intern
Einheits-Kovarianzmatrizen angenommen. Falls 'linear'"linear""linear""linear""linear""linear" bzw.
'trans_linear'"trans_linear""trans_linear""trans_linear""trans_linear""trans_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
Fundamental-Matrix und gibt den mittleren symmetrischen euklidischen
Abstand in Pixeln zwischen den Punkten und ihren korrespondierenden
Epipolarlinien an.
Sind die Korrespondenzen zwischen den Punkten noch nicht bekannt, so
ist match_fundamental_matrix_distortion_ransacmatch_fundamental_matrix_distortion_ransacMatchFundamentalMatrixDistortionRansacmatch_fundamental_matrix_distortion_ransacMatchFundamentalMatrixDistortionRansacMatchFundamentalMatrixDistortionRansac zur
Bestimmung der Korrespondenzen sowie der Stereo-Geometrie zu
verwenden.
- 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(Rows1) >= 9 || length(Rows1) >= 4
Eingabepunkte in Bild 1 (Spaltenkoordinate).
Restriktion: length(Cols1) == length(Rows1)
Eingabepunkte in Bild 2 (Zeilenkoordinate).
Restriktion: length(Rows2) == length(Rows1)
Eingabepunkte in Bild 2 (Spaltenkoordinate).
Restriktion: length(Cols2) == length(Rows1)
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", 'trans_gold_standard'"trans_gold_standard""trans_gold_standard""trans_gold_standard""trans_gold_standard""trans_gold_standard", 'trans_linear'"trans_linear""trans_linear""trans_linear""trans_linear""trans_linear"
Berechnete Fundamental-Matrix.
Berechneter Verzeichnungskoeffizient.
Mittlerer quadratischer Epipolarabstand.
XXXXXx (output_control) real-array → HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)
X-Koordinaten der rekonstruierten Punkte im projektiven
Raum.
YYYYYy (output_control) real-array → HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)
Y-Koordinaten der rekonstruierten Punkte im projektiven
Raum.
ZZZZZz (output_control) real-array → HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)
Z-Koordinaten der rekonstruierten Punkte im projektiven
Raum.
WWWWWw (output_control) real-array → HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)
W-Koordinaten der rekonstruierten Punkte im projektiven
Raum.
match_fundamental_matrix_distortion_ransacmatch_fundamental_matrix_distortion_ransacMatchFundamentalMatrixDistortionRansacmatch_fundamental_matrix_distortion_ransacMatchFundamentalMatrixDistortionRansacMatchFundamentalMatrixDistortionRansac
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,
gen_binocular_proj_rectificationgen_binocular_proj_rectificationGenBinocularProjRectificationgen_binocular_proj_rectificationGenBinocularProjRectificationGenBinocularProjRectification
vector_to_fundamental_matrixvector_to_fundamental_matrixVectorToFundamentalMatrixvector_to_fundamental_matrixVectorToFundamentalMatrixVectorToFundamentalMatrix,
vector_to_essential_matrixvector_to_essential_matrixVectorToEssentialMatrixvector_to_essential_matrixVectorToEssentialMatrixVectorToEssentialMatrix,
vector_to_rel_posevector_to_rel_poseVectorToRelPosevector_to_rel_poseVectorToRelPoseVectorToRelPose
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.
3D Metrology