HALCON Reference Manual 10.0.2
Table of Contents / Calibration / Rectification ClassesClassesClasses | | | Operators

contour_to_world_plane_xldT_contour_to_world_plane_xldcontour_to_world_plane_xldContourToWorldPlaneXldContourToWorldPlaneXld (Operator)

Name

contour_to_world_plane_xldT_contour_to_world_plane_xldcontour_to_world_plane_xldContourToWorldPlaneXldContourToWorldPlaneXld — Transform an XLD contour into the plane z=0 of a world coordinate system.

Signature

contour_to_world_plane_xld(Contours : ContoursTrans : CameraParam, WorldPose, Scale : )

Herror T_contour_to_world_plane_xld(const Hobject Contours, Hobject* ContoursTrans, const Htuple CameraParam, const Htuple WorldPose, const Htuple Scale)

Herror contour_to_world_plane_xld(Hobject Contours, Hobject* ContoursTrans, const HTuple& CameraParam, const HTuple& WorldPose, const HTuple& Scale)

HXLDCont HXLDCont::ContourToWorldPlaneXld(const HTuple& CameraParam, const HTuple& WorldPose, const HTuple& Scale) const

HXLDContArray HXLDContArray::ContourToWorldPlaneXld(const HTuple& CameraParam, const HTuple& WorldPose, const HTuple& Scale) const

void HOperatorSetX.ContourToWorldPlaneXld(
[in] IHUntypedObjectX* Contours, [out] IHUntypedObjectX*ContoursTrans, [in] VARIANT CameraParam, [in] VARIANT WorldPose, [in] VARIANT Scale)

IHXLDContX* HPoseX.ContourToWorldPlaneXld(
[in] IHXLDContX* Contours, [in] VARIANT CameraParam, [in] VARIANT WorldPose, [in] VARIANT Scale)

IHXLDContX* HXLDContX.ContourToWorldPlaneXld(
[in] VARIANT CameraParam, [in] VARIANT WorldPose, [in] VARIANT Scale)

static void HOperatorSet.ContourToWorldPlaneXld(HObject contours, out HObject contoursTrans, HTuple cameraParam, HTuple worldPose, HTuple scale)

HXLDCont HPose.ContourToWorldPlaneXld(HXLDCont contours, HTuple cameraParam, HTuple scale)

HXLDCont HPose.ContourToWorldPlaneXld(HXLDCont contours, HTuple cameraParam, string scale)

HXLDCont HXLDCont.ContourToWorldPlaneXld(HTuple cameraParam, HPose worldPose, HTuple scale)

HXLDCont HXLDCont.ContourToWorldPlaneXld(HTuple cameraParam, HPose worldPose, string scale)

Description

The operator contour_to_world_plane_xldcontour_to_world_plane_xldcontour_to_world_plane_xldContourToWorldPlaneXldContourToWorldPlaneXld transforms contour points given in ContoursContoursContoursContourscontours into the plane z=0 in a world coordinate system and returns the 3D contour points in ContoursTransContoursTransContoursTransContoursTranscontoursTrans. The world coordinate system is chosen by passing its 3D pose relative to the camera coordinate system in WorldPoseWorldPoseWorldPoseWorldPoseworldPose. In CameraParamCameraParamCameraParamCameraParamcameraParam you must pass the internal camera parameters (see write_cam_parwrite_cam_parwrite_cam_parWriteCamParWriteCamPar for the sequence of the parameters and the underlying camera model).

In many cases CameraParamCameraParamCameraParamCameraParamcameraParam and WorldPoseWorldPoseWorldPoseWorldPoseworldPose are the result of calibrating the camera with the operator calibrate_camerascalibrate_camerascalibrate_camerasCalibrateCamerasCalibrateCameras. See below for an example.

With the parameter ScaleScaleScaleScalescale you can scale the resulting 3D coordinates. The parameter ScaleScaleScaleScalescale must be specified as the ratio desired unit/original unit. The original unit is determined by the coordinates of the calibration object. If the original unit is meters (which is the case if you use the standard calibration plate), you can set the desired unit directly by selecting 'm'"m""m""m""m", 'cm'"cm""cm""cm""cm", 'mm'"mm""mm""mm""mm" or 'um'"um""um""um""um" for the parameter ScaleScaleScaleScalescale.

Internally, the operator first computes the line of sight between the projection center and the image point in the camera coordinate system, taking into account the radial distortions. The line of sight is then transformed into the world coordinate system specified in WorldPoseWorldPoseWorldPoseWorldPoseworldPose. By intersecting the plane z=0 with the line of sight the 3D coordinates of the transformed contour ContoursTransContoursTransContoursTransContoursTranscontoursTrans are obtained.

Parallelization

Parameters

ContoursContoursContoursContourscontours (input_object)  xld_cont(-array) objectHXLDContHXLDContHXLDContXHobject

Input XLD contours to be transformed in image coordinates.

ContoursTransContoursTransContoursTransContoursTranscontoursTrans (output_object)  xld_cont(-array) objectHXLDContHXLDContHXLDContXHobject *

Transformed XLD contours in world coordinates.

CameraParamCameraParamCameraParamCameraParamcameraParam (input_control)  number-array HTupleHTupleVARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong)

Internal camera parameters.

Number of elements: ((CameraParam == 8) || (CameraParam == 11)) || (CameraParam == 12)

