Name
reconstruct_points_stereoT_reconstruct_points_stereoReconstructPointsStereoreconstruct_points_stereoReconstructPointsStereoReconstructPointsStereo — 3D-Punktrekonstruktion mit kalibriertem Mehrbild-Stereoaufbau.
Herror T_reconstruct_points_stereo(const Htuple StereoModelID, const Htuple Row, const Htuple Column, const Htuple CovIP, const Htuple CameraIdx, const Htuple PointIdx, Htuple* X, Htuple* Y, Htuple* Z, Htuple* CovWP, Htuple* PointIdxOut)
Herror reconstruct_points_stereo(const HTuple& StereoModelID, const HTuple& Row, const HTuple& Column, const HTuple& CovIP, const HTuple& CameraIdx, const HTuple& PointIdx, double* X, double* Y, double* Z, double* CovWP, Hlong* PointIdxOut)
Herror reconstruct_points_stereo(const HTuple& StereoModelID, const HTuple& Row, const HTuple& Column, const HTuple& CovIP, const HTuple& CameraIdx, const HTuple& PointIdx, HTuple* X, HTuple* Y, HTuple* Z, HTuple* CovWP, HTuple* PointIdxOut)
HTuple HStereoModel::ReconstructPointsStereo(const HTuple& Row, const HTuple& Column, const HTuple& CovIP, const HTuple& CameraIdx, const HTuple& PointIdx, HTuple* Y, HTuple* Z, HTuple* CovWP, HTuple* PointIdxOut) const
void ReconstructPointsStereo(const HTuple& StereoModelID, const HTuple& Row, const HTuple& Column, const HTuple& CovIP, const HTuple& CameraIdx, const HTuple& PointIdx, HTuple* X, HTuple* Y, HTuple* Z, HTuple* CovWP, HTuple* PointIdxOut)
void HStereoModel::ReconstructPointsStereo(const HTuple& Row, const HTuple& Column, const HTuple& CovIP, Hlong CameraIdx, Hlong PointIdx, HTuple* X, HTuple* Y, HTuple* Z, HTuple* CovWP, HTuple* PointIdxOut) const
void HStereoModel::ReconstructPointsStereo(double Row, double Column, const HTuple& CovIP, Hlong CameraIdx, Hlong PointIdx, double* X, double* Y, double* Z, double* CovWP, Hlong* PointIdxOut) const
void HOperatorSetX.ReconstructPointsStereo(
[in] VARIANT StereoModelID, [in] VARIANT Row, [in] VARIANT Column, [in] VARIANT CovIP, [in] VARIANT CameraIdx, [in] VARIANT PointIdx, [out] VARIANT* X, [out] VARIANT* Y, [out] VARIANT* Z, [out] VARIANT* CovWP, [out] VARIANT* PointIdxOut)
VARIANT HStereoModelX.ReconstructPointsStereo(
[in] VARIANT Row, [in] VARIANT Column, [in] VARIANT CovIP, [in] Hlong CameraIdx, [in] Hlong PointIdx, [out] VARIANT* Y, [out] VARIANT* Z, [out] VARIANT* CovWP, [out] VARIANT* PointIdxOut)
static void HOperatorSet.ReconstructPointsStereo(HTuple stereoModelID, HTuple row, HTuple column, HTuple covIP, HTuple cameraIdx, HTuple pointIdx, out HTuple x, out HTuple y, out HTuple z, out HTuple covWP, out HTuple pointIdxOut)
void HStereoModel.ReconstructPointsStereo(HTuple row, HTuple column, HTuple covIP, int cameraIdx, int pointIdx, out HTuple x, out HTuple y, out HTuple z, out HTuple covWP, out HTuple pointIdxOut)
void HStereoModel.ReconstructPointsStereo(double row, double column, HTuple covIP, int cameraIdx, int pointIdx, out double x, out double y, out double z, out double covWP, out int pointIdxOut)
Der Operator reconstruct_points_stereoreconstruct_points_stereoReconstructPointsStereoreconstruct_points_stereoReconstructPointsStereoReconstructPointsStereo rekonstruiert 3D-Punkte
von Punktkorrespondenzen, die in einem vom kalibrierten Kamerasetup
aufgenommenen Bildarray extrahiert worden sind. Das kalibrierte
Kamerasetup wird an das Stereomodell StereoModelIDStereoModelIDStereoModelIDStereoModelIDStereoModelIDstereoModelID während
seines Erstellens angehängt (siehe create_stereo_modelcreate_stereo_modelCreateStereoModelcreate_stereo_modelCreateStereoModelCreateStereoModel).
Es ist zu beachten, dass das Stereomodell mit dem Typ
'points_3d'"points_3d""points_3d""points_3d""points_3d""points_3d" erstellt werden muss, ansonsten gibt der Operator
reconstruct_points_stereoreconstruct_points_stereoReconstructPointsStereoreconstruct_points_stereoReconstructPointsStereoReconstructPointsStereo einen Fehler zurück.
Die Punktkorrespondenzen werden in den Parametern RowRowRowRowRowrow,
ColumnColumnColumnColumnColumncolumn, CameraIdxCameraIdxCameraIdxCameraIdxCameraIdxcameraIdx, and PointIdxPointIdxPointIdxPointIdxPointIdxpointIdx in der Form
vier gleich langer Tupel übergeben. Jede Menge
(Row[I],Column[I],CameraIdx[I],PointIdx[I]) entspricht den
Bildkoordinaten (RowRowRowRowRowrow, ColumnColumnColumnColumnColumncolumn) eines 3D-Punktes
(PointIdxPointIdxPointIdxPointIdxPointIdxpointIdx) im Bild einer Kamera (CameraIdxCameraIdxCameraIdxCameraIdxCameraIdxcameraIdx).
Die rekonstruierten 3D-Punktkoordinaten werden in den drei gleich langen
Ausgabetupeln XXXXXx, YYYYYy, and ZZZZZz zurückgegeben.
Die Koordinaten sind im Koordinatensystems des am Stereomodell
angehängten Kamerasetups definiert (siehe create_camera_setup_modelcreate_camera_setup_modelCreateCameraSetupModelcreate_camera_setup_modelCreateCameraSetupModelCreateCameraSetupModel).
Das Tupel PointIdxOutPointIdxOutPointIdxOutPointIdxOutPointIdxOutpointIdxOut enthält die entsprechenden Punktindizes.
Der Rekonstruktionsalgorithmus funktioniert wie folgt: Erst werden
die Punktkorrespondenzen eines 3D-Punkts gesucht, indem alle
Eingabemengen mit demselben PointIdxPointIdxPointIdxPointIdxPointIdxpointIdx aufgesammelt werden.
Danach werden die Informationen RowRowRowRowRowrow, ColumnColumnColumnColumnColumncolumn, und
CameraIdxCameraIdxCameraIdxCameraIdxCameraIdxcameraIdx von den angesammelten Mengen benutzt, um Sichtlinien
von der jeweiligen Kamera durch den entsprechenden Bildpunkt
[Row,Column] zu projizieren. Wenn 2 oder mehr Sichtlinien für
einen Punkt PointIdxPointIdxPointIdxPointIdxPointIdxpointIdx gefunden werden, werden diese alle in der Welt
geschnitten und der Schnittpunkt als Ausgabemenge
(X[J],Y[J],Z[J],PointIdxOut[J]) gespeichert. Der Schnittpunkt wird
durch die Methode der kleinsten Quadrate berechnet, ohne potenzielle
falsche Sichtlinien zu suchen und sie zu unterdrücken (z.B. wenn
ein Bildpunkt fälschlicherweise einem 3D-Punkt zugeordnet wird).
Zur Berechnung der Kovarianzmatrizen der rekonstruierten 3D-Punkte
müssen statistische Informationen über die extrahierten Bildkoordinaten
(d.h. Kovarianzmatrizen der Bildpunkte;
siehe z.B. points_foerstnerpoints_foerstnerPointsFoerstnerpoints_foerstnerPointsFoerstnerPointsFoerstner) verfügbar sein und in dem
Parameter CovIPCovIPCovIPCovIPCovIPcovIP übergeben werden. Falls jedoch keine
Kovarianzmatrizen für die rekonstruierten 3D-Punkte benötigt werden
oder keine Kovarianzmatrizen für die Bildpunkte verfügbar sind, kann
ein leeres Tupel an CovIPCovIPCovIPCovIPCovIPcovIP übergeben werden. Somit wird dann keine
Kovarianzmatrix für die 3D Punkte berechnet.
Die Kovarianzmatrix eines Bildpunktes ist:
Die Kovarianzmatrizen sind symmetrische 2x2 Matrizen, bei denen
die Einträge der Hauptdiagonalen die Varianz der Bildpunkte in
Zeilenrichtung bzw. Spaltenrichtung repräsentieren.
Für jeden Bildpunkt muss im Parameter CovIPCovIPCovIPCovIPCovIPcovIP eine Kovarianzmatrix
in Form eines Tupels mit 4 Elementen übergeben werden:
Somit ist |CovIP|=4*|Row| und CovIP[I*4:I*4+3] sind die 4
Kovarianzmatrixwerte des I. Bildpunktes.
Die berechnete Kovarianzmatrix für einen erfolgreich rekonstruierten 3D-Punkt
ist durch eine symmetrische 3x3 Matrix definiert:
Die Einträge der Hauptdiagonalen repräsentieren die Varianzen der
rekonstruierten 3D-Punkte in Richtung der x-, y- und z-Achse.
Die berechneten Matrizen werden im Parameter CovWPCovWPCovWPCovWPCovWPcovWP in Form
von Tupeln, bestehend aus 9 Elementen, zurückgegeben:
Somit ist |CovWP|=9*|X| und CovWP[J*9:J*9+8] sind die 9
Kovarianzmatrixwerte des J. 3D-Punktes. Es ist zu beachten,
dass, wenn der an dem Stereomodell angehängte Kamerasetup Kovarianzmatrizen
für die internen Kameraparameter enthält, diese in der Berechnung
der CovWPCovWPCovWPCovWPCovWPcovWP auch miteinbezogen werden.
Wenn im Stereomodell ein gültiger kleinster umschließender Quader definiert
ist (siehe set_stereo_model_paramset_stereo_model_paramSetStereoModelParamset_stereo_model_paramSetStereoModelParamSetStereoModelParam), werden Ausgabe-3D-Punkte
außerhalb des Quaders ausgeschnitten. Ist der Quader ungültig, wird er
nicht berücksichtigt und alle Punkten zurückgegeben, die gefunden
werden könnten.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Handle des Stereomodells.
RowRowRowRowRowrow (input_control) number(-array) → HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)
Zeilenkoordinaten der extrahierten Bildmerkmale.
Spaltenkoordinaten der extrahierten Bildmerkmale.
Kovarianzmatizen der extrahierten Bildmerkmale.
Defaultwert: []
Kameraindizes der Kameras, in welchen
die Bildmerkmale extrahiert worden sind.
Wertevorschläge: 0, 1, 2
Zuordnung der extrahierten Bildmerkmale zu den
beobachteten 3D-Punkten.
Wertevorschläge: 0, 1, 2
XXXXXx (output_control) real(-array) → HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)
X-Koordinaten der rekonstruierten 3D-Punkte.
YYYYYy (output_control) number(-array) → HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)
Y-Koordinaten der rekonstruierten 3D-Punkte.
ZZZZZz (output_control) number(-array) → HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)
Z-Koordinaten der rekonstruierten 3D-Punkte.
Kovarianzmatrizen der rekonstruierten 3D-Punkte.
Indizes der rekonstruierten 3D-Punkte.
reconstruct_surface_stereoreconstruct_surface_stereoReconstructSurfaceStereoreconstruct_surface_stereoReconstructSurfaceStereoReconstructSurfaceStereo,
intersect_lines_of_sightintersect_lines_of_sightIntersectLinesOfSightintersect_lines_of_sightIntersectLinesOfSightIntersectLinesOfSight
3D Metrology