Skip to content

sim_caltabSimCaltabSimCaltabsim_caltabT_sim_caltabπŸ”—

Short descriptionπŸ”—

sim_caltabSimCaltabSimCaltabsim_caltabT_sim_caltab β€” Simulate an image with calibration plate.

SignatureπŸ”—

sim_caltab( out image SimImage, filename.read CalPlateDescr, campar CameraParam, pose CalPlatePose, integer GrayBackground, integer GrayPlate, integer GrayMarks, real ScaleFac )void SimCaltab( HObject* SimImage, const HTuple& CalPlateDescr, const HTuple& CameraParam, const HTuple& CalPlatePose, const HTuple& GrayBackground, const HTuple& GrayPlate, const HTuple& GrayMarks, const HTuple& ScaleFac )static void HOperatorSet.SimCaltab( out HObject simImage, HTuple calPlateDescr, HTuple cameraParam, HTuple calPlatePose, HTuple grayBackground, HTuple grayPlate, HTuple grayMarks, HTuple scaleFac )def sim_caltab( cal_plate_descr: str, camera_param: Sequence[Union[int, float, str]], cal_plate_pose: Sequence[Union[int, float]], gray_background: int, gray_plate: int, gray_marks: int, scale_fac: float ) -> HObject

Herror T_sim_caltab( Hobject* SimImage, const Htuple CalPlateDescr, const Htuple CameraParam, const Htuple CalPlatePose, const Htuple GrayBackground, const Htuple GrayPlate, const Htuple GrayMarks, const Htuple ScaleFac )

void HImage::SimCaltab( const HString& CalPlateDescr, const HCamPar& CameraParam, const HPose& CalPlatePose, Hlong GrayBackground, Hlong GrayPlate, Hlong GrayMarks, double ScaleFac )

void HImage::SimCaltab( const char* CalPlateDescr, const HCamPar& CameraParam, const HPose& CalPlatePose, Hlong GrayBackground, Hlong GrayPlate, Hlong GrayMarks, double ScaleFac )

void HImage::SimCaltab( const wchar_t* CalPlateDescr, const HCamPar& CameraParam, const HPose& CalPlatePose, Hlong GrayBackground, Hlong GrayPlate, Hlong GrayMarks, double ScaleFac ) (Windows only)

HImage HCamPar::SimCaltab( const HString& CalPlateDescr, const HPose& CalPlatePose, Hlong GrayBackground, Hlong GrayPlate, Hlong GrayMarks, double ScaleFac ) const

HImage HCamPar::SimCaltab( const char* CalPlateDescr, const HPose& CalPlatePose, Hlong GrayBackground, Hlong GrayPlate, Hlong GrayMarks, double ScaleFac ) const

HImage HCamPar::SimCaltab( const wchar_t* CalPlateDescr, const HPose& CalPlatePose, Hlong GrayBackground, Hlong GrayPlate, Hlong GrayMarks, double ScaleFac ) const (Windows only)

HImage HPose::SimCaltab( const HString& CalPlateDescr, const HCamPar& CameraParam, Hlong GrayBackground, Hlong GrayPlate, Hlong GrayMarks, double ScaleFac ) const

HImage HPose::SimCaltab( const char* CalPlateDescr, const HCamPar& CameraParam, Hlong GrayBackground, Hlong GrayPlate, Hlong GrayMarks, double ScaleFac ) const

HImage HPose::SimCaltab( const wchar_t* CalPlateDescr, const HCamPar& CameraParam, Hlong GrayBackground, Hlong GrayPlate, Hlong GrayMarks, double ScaleFac ) const (Windows only)

void HImage.SimCaltab( string calPlateDescr, HCamPar cameraParam, HPose calPlatePose, int grayBackground, int grayPlate, int grayMarks, double scaleFac )

HImage HCamPar.SimCaltab( string calPlateDescr, HPose calPlatePose, int grayBackground, int grayPlate, int grayMarks, double scaleFac )

