hom_mat3d_to_poseT_hom_mat3d_to_poseHomMat3dToPoseHomMat3dToPose (Operator)
Name
hom_mat3d_to_poseT_hom_mat3d_to_poseHomMat3dToPoseHomMat3dToPose
— Konvertieren einer homogenen Transformationsmatrix in eine
3D-Lage (Pose).
Signatur
Herror T_hom_mat3d_to_pose(const Htuple HomMat3D, Htuple* Pose)
Beschreibung
hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPoseHomMat3dToPose
konvertiert eine homogene
Transformationsmatrix HomMat3DHomMat3DHomMat3DHomMat3DhomMat3D
in eine 3D-Lage PosePosePosePosepose
mit
Typ-Code 0. Details zu 3D-Lagen und den zugehörigen
Transformationsmatrizen findet sich bei create_posecreate_poseCreatePoseCreatePoseCreatePose
.
Ein typischer Anwendungsfall von hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPoseHomMat3dToPose
ist, dass eine
3D-Lage zuvor mit pose_to_hom_mat3dpose_to_hom_mat3dPoseToHomMat3dPoseToHomMat3dPoseToHomMat3d
in eine homogene Transformationsmatrix
konvertiert wurde, um sie z.B. mit hom_mat3d_rotatehom_mat3d_rotateHomMat3dRotateHomMat3dRotateHomMat3dRotate
oder
hom_mat3d_translatehom_mat3d_translateHomMat3dTranslateHomMat3dTranslateHomMat3dTranslate
weiter zu transformieren, und dann wieder zurück
in ein 3D-Lage konvertiert werden soll, um die als Eingabe für Operatoren wie
image_points_to_world_planeimage_points_to_world_planeImagePointsToWorldPlaneImagePointsToWorldPlaneImagePointsToWorldPlane
zu nutzen.
Achtung
hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPoseHomMat3dToPose
unterstützt nur rigide Transformationen in
HomMat3DHomMat3DHomMat3DHomMat3DhomMat3D
.
Ausführungsinformationen
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Wird ohne Parallelisierung verarbeitet.
Parameter
HomMat3DHomMat3DHomMat3DHomMat3DhomMat3D
(input_control) hom_mat3d →
HHomMat3D, HTupleHTupleHtuple (real) (double) (double) (double)
Homogene Transformationsmatrix.
PosePosePosePosepose
(output_control) pose →
HPose, HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)
äquivalente 3D-Lage (Pose).
Parameteranzahl: 7
Beispiel (HDevelop)
* Calibrate camera.
calibrate_cameras (CalibDataID,Error)
* Get reference pose (pose 2 of calibration object 0).
get_calib_data (CalibDataID, 'calib_obj_pose',\
[0,2], 'pose', ObjInCameraPose)
* Convert pose to homogeneous transformation matrix.
pose_to_hom_mat3d(ObjInCameraPose, cam_H_cal)
* Rotate it 90 degrees around its y-axis to obtain a world coordinate system
* whose y- and z-axis lie in the plane of the calibration plate while the
* x-axis point 'upwards': cam_H_w = cam_H_cal * RotY(90).
hom_mat3d_identity(HomMat3DIdent)
hom_mat3d_rotate(HomMat3DIdent, rad(90), 'y', 0, 0, 0, \
HomMat3DRotateY)
hom_mat3d_compose(cam_H_cal, HomMat3DRotateY, cam_H_w)
* Convert transformed matrix back to pose.
hom_mat3d_to_pose (cam_H_w, Pose)
Ergebnis
Sind die Parameterwerte korrekt, dann liefert hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPoseHomMat3dToPose
den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
Vorgänger
hom_mat3d_rotatehom_mat3d_rotateHomMat3dRotateHomMat3dRotateHomMat3dRotate
,
hom_mat3d_translatehom_mat3d_translateHomMat3dTranslateHomMat3dTranslateHomMat3dTranslate
,
hom_mat3d_inverthom_mat3d_invertHomMat3dInvertHomMat3dInvertHomMat3dInvert
Nachfolger
camera_calibrationcamera_calibrationCameraCalibrationCameraCalibrationCameraCalibration
,
write_posewrite_poseWritePoseWritePoseWritePose
,
disp_caltabdisp_caltabDispCaltabDispCaltabDispCaltab
,
sim_caltabsim_caltabSimCaltabSimCaltabSimCaltab
Siehe auch
create_posecreate_poseCreatePoseCreatePoseCreatePose
,
camera_calibrationcamera_calibrationCameraCalibrationCameraCalibrationCameraCalibration
,
disp_caltabdisp_caltabDispCaltabDispCaltabDispCaltab
,
sim_caltabsim_caltabSimCaltabSimCaltabSimCaltab
,
write_posewrite_poseWritePoseWritePoseWritePose
,
read_poseread_poseReadPoseReadPoseReadPose
,
pose_to_hom_mat3dpose_to_hom_mat3dPoseToHomMat3dPoseToHomMat3dPoseToHomMat3d
,
project_3d_pointproject_3d_pointProject3dPointProject3dPointProject3dPoint
,
get_line_of_sightget_line_of_sightGetLineOfSightGetLineOfSightGetLineOfSight
,
hom_mat3d_rotatehom_mat3d_rotateHomMat3dRotateHomMat3dRotateHomMat3dRotate
,
hom_mat3d_translatehom_mat3d_translateHomMat3dTranslateHomMat3dTranslateHomMat3dTranslate
,
hom_mat3d_inverthom_mat3d_invertHomMat3dInvertHomMat3dInvertHomMat3dInvert
,
affine_trans_point_3daffine_trans_point_3dAffineTransPoint3dAffineTransPoint3dAffineTransPoint3d
Modul
Foundation