reconstruct_points_stereoT_reconstruct_points_stereoReconstructPointsStereoReconstructPointsStereo (Operator)

Name

reconstruct_points_stereoT_reconstruct_points_stereoReconstructPointsStereoReconstructPointsStereo — 3D-Punktrekonstruktion mit kalibriertem Mehrbild-Stereoaufbau.

Signatur

reconstruct_points_stereo( : : StereoModelID, Row, Column, CovIP, CameraIdx, PointIdx : X, Y, Z, CovWP, PointIdxOut)

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)

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

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)

Beschreibung

Der Operator reconstruct_points_stereoreconstruct_points_stereoReconstructPointsStereoReconstructPointsStereoReconstructPointsStereo rekonstruiert 3D-Punkte von Punktkorrespondenzen, die in einem vom kalibrierten Kamerasetup aufgenommenen Bildarray extrahiert worden sind. Das kalibrierte Kamerasetup wird an das Stereomodell StereoModelIDStereoModelIDStereoModelIDStereoModelIDstereoModelID während seines Erstellens angehängt (siehe create_stereo_modelcreate_stereo_modelCreateStereoModelCreateStereoModelCreateStereoModel). Es ist zu beachten, dass das Stereomodell mit dem Typ 'points_3d'"points_3d""points_3d""points_3d""points_3d" erstellt werden muss, ansonsten gibt der Operator reconstruct_points_stereoreconstruct_points_stereoReconstructPointsStereoReconstructPointsStereoReconstructPointsStereo einen Fehler zurück.

Die Punktkorrespondenzen werden in den Parametern RowRowRowRowrow, ColumnColumnColumnColumncolumn, CameraIdxCameraIdxCameraIdxCameraIdxcameraIdx, and PointIdxPointIdxPointIdxPointIdxpointIdx in der Form vier gleich langer Tupel übergeben. Jede Menge (Row[I],Column[I],CameraIdx[I],PointIdx[I]) entspricht den Bildkoordinaten (RowRowRowRowrow, ColumnColumnColumnColumncolumn) eines 3D-Punktes (PointIdxPointIdxPointIdxPointIdxpointIdx) im Bild einer Kamera (CameraIdxCameraIdxCameraIdxCameraIdxcameraIdx).

Die rekonstruierten 3D-Punktkoordinaten werden in den drei gleich langen Ausgabetupeln XXXXx, YYYYy, and ZZZZz zurückgegeben. Die Koordinaten sind im Koordinatensystems des am Stereomodell angehängten Kamerasetups definiert (siehe create_camera_setup_modelcreate_camera_setup_modelCreateCameraSetupModelCreateCameraSetupModelCreateCameraSetupModel). Das Tupel PointIdxOutPointIdxOutPointIdxOutPointIdxOutpointIdxOut enthält die entsprechenden Punktindizes.

Der Rekonstruktionsalgorithmus funktioniert wie folgt: Erst werden die Punktkorrespondenzen eines 3D-Punkts gesucht, indem alle Eingabemengen mit demselben PointIdxPointIdxPointIdxPointIdxpointIdx aufgesammelt werden. Danach werden die Informationen RowRowRowRowrow, ColumnColumnColumnColumncolumn, und CameraIdxCameraIdxCameraIdxCameraIdxcameraIdx 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 PointIdxPointIdxPointIdxPointIdxpointIdx 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_foerstnerPointsFoerstnerPointsFoerstnerPointsFoerstner) verfügbar sein und in dem Parameter CovIPCovIPCovIPCovIPcovIP ü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 CovIPCovIPCovIPCovIPcovIP ü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 CovIPCovIPCovIPCovIPcovIP 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 CovWPCovWPCovWPCovWPcovWP 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 CovWPCovWPCovWPCovWPcovWP auch miteinbezogen werden.

Wenn im Stereomodell ein gültiger kleinster umschließender Quader definiert ist (siehe set_stereo_model_paramset_stereo_model_paramSetStereoModelParamSetStereoModelParamSetStereoModelParam), 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.

Ausführungsinformationen

Parameter

StereoModelIDStereoModelIDStereoModelIDStereoModelIDstereoModelID (input_control)  stereo_model HStereoModel, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des Stereomodells.

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

Zeilenkoordinaten der extrahierten Bildmerkmale.

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

Spaltenkoordinaten der extrahierten Bildmerkmale.

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

Kovarianzmatrizen der extrahierten Bildmerkmale.

Defaultwert: []

CameraIdxCameraIdxCameraIdxCameraIdxcameraIdx (input_control)  number HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Kameraindizes der Kameras, in welchen die Bildmerkmale extrahiert worden sind.

Wertevorschläge: 0, 1, 2

PointIdxPointIdxPointIdxPointIdxpointIdx (input_control)  number HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Zuordnung der extrahierten Bildmerkmale zu den beobachteten 3D-Punkten.

Wertevorschläge: 0, 1, 2

XXXXx (output_control)  real(-array) HTupleHTupleHtuple (real) (double) (double) (double)

X-Koordinaten der rekonstruierten 3D-Punkte.

YYYYy (output_control)  number(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Y-Koordinaten der rekonstruierten 3D-Punkte.

ZZZZz (output_control)  number(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Z-Koordinaten der rekonstruierten 3D-Punkte.

CovWPCovWPCovWPCovWPcovWP (output_control)  number(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Kovarianzmatrizen der rekonstruierten 3D-Punkte.

PointIdxOutPointIdxOutPointIdxOutPointIdxOutpointIdxOut (output_control)  number(-array) HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Indizes der rekonstruierten 3D-Punkte.

Alternativen

reconstruct_surface_stereoreconstruct_surface_stereoReconstructSurfaceStereoReconstructSurfaceStereoReconstructSurfaceStereo, intersect_lines_of_sightintersect_lines_of_sightIntersectLinesOfSightIntersectLinesOfSightIntersectLinesOfSight

Modul

3D Metrology