WorldPoseWorldPoseWorldPoseWorldPoseworldPose (input_control)  pose-array HPose, HTupleHTupleHPoseX, VARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong)

3D pose of the world coordinate system in camera coordinates.

Number of elements: 7

ScaleScaleScaleScalescale (input_control)  number HTupleHTupleVARIANTHtuple (string / integer / real) (string / int / long / double) (char* / Hlong / double) (BSTR / Hlong / double) (char* / Hlong / double)

Scale or dimension

Default value: 'm' "m" "m" "m" "m"

Suggested values: 'm'"m""m""m""m", 'cm'"cm""cm""cm""cm", 'mm'"mm""mm""mm""mm", 'microns'"microns""microns""microns""microns", 'um'"um""um""um""um", 1.0, 0.01, 0.001, 1.0e-6, 0.0254, 0.3048, 0.9144

Example (HDevelop)

*  perform camera calibration (with standard calibration plate)
camera_calibration(NX, NY, NZ, NRow, NCol, StartCamParam, NStartPose, \
                   'all', FinalCamParam, NFinalPose, Errors)
*  world coordinate system is defined by calibration plate in first image
FinalPose1 := NFinalPose[0:6]
*  compensate thickness of plate
set_origin_pose(FinalPose1, 0, 0, 0.0006, WorldPose)
*  transform contours into world coordinate system (unit mm)
contour_to_world_plane_xld(Contours, ContoursTrans, \
                           FinalCamParam, WorldPose, 'mm')

Example (HDevelop)

*  perform camera calibration (with standard calibration plate)
camera_calibration(NX, NY, NZ, NRow, NCol, StartCamParam, NStartPose, \
                   'all', FinalCamParam, NFinalPose, Errors)
*  world coordinate system is defined by calibration plate in first image
FinalPose1 := NFinalPose[0:6]
*  compensate thickness of plate
set_origin_pose(FinalPose1, 0, 0, 0.0006, WorldPose)
*  transform contours into world coordinate system (unit mm)
contour_to_world_plane_xld(Contours, ContoursTrans, \
                           FinalCamParam, WorldPose, 'mm')

Example (C++)

HTuple  NX, NY, NZ, NRow, NCol;
HTuple  StartCamParam, NStartPose, FinalCamParam, NFinalPose, Errors;
HTuple  FinalPose1, WorldPose;
Hobject Contours, ContoursTrans;
// perform camera calibration (with standard calibration plate)
camera_calibration(NX, NY, NZ, NRow, NCol, StartCamParam, NStartPose, "all",
                   &FinalCamParam, &NFinalPose, &Errors);
// world coordinate system is defined by calibration plate in first image
FinalPose1 = NFinalPose(0,6);
// compensate thickness of plate
set_origin_pose(FinalPose1, 0, 0, 0.0006, &WorldPose);
// transform contours into world coordinate system (unit mm)
contour_to_world_plane_xld(Contours, &ContoursTrans,
                           FinalCamParam, WorldPose, "mm");

Example (HDevelop)

*  perform camera calibration (with standard calibration plate)
camera_calibration(NX, NY, NZ, NRow, NCol, StartCamParam, NStartPose, \
                   'all', FinalCamParam, NFinalPose, Errors)
*  world coordinate system is defined by calibration plate in first image
FinalPose1 := NFinalPose[0:6]
*  compensate thickness of plate
set_origin_pose(FinalPose1, 0, 0, 0.0006, WorldPose)
*  transform contours into world coordinate system (unit mm)
contour_to_world_plane_xld(Contours, ContoursTrans, \
                           FinalCamParam, WorldPose, 'mm')

Example (HDevelop)

*  perform camera calibration (with standard calibration plate)
camera_calibration(NX, NY, NZ, NRow, NCol, StartCamParam, NStartPose, \
                   'all', FinalCamParam, NFinalPose, Errors)
*  world coordinate system is defined by calibration plate in first image
FinalPose1 := NFinalPose[0:6]
*  compensate thickness of plate
set_origin_pose(FinalPose1, 0, 0, 0.0006, WorldPose)
*  transform contours into world coordinate system (unit mm)
contour_to_world_plane_xld(Contours, ContoursTrans, \
                           FinalCamParam, WorldPose, 'mm')

Result

contour_to_world_plane_xldcontour_to_world_plane_xldcontour_to_world_plane_xldContourToWorldPlaneXldContourToWorldPlaneXld returns 2 (H_MSG_TRUE) if all parameter values are correct. If necessary, an exception is raised.

Possible Predecessors

create_posecreate_posecreate_poseCreatePoseCreatePose, hom_mat3d_to_posehom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPose, camera_calibrationcamera_calibrationcamera_calibrationCameraCalibrationCameraCalibration, hand_eye_calibrationhand_eye_calibrationhand_eye_calibrationHandEyeCalibrationHandEyeCalibration, set_origin_poseset_origin_poseset_origin_poseSetOriginPoseSetOriginPose

See also

image_points_to_world_planeimage_points_to_world_planeimage_points_to_world_planeImagePointsToWorldPlaneImagePointsToWorldPlane

Module

Calibration


Table of Contents / Calibration / Rectification ClassesClassesClasses | | | Operators
HALCON Reference Manual 10.0.2 Copyright © 1996-2011 MVTec Software GmbH