KlassenKlassenKlassenKlassen | | | | Operatoren

vector_to_poseT_vector_to_poseVectorToPosevector_to_poseVectorToPoseVectorToPose (Operator)

Name

vector_to_poseT_vector_to_poseVectorToPosevector_to_poseVectorToPoseVectorToPose — Berechnen einer absoluten Pose aus Punktkorrespondenzen von Welt- zu Bildkoordinaten.

Signatur

vector_to_pose( : : WorldX, WorldY, WorldZ, ImageRow, ImageColumn, CameraParam, Method, QualityType : Pose, Quality)

Herror T_vector_to_pose(const Htuple WorldX, const Htuple WorldY, const Htuple WorldZ, const Htuple ImageRow, const Htuple ImageColumn, const Htuple CameraParam, const Htuple Method, const Htuple QualityType, Htuple* Pose, Htuple* Quality)

Herror vector_to_pose(const HTuple& WorldX, const HTuple& WorldY, const HTuple& WorldZ, const HTuple& ImageRow, const HTuple& ImageColumn, const HTuple& CameraParam, const HTuple& Method, const HTuple& QualityType, HTuple* Pose, HTuple* Quality)

void VectorToPose(const HTuple& WorldX, const HTuple& WorldY, const HTuple& WorldZ, const HTuple& ImageRow, const HTuple& ImageColumn, const HTuple& CameraParam, const HTuple& Method, const HTuple& QualityType, HTuple* Pose, HTuple* Quality)

static HPose HImage::VectorToPose(const HTuple& WorldX, const HTuple& WorldY, const HTuple& WorldZ, const HTuple& ImageRow, const HTuple& ImageColumn, const HTuple& CameraParam, const HString& Method, const HTuple& QualityType, HTuple* Quality)

static HPose HImage::VectorToPose(const HTuple& WorldX, const HTuple& WorldY, const HTuple& WorldZ, const HTuple& ImageRow, const HTuple& ImageColumn, const HTuple& CameraParam, const HString& Method, const HString& QualityType, double* Quality)

static HPose HImage::VectorToPose(const HTuple& WorldX, const HTuple& WorldY, const HTuple& WorldZ, const HTuple& ImageRow, const HTuple& ImageColumn, const HTuple& CameraParam, const char* Method, const char* QualityType, double* Quality)

void HOperatorSetX.VectorToPose(
[in] VARIANT WorldX, [in] VARIANT WorldY, [in] VARIANT WorldZ, [in] VARIANT ImageRow, [in] VARIANT ImageColumn, [in] VARIANT CameraParam, [in] VARIANT Method, [in] VARIANT QualityType, [out] VARIANT* Pose, [out] VARIANT* Quality)

VARIANT HImageX.VectorToPose(
[in] VARIANT WorldX, [in] VARIANT WorldY, [in] VARIANT WorldZ, [in] VARIANT ImageRow, [in] VARIANT ImageColumn, [in] VARIANT CameraParam, [in] BSTR Method, [in] VARIANT QualityType, [out] VARIANT* Quality)

static void HOperatorSet.VectorToPose(HTuple worldX, HTuple worldY, HTuple worldZ, HTuple imageRow, HTuple imageColumn, HTuple cameraParam, HTuple method, HTuple qualityType, out HTuple pose, out HTuple quality)

static HPose HImage.VectorToPose(HTuple worldX, HTuple worldY, HTuple worldZ, HTuple imageRow, HTuple imageColumn, HTuple cameraParam, string method, HTuple qualityType, out HTuple quality)

static HPose HImage.VectorToPose(HTuple worldX, HTuple worldY, HTuple worldZ, HTuple imageRow, HTuple imageColumn, HTuple cameraParam, string method, string qualityType, out double quality)

Beschreibung

Der Operator vector_to_posevector_to_poseVectorToPosevector_to_poseVectorToPoseVectorToPose berechnet eine Pose aus mindestens vier Punktkorrespondenzen von 3D-Weltkoordinaten [m] (WorldXWorldXWorldXWorldXWorldXworldX, WorldYWorldYWorldYWorldYWorldYworldY, WorldZWorldZWorldZWorldZWorldZworldZ) und 2D-Bildkoordinaten (ImageRowImageRowImageRowImageRowImageRowimageRow, ImageColumnImageColumnImageColumnImageColumnImageColumnimageColumn). Dazu wird bei allen Bildkoordinaten zunächst deren radiale Verzeichnung entfernt. Je nach Wahl des Parameters MethodMethodMethodMethodMethodmethod kann gewählt werden, welcher Algorithmus anschließend für die Berechnung der Pose verwendet werden soll. Im Augenblick werden eine analytische ('analytic'"analytic""analytic""analytic""analytic""analytic") sowie eine iterative ('iterative'"iterative""iterative""iterative""iterative""iterative") Lösung des Problems unterstützt. Im Fall eines planaren Objekts (WorldZWorldZWorldZWorldZWorldZworldZ = 0) kann außerdem die Methode 'planar_analytic'"planar_analytic""planar_analytic""planar_analytic""planar_analytic""planar_analytic" gewählt werden. Die z-Komponente der Weltpunkte muss dann nicht gesetzt (WorldZWorldZWorldZWorldZWorldZworldZ = []) werden, da nur 2D-Korrespondenzen verwendet werden.

Im allgemeinen liefert die analytische Methode (MethodMethodMethodMethodMethodmethod = 'analytic'"analytic""analytic""analytic""analytic""analytic") die robustesten Ergebnisse. Lediglich wenn nur vier Punkte verwendet werden oder wenn die Weltpunkte näherungsweise in einer Ebene liegen, liefert die iterative Methode (MethodMethodMethodMethodMethodmethod = 'iterative'"iterative""iterative""iterative""iterative""iterative") geringfügig robustere Ergebnisse. Für Weltpunkte, die exakt in einer Ebene liegen, ist die Methode 'planar_analytic'"planar_analytic""planar_analytic""planar_analytic""planar_analytic""planar_analytic" zu verwenden.

Die Ergebnisse aller Algorithmen werden intern durch die in camera_calibrationcamera_calibrationCameraCalibrationcamera_calibrationCameraCalibrationCameraCalibration verwendete Methodik verbessert, bei der der geometrische Fehler der Überbestimmung minimiert wird. Zur Lösung des Problems benötigen alle Algorithmen die internen Kameraparameter aus der Kamerakalibrierung, die in CameraParamCameraParamCameraParamCameraParamCameraParamcameraParam übergeben werden.

Zusätzlich kann der Benutzer durch QualityTypeQualityTypeQualityTypeQualityTypeQualityTypequalityType eine oder mehrere Qualitätsmaß-Bewertungen der Pose bestimmen, die mitberechnet werden. Die resultierenden Qualitätsmaße werden in QualityQualityQualityQualityQualityquality aneinandergehängt zurückgeliefert. Derzeit wird nur 'error'"error""error""error""error""error" unterstützt. Es entspricht dem Mittelwert der Pixeldistanz, welche auch von camera_calibrationcamera_calibrationCameraCalibrationcamera_calibrationCameraCalibrationCameraCalibration zurückgeliefert wird.

Parallelisierung

Parameter

WorldXWorldXWorldXWorldXWorldXworldX (input_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

X-Koordinaten der Weltpunkte.

Parameteranzahl: WorldX >= 4

WorldYWorldYWorldYWorldYWorldYworldY (input_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Y-Koordinaten der Weltpunkte.

Parameteranzahl: WorldY == WorldX

WorldZWorldZWorldZWorldZWorldZworldZ (input_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Z-Koordinaten der Weltpunkte.

Parameteranzahl: WorldZ == WorldX || WorldZ == 0

ImageRowImageRowImageRowImageRowImageRowimageRow (input_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Zeilen-Koordinaten der Bildpunkte.

Parameteranzahl: ImageRow == WorldX

ImageColumnImageColumnImageColumnImageColumnImageColumnimageColumn (input_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Spalten-Koordinaten der Bildpunkte.

Parameteranzahl: ImageColumn == WorldX

CameraParamCameraParamCameraParamCameraParamCameraParamcameraParam (input_control)  number-array HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Die internen Kameraparameter aus der Kamerakalibrierung.

Parameteranzahl: CameraParam == 8 || CameraParam == 10 || CameraParam == 12 || CameraParam == 14

MethodMethodMethodMethodMethodmethod (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Art des Algorithmus

Defaultwert: 'iterative' "iterative" "iterative" "iterative" "iterative" "iterative"

Werteliste: 'analytic'"analytic""analytic""analytic""analytic""analytic", 'iterative'"iterative""iterative""iterative""iterative""iterative", 'planar_analytic'"planar_analytic""planar_analytic""planar_analytic""planar_analytic""planar_analytic"

QualityTypeQualityTypeQualityTypeQualityTypeQualityTypequalityType (input_control)  string(-array) HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Art des mit Quality zurückgegebenen Qualitätsmaßes.

Defaultwert: 'error' "error" "error" "error" "error" "error"

Werteliste: 'error'"error""error""error""error""error"

PosePosePosePosePosepose (output_control)  pose HPose, HTupleHTupleHTupleHPoseX, VARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Pose.

QualityQualityQualityQualityQualityquality (output_control)  number(-array) HTupleHTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

Posequalitätsmaß.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert vector_to_posevector_to_poseVectorToPosevector_to_poseVectorToPoseVectorToPose den Wert 2 (H_MSG_TRUE).

Siehe auch

proj_hom_mat2d_to_poseproj_hom_mat2d_to_poseProjHomMat2dToPoseproj_hom_mat2d_to_poseProjHomMat2dToPoseProjHomMat2dToPose, vector_to_rel_posevector_to_rel_poseVectorToRelPosevector_to_rel_poseVectorToRelPoseVectorToRelPose, camera_calibrationcamera_calibrationCameraCalibrationcamera_calibrationCameraCalibrationCameraCalibration

Modul

Calibration


KlassenKlassenKlassenKlassen | | | | Operatoren