HImage HPose.SimCaltab( string calPlateDescr, HCamPar cameraParam, int grayBackground, int grayPlate, int grayMarks, double scaleFac )

DescriptionπŸ”—

sim_caltabSimCaltab is used to generate a simulated calibration image. The calibration plate description is read from the file CalPlateDescrcalPlateDescrcal_plate_descr and will be projected into the image plane using the given camera parameters, thus internal camera parameters CameraParamcameraParamcamera_param and external camera parameters CalPlatePosecalPlatePosecal_plate_pose (see also project_3d_pointProject3dPoint). Thereby the pose is expected to be in the form \(\mvPoseVar{{ccs}}{wcs}\), where ccs denotes the camera coordinate system and wcs the world coordinate system (see Transformations / Poses and β€œSolution Guide III-C - 3D Vision”).

In the simulated image only the calibration plate is shown. The image background is set to the gray value GrayBackgroundgrayBackgroundgray_background, the calibration plate background is set to GrayPlategrayPlategray_plate, and the calibration marks are set to the gray value GrayMarksgrayMarksgray_marks. The parameter ScaleFacscaleFacscale_fac influences the number of supporting points to approximate the elliptic contours of the calibration marks, see also disp_caltabDispCaltab. Increasing the number of supporting points causes a more accurate determination of the mark boundary, but increases the computation time, too. For each pixel of the simulated image which touches a subpixel-boundary of this kind, the gray value is set linearly between GrayMarksgrayMarksgray_marks and GrayPlategrayPlategray_plate dependent on the proportion Inside/Outside.

By applying the operator sim_caltabSimCaltab you can generate synthetic calibration images (with known camera parameters!) to test the quality of the calibration algorithm (see Calibration).

Execution informationπŸ”—

Execution information
  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).

  • Multithreading scope: global (may be called from any thread).

  • Automatically parallelized on internal data level.

ParametersπŸ”—

SimImagesimImagesim_image (output_object) image β†’ object (byte)HObject (byte)HImage (byte)HObject (byte)Hobject * (byte)

Simulated calibration image.

CalPlateDescrcalPlateDescrcal_plate_descr (input_control) filename.read β†’ (string)HTuple (HString)HTuple (string)strHtuple (char*)

File name of the calibration plate description.

Default: 'calplate_320mm.cpd'"calplate_320mm.cpd"
List of values: 'calplate_10mm.cpd', 'calplate_1200mm.cpd', 'calplate_160mm.cpd', 'calplate_20mm.cpd', 'calplate_20mm_dark_on_light.cpd', 'calplate_320mm.cpd', 'calplate_40mm.cpd', 'calplate_40mm_dark_on_light.cpd', 'calplate_5mm.cpd', 'calplate_640mm.cpd', 'calplate_80mm.cpd', 'calplate_80mm_dark_on_light.cpd', 'caltab_100mm.descr', 'caltab_10mm.descr', 'caltab_200mm.descr', 'caltab_2500um.descr', 'caltab_30mm.descr', 'caltab_650um.descr', 'caltab_6mm.descr', 'caltab_800mm.descr', 'caltab_big.descr', 'caltab_small.descr'"calplate_10mm.cpd", "calplate_1200mm.cpd", "calplate_160mm.cpd", "calplate_20mm.cpd", "calplate_20mm_dark_on_light.cpd", "calplate_320mm.cpd", "calplate_40mm.cpd", "calplate_40mm_dark_on_light.cpd", "calplate_5mm.cpd", "calplate_640mm.cpd", "calplate_80mm.cpd", "calplate_80mm_dark_on_light.cpd", "caltab_100mm.descr", "caltab_10mm.descr", "caltab_200mm.descr", "caltab_2500um.descr", "caltab_30mm.descr", "caltab_650um.descr", "caltab_6mm.descr", "caltab_800mm.descr", "caltab_big.descr", "caltab_small.descr"
File extension: .cpd, .descr

CameraParamcameraParamcamera_param (input_control) campar β†’ (real / integer / string)HTuple (double / Hlong / HString)HCamPar, HTuple (double / int / long / string)Sequence[Union[int, float, str]]Htuple (double / Hlong / char*)

Internal camera parameters.

CalPlatePosecalPlatePosecal_plate_pose (input_control) pose β†’ (real / integer)HTuple (double / Hlong)HPose, HTuple (double / int / long)Sequence[Union[int, float]]Htuple (double / Hlong)

External camera parameters (3D pose of the calibration plate in camera coordinates).

Number of elements: 7

GrayBackgroundgrayBackgroundgray_background (input_control) integer β†’ (integer)HTuple (Hlong)HTuple (int / long)intHtuple (Hlong)

Gray value of image background.

Default: 128128
Suggested values: 0, 32, 64, 96, 128, 1600, 32, 64, 96, 128, 160
Restriction: 0 <= GrayBackground <= 255

GrayPlategrayPlategray_plate (input_control) integer β†’ (integer)HTuple (Hlong)HTuple (int / long)intHtuple (Hlong)

Gray value of calibration plate.

Default: 8080
Suggested values: 144, 160, 176, 192, 208, 224, 240144, 160, 176, 192, 208, 224, 240
Restriction: 0 <= GrayPlate <= 255

GrayMarksgrayMarksgray_marks (input_control) integer β†’ (integer)HTuple (Hlong)HTuple (int / long)intHtuple (Hlong)

Gray value of calibration marks.

Default: 224224
Suggested values: 16, 32, 48, 64, 80, 96, 11216, 32, 48, 64, 80, 96, 112
Restriction: 0 <= GrayMarks <= 255

ScaleFacscaleFacscale_fac (input_control) real β†’ (real)HTuple (double)HTuple (double)floatHtuple (double)

Scaling factor to reduce oversampling.

Default: 1.01.0
Suggested values: 1.0, 0.5, 0.25, 0.1251.0, 0.5, 0.25, 0.125
Recommended increment: 0.05
Restriction: 1.0 >= ScaleFac

ExampleπŸ”—

(HDevelop)

* Read calibration image.
read_image(Image1, 'calib-01')
* Find calibration pattern.
CameraType := 'area_scan_division'
StartCamPar := [CameraType, Focus, Kappa, Sx, Sy, Cx, Cy, \
                ImageWidth, ImageHeight]
create_calib_data ('calibration_object', 1, 1, CalibDataID)
set_calib_data_cam_param (CalibDataID, 0, [], StartCamPar)
set_calib_data_calib_object (CalibDataID, 0, 'calplate.cpd')
find_caltab(Image1, CalPlate1, 'caltab.descr', 3, 112, 5)
* Find calibration marks and initial pose.
find_calib_object (Image1, CalibDataID, 0, 0, 0, [], [])
* Camera calibration.
calibrate_cameras (CalibDataID, Error)
* Simulate calibration image.
get_calib_data (CalibDataID, 'calib_obj_pose', [0, 0], 'pose', FinalPose)
get_calib_data (CalibDataID, 'camera', 0, 'params', CameraParam)
sim_caltab(Image1Sim, 'calplate.cpd', CameraParam, FinalPose, 128, \
           80, 224, 1)

ResultπŸ”—

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

Combinations with other operatorsπŸ”—

Combinations

Possible predecessors

camera_calibrationCameraCalibration, find_marks_and_poseFindMarksAndPose, read_poseReadPose, read_cam_parReadCamPar, hom_mat3d_to_poseHomMat3dToPose

Possible successors

find_caltabFindCaltab

See also

find_caltabFindCaltab, find_marks_and_poseFindMarksAndPose, camera_calibrationCameraCalibration, disp_caltabDispCaltab, create_poseCreatePose, hom_mat3d_to_poseHomMat3dToPose, project_3d_pointProject3dPoint, gen_caltabGenCaltab

ModuleπŸ”—

Calibration