Name
vector_to_poseT_vector_to_poseVectorToPosevector_to_poseVectorToPoseVectorToPose — Berechnen einer absoluten Pose aus Punktkorrespondenzen von Welt-
zu Bildkoordinaten.
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)
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 und zwar nur für MethodMethodMethodMethodMethodmethod = 'iterative'"iterative""iterative""iterative""iterative""iterative".
Es entspricht dem Mittelwert der Pixeldistanz, welche auch von
camera_calibrationcamera_calibrationCameraCalibrationcamera_calibrationCameraCalibrationCameraCalibration zurückgeliefert wird.
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
X-Koordinaten der Weltpunkte.
Parameteranzahl: WorldX >= 4
Y-Koordinaten der Weltpunkte.
Parameteranzahl: WorldY == WorldX
Z-Koordinaten der Weltpunkte.
Parameteranzahl: WorldZ == WorldX || WorldZ == 0
Zeilen-Koordinaten der Bildpunkte.
Parameteranzahl: ImageRow == WorldX
Spalten-Koordinaten der Bildpunkte.
Parameteranzahl: ImageColumn == WorldX
Die internen Kameraparameter aus der Kamerakalibrierung.
Parameteranzahl: CameraParam == 8 || CameraParam == 12
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"
Art des mit Quality zurückgegebenen Qualitätsmaßes.
Defaultwert:
'error'
"error"
"error"
"error"
"error"
"error"
Werteliste: 'error'"error""error""error""error""error"
Sind die Parameterwerte korrekt, dann liefert vector_to_posevector_to_poseVectorToPosevector_to_poseVectorToPoseVectorToPose
den Wert 2 (H_MSG_TRUE).
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
Calibration