ClassesClassesClassesClasses | | | | Operators

sim_caltabT_sim_caltabSimCaltabsim_caltabSimCaltabSimCaltab (Operator)

Name

sim_caltabT_sim_caltabSimCaltabsim_caltabSimCaltabSimCaltab — Simulate an image with calibration plate.

Signature

sim_caltab( : SimImage : CalTabDescrFile, CameraParam, CaltabPose, GrayBackground, GrayCaltab, GrayMarks, ScaleFac : )

Herror T_sim_caltab(Hobject* SimImage, const Htuple CalTabDescrFile, const Htuple CameraParam, const Htuple CaltabPose, const Htuple GrayBackground, const Htuple GrayCaltab, const Htuple GrayMarks, const Htuple ScaleFac)

Herror sim_caltab(Hobject* SimImage, const HTuple& CalTabDescrFile, const HTuple& CameraParam, const HTuple& CaltabPose, const HTuple& GrayBackground, const HTuple& GrayCaltab, const HTuple& GrayMarks, const HTuple& ScaleFac)

HImage HImage::SimCaltab(const HTuple& CalTabDescrFile, const HTuple& CameraParam, const HTuple& CaltabPose, const HTuple& GrayBackground, const HTuple& GrayCaltab, const HTuple& GrayMarks, const HTuple& ScaleFac)

void SimCaltab(HObject* SimImage, const HTuple& CalTabDescrFile, const HTuple& CameraParam, const HTuple& CaltabPose, const HTuple& GrayBackground, const HTuple& GrayCaltab, const HTuple& GrayMarks, const HTuple& ScaleFac)

void HImage::SimCaltab(const HString& CalTabDescrFile, const HTuple& CameraParam, const HPose& CaltabPose, Hlong GrayBackground, Hlong GrayCaltab, Hlong GrayMarks, double ScaleFac)

void HImage::SimCaltab(const char* CalTabDescrFile, const HTuple& CameraParam, const HPose& CaltabPose, Hlong GrayBackground, Hlong GrayCaltab, Hlong GrayMarks, double ScaleFac)

void HOperatorSetX.SimCaltab(
[out] IHUntypedObjectX*SimImage, [in] VARIANT CalTabDescrFile, [in] VARIANT CameraParam, [in] VARIANT CaltabPose, [in] VARIANT GrayBackground, [in] VARIANT GrayCaltab, [in] VARIANT GrayMarks, [in] VARIANT ScaleFac)

void HImageX.SimCaltab(
[in] BSTR CalTabDescrFile, [in] VARIANT CameraParam, [in] VARIANT CaltabPose, [in] Hlong GrayBackground, [in] Hlong GrayCaltab, [in] Hlong GrayMarks, [in] double ScaleFac)

static void HOperatorSet.SimCaltab(out HObject simImage, HTuple calTabDescrFile, HTuple cameraParam, HTuple caltabPose, HTuple grayBackground, HTuple grayCaltab, HTuple grayMarks, HTuple scaleFac)

void HImage.SimCaltab(string calTabDescrFile, HTuple cameraParam, HPose caltabPose, int grayBackground, int grayCaltab, int grayMarks, double scaleFac)

Description

sim_caltabsim_caltabSimCaltabsim_caltabSimCaltabSimCaltab is used to generate a simulated calibration image. The calibration plate description is read from the file CalTabDescrFileCalTabDescrFileCalTabDescrFileCalTabDescrFileCalTabDescrFilecalTabDescrFile and will be projected into the image plane using the given camera parameters (internal camera parameters CameraParamCameraParamCameraParamCameraParamCameraParamcameraParam and external camera parameters CaltabPoseCaltabPoseCaltabPoseCaltabPoseCaltabPosecaltabPose), see also project_3d_pointproject_3d_pointProject3dPointproject_3d_pointProject3dPointProject3dPoint.

In the simulated image only the calibration plate is shown. The image background is set to the gray value GrayBackgroundGrayBackgroundGrayBackgroundGrayBackgroundGrayBackgroundgrayBackground, the calibration plate background is set to GrayCaltabGrayCaltabGrayCaltabGrayCaltabGrayCaltabgrayCaltab, and the calibration marks are set to the gray value GrayMarksGrayMarksGrayMarksGrayMarksGrayMarksgrayMarks. The parameter ScaleFacScaleFacScaleFacScaleFacScaleFacscaleFac influences the number of supporting points to approximate the elliptic contours of the calibration marks, see also disp_caltabdisp_caltabDispCaltabdisp_caltabDispCaltabDispCaltab. 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 GrayMarksGrayMarksGrayMarksGrayMarksGrayMarksgrayMarks and GrayCaltabGrayCaltabGrayCaltabGrayCaltabGrayCaltabgrayCaltab dependent on the proportion Inside/Outside.

By applying the operator sim_caltabsim_caltabSimCaltabsim_caltabSimCaltabSimCaltab you can generate synthetic calibration images (with known camera parameters!) to test the quality of the calibration algorithm (see calibrate_camerascalibrate_camerasCalibrateCamerascalibrate_camerasCalibrateCamerasCalibrateCameras, or camera_calibrationcamera_calibrationCameraCalibrationcamera_calibrationCameraCalibrationCameraCalibration).

Parallelization

Parameters

SimImageSimImageSimImageSimImageSimImagesimImage (output_object)  image objectHImageHImageHImageHImageXHobject * (byte)

Simulated calibration image.

CalTabDescrFileCalTabDescrFileCalTabDescrFileCalTabDescrFileCalTabDescrFilecalTabDescrFile (input_control)  filename.read HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

File name of the calibration plate description.

Default value: 'caltab.descr' "caltab.descr" "caltab.descr" "caltab.descr" "caltab.descr" "caltab.descr"

List of values: 'caltab.descr'"caltab.descr""caltab.descr""caltab.descr""caltab.descr""caltab.descr", 'caltab_100mm.descr'"caltab_100mm.descr""caltab_100mm.descr""caltab_100mm.descr""caltab_100mm.descr""caltab_100mm.descr", 'caltab_10mm.descr'"caltab_10mm.descr""caltab_10mm.descr""caltab_10mm.descr""caltab_10mm.descr""caltab_10mm.descr", 'caltab_200mm.descr'"caltab_200mm.descr""caltab_200mm.descr""caltab_200mm.descr""caltab_200mm.descr""caltab_200mm.descr", 'caltab_30mm.descr'"caltab_30mm.descr""caltab_30mm.descr""caltab_30mm.descr""caltab_30mm.descr""caltab_30mm.descr"

File extension: .descr

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

Internal camera parameters.

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

CaltabPoseCaltabPoseCaltabPoseCaltabPoseCaltabPosecaltabPose (input_control)  pose HPose, HTupleHTupleHTupleHPoseX, VARIANTHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong) (double / Hlong) (double / Hlong)

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

Number of elements: 7

GrayBackgroundGrayBackgroundGrayBackgroundGrayBackgroundGrayBackgroundgrayBackground (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Gray value of image background.

Default value: 128

Suggested values: 0, 32, 64, 96, 128, 160

Restriction: 0 <= GrayBackground <= 255

GrayCaltabGrayCaltabGrayCaltabGrayCaltabGrayCaltabgrayCaltab (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Gray value of calibration plate.

Default value: 224

Suggested values: 144, 160, 176, 192, 208, 224, 240

Restriction: 0 <= GrayCaltab <= 255

GrayMarksGrayMarksGrayMarksGrayMarksGrayMarksgrayMarks (input_control)  integer HTupleHTupleHTupleVARIANTHtuple (integer) (int / long) (Hlong) (Hlong) (Hlong) (Hlong)

Gray value of calibration marks.

Default value: 80

Suggested values: 16, 32, 48, 64, 80, 96, 112

Restriction: 0 <= GrayMarks <= 255

ScaleFacScaleFacScaleFacScaleFacScaleFacscaleFac (input_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Scaling factor to reduce oversampling.

Default value: 1.0

Suggested values: 1.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
find_caltab(Image1, Caltab1, 'caltab.descr', 3, 112, 5)
* find calibration marks and initial pose
StartCamPar := [Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]
find_marks_and_pose(Image1, Caltab1, 'caltab.descr', StartCamPar, \
                    128 ,10, 18, 0.9, 15.0, 100.0, RCoord1, CCoord1, \
                    StartPose1)
*  read 3D positions of calibration marks
caltab_points('caltab.descr', NX, NY, NZ)
*  camera calibration
camera_calibration(NX, NY, NZ, RCoord1, CCoord1, StartCamPar, \
                   StartPose1, 11, CameraParam, FinalPose, Errors)
*  simulate calibration image
sim_caltab(Image1Sim, 'caltab.descr', CameraParam, FinalPose, 128, \
           224, 80, 1)

Example (HDevelop)

* read calibration image
read_image(Image1, 'calib-01')
*  find calibration pattern
find_caltab(Image1, Caltab1, 'caltab.descr', 3, 112, 5)
* find calibration marks and initial pose
StartCamPar := [Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]
find_marks_and_pose(Image1, Caltab1, 'caltab.descr', StartCamPar, \
                    128 ,10, 18, 0.9, 15.0, 100.0, RCoord1, CCoord1, \
                    StartPose1)
*  read 3D positions of calibration marks
caltab_points('caltab.descr', NX, NY, NZ)
*  camera calibration
camera_calibration(NX, NY, NZ, RCoord1, CCoord1, StartCamPar, \
                   StartPose1, 11, CameraParam, FinalPose, Errors)
*  simulate calibration image
sim_caltab(Image1Sim, 'caltab.descr', CameraParam, FinalPose, 128, \
           224, 80, 1)

Example (HDevelop)

* read calibration image
read_image(Image1, 'calib-01')
*  find calibration pattern
find_caltab(Image1, Caltab1, 'caltab.descr', 3, 112, 5)
* find calibration marks and initial pose
StartCamPar := [Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]
find_marks_and_pose(Image1, Caltab1, 'caltab.descr', StartCamPar, \
                    128 ,10, 18, 0.9, 15.0, 100.0, RCoord1, CCoord1, \
                    StartPose1)
*  read 3D positions of calibration marks
caltab_points('caltab.descr', NX, NY, NZ)
*  camera calibration
camera_calibration(NX, NY, NZ, RCoord1, CCoord1, StartCamPar, \
                   StartPose1, 11, CameraParam, FinalPose, Errors)
*  simulate calibration image
sim_caltab(Image1Sim, 'caltab.descr', CameraParam, FinalPose, 128, \
           224, 80, 1)

Example (C++ (HALCON 5.0-10.0))

HTuple StartCamPar, NX, NY, NZ;
HTuple RCoord1, CCoord1, StartPose1;
HTuple StartPose, RCoords, CCoords;
HTuple CameraParam, FinalPose, Errors;
// read calibration image
HImage Image1("calib-01");
// find calibration pattern
HRegion Caltab1 = Image1.FindCaltab("caltab.descr", 3, 112, 5);
// find calibration marks and initial pose
StartCamPar[7] = 576;          // ImageHeight
StartCamPar[6] = 768;          // ImageWidth
StartCamPar[5] = 288;          // Cy
StartCamPar[4] = 384;          // Cx
StartCamPar[3] = 0.000011;     // Sy
StartCamPar[2] = 0.000011;     // Sx
StartCamPar[1] = 0.0;          // Kappa
StartCamPar[0] = 0.008;        // Focus
RCoord1 = Image1.FindMarksAndPose(Caltab1, "caltab.descr", StartCamPar,
                                  128, 10, &CCoord1, &StartPose);
// read 3D positions of calibration marks
caltab_points("caltab.descr", &NX, &NY, &NZ);
// camera calibration
camera_calibration(NX, NY, NZ, RCoord1, CCoord1, StartCamPar, StartPose,
                   11, &CameraParam, &FinalPose, &Errors);
HImage Image1Sim = HImage::SimCaltab("caltab.descr", CameraParam, FinalPose,
                                     128, 224, 80, 1.0);

Example (HDevelop)

* read calibration image
read_image(Image1, 'calib-01')
*  find calibration pattern
find_caltab(Image1, Caltab1, 'caltab.descr', 3, 112, 5)
* find calibration marks and initial pose
StartCamPar := [Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]
find_marks_and_pose(Image1, Caltab1, 'caltab.descr', StartCamPar, \
                    128 ,10, 18, 0.9, 15.0, 100.0, RCoord1, CCoord1, \
                    StartPose1)
*  read 3D positions of calibration marks
caltab_points('caltab.descr', NX, NY, NZ)
*  camera calibration
camera_calibration(NX, NY, NZ, RCoord1, CCoord1, StartCamPar, \
                   StartPose1, 11, CameraParam, FinalPose, Errors)
*  simulate calibration image
sim_caltab(Image1Sim, 'caltab.descr', CameraParam, FinalPose, 128, \
           224, 80, 1)

Example (HDevelop)

* read calibration image
read_image(Image1, 'calib-01')
*  find calibration pattern
find_caltab(Image1, Caltab1, 'caltab.descr', 3, 112, 5)
* find calibration marks and initial pose
StartCamPar := [Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]
find_marks_and_pose(Image1, Caltab1, 'caltab.descr', StartCamPar, \
                    128 ,10, 18, 0.9, 15.0, 100.0, RCoord1, CCoord1, \
                    StartPose1)
*  read 3D positions of calibration marks
caltab_points('caltab.descr', NX, NY, NZ)
*  camera calibration
camera_calibration(NX, NY, NZ, RCoord1, CCoord1, StartCamPar, \
                   StartPose1, 11, CameraParam, FinalPose, Errors)
*  simulate calibration image
sim_caltab(Image1Sim, 'caltab.descr', CameraParam, FinalPose, 128, \
           224, 80, 1)

Result

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

Possible Predecessors

camera_calibrationcamera_calibrationCameraCalibrationcamera_calibrationCameraCalibrationCameraCalibration, find_marks_and_posefind_marks_and_poseFindMarksAndPosefind_marks_and_poseFindMarksAndPoseFindMarksAndPose, read_poseread_poseReadPoseread_poseReadPoseReadPose, read_cam_parread_cam_parReadCamParread_cam_parReadCamParReadCamPar, hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPosehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPose

Possible Successors

find_caltabfind_caltabFindCaltabfind_caltabFindCaltabFindCaltab

See also

find_caltabfind_caltabFindCaltabfind_caltabFindCaltabFindCaltab, find_marks_and_posefind_marks_and_poseFindMarksAndPosefind_marks_and_poseFindMarksAndPoseFindMarksAndPose, camera_calibrationcamera_calibrationCameraCalibrationcamera_calibrationCameraCalibrationCameraCalibration, disp_caltabdisp_caltabDispCaltabdisp_caltabDispCaltabDispCaltab, create_posecreate_poseCreatePosecreate_poseCreatePoseCreatePose, hom_mat3d_to_posehom_mat3d_to_poseHomMat3dToPosehom_mat3d_to_poseHomMat3dToPoseHomMat3dToPose, project_3d_pointproject_3d_pointProject3dPointproject_3d_pointProject3dPointProject3dPoint, gen_caltabgen_caltabGenCaltabgen_caltabGenCaltabGenCaltab

Module

Calibration


ClassesClassesClassesClasses | | | | Operators