ClassesClassesClassesClasses | | | | Operators

vector_to_poseT_vector_to_poseVectorToPosevector_to_poseVectorToPoseVectorToPose (Operator)

Name

vector_to_poseT_vector_to_poseVectorToPosevector_to_poseVectorToPoseVectorToPose — Compute an absolute pose out of point correspondences between world and image coordinates.

Signature

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)

Description

The operator vector_to_posevector_to_poseVectorToPosevector_to_poseVectorToPoseVectorToPose computes a pose out of at least four point correspondences of 3D world coordinates [m] (WorldXWorldXWorldXWorldXWorldXworldX, WorldYWorldYWorldYWorldYWorldYworldY, WorldZWorldZWorldZWorldZWorldZworldZ) and 2D image coordinates (ImageRowImageRowImageRowImageRowImageRowimageRow, ImageColumnImageColumnImageColumnImageColumnImageColumnimageColumn). At first, the radial distortion of all image points is removed. By setting the parameter MethodMethodMethodMethodMethodmethod it is possible, to choose what kind of algorithm is used for the following pose computation. Currently an 'analytic'"analytic""analytic""analytic""analytic""analytic", as well as an 'iterative'"iterative""iterative""iterative""iterative""iterative" method are supported. Furthermore, if world points are planar (WorldZWorldZWorldZWorldZWorldZworldZ = 0) it is also possible to choose 'planar_analytic'"planar_analytic""planar_analytic""planar_analytic""planar_analytic""planar_analytic". The z-component of world coordinates can be left empty (WorldZWorldZWorldZWorldZWorldZworldZ = []) as only 2D correspondences are used in that case.

In general, the analytic method (MethodMethodMethodMethodMethodmethod = 'analytic'"analytic""analytic""analytic""analytic""analytic") returns the most robust results. Only, if just four points are used or if the world points are close to planar, the iterative method (MethodMethodMethodMethodMethodmethod = 'iterative'"iterative""iterative""iterative""iterative""iterative") is slightly more robust. For world points that lie in a plane, the method 'planar_analytic'"planar_analytic""planar_analytic""planar_analytic""planar_analytic""planar_analytic" should be used.

The results of all algorithms are at last internally refined by the method used in camera_calibrationcamera_calibrationCameraCalibrationcamera_calibrationCameraCalibrationCameraCalibration, which minimizes geometric errors due to redundance. All methods need the inner camera parameters obtained from camera_calibrationcamera_calibrationCameraCalibrationcamera_calibrationCameraCalibrationCameraCalibration to solve the pose estimation problem. They have to be passed in CameraParamCameraParamCameraParamCameraParamCameraParamcameraParam.

The user can specify in QualityTypeQualityTypeQualityTypeQualityTypeQualityTypequalityType one or more quality measures of the pose to be evaluated. The resulting quality evaluations are returned concatenated in QualityQualityQualityQualityQualityquality. Currently, only 'error'"error""error""error""error""error" is supported and it is evaluated only for MethodMethodMethodMethodMethodmethod = 'iterative'"iterative""iterative""iterative""iterative""iterative". It corresponds to the average error distances in pixels, which is returned by camera_calibrationcamera_calibrationCameraCalibrationcamera_calibrationCameraCalibrationCameraCalibration.

Parallelization

Parameters

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

X-Component of world coordinates.

Number of elements: WorldX >= 4

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

Y-Component of world coordinates.

Number of elements: WorldY == WorldX

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

Z-Component of world coordinates.

Number of elements: WorldZ == WorldX || WorldZ == 0

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

Row-Component of image coordinates.

Number of elements: ImageRow == WorldX

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

Column-Component of image coordinates.

Number of elements: ImageColumn == WorldX

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

The inner camera parameters from camera calibration.

Number of elements: CameraParam == 8 || CameraParam == 12

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

Kind of algorithm

Default value: 'iterative' "iterative" "iterative" "iterative" "iterative" "iterative"

List of values: '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*)

Type of pose quality to be returned in Quality.

Default value: 'error' "error" "error" "error" "error" "error"

List of values: '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)

Pose quality.

Result

vector_to_posevector_to_poseVectorToPosevector_to_poseVectorToPoseVectorToPose returns 2 (H_MSG_TRUE) if all parameter values are correct.

See also

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

Module

Calibration


ClassesClassesClassesClasses | | | | Operators