Skip to content

caltab_pointsCaltabPointsCaltabPointscaltab_pointsT_caltab_points🔗

Short description🔗

caltab_pointsCaltabPointsCaltabPointscaltab_pointsT_caltab_points — Read the mark center points from the calibration plate description file.

Signature🔗

caltab_points( filename.read CalPlateDescr, out real X, out real Y, out real Z )void CaltabPoints( const HTuple& CalPlateDescr, HTuple* X, HTuple* Y, HTuple* Z )static void HOperatorSet.CaltabPoints( HTuple calPlateDescr, out HTuple x, out HTuple y, out HTuple z )def caltab_points( cal_plate_descr: str ) -> Tuple[Sequence[float], Sequence[float], Sequence[float]]

Herror T_caltab_points( const Htuple CalPlateDescr, Htuple* X, Htuple* Y, Htuple* Z )

static void HMisc::CaltabPoints( const HString& CalPlateDescr, HTuple* X, HTuple* Y, HTuple* Z )

static void HMisc::CaltabPoints( const char* CalPlateDescr, HTuple* X, HTuple* Y, HTuple* Z )

static void HMisc::CaltabPoints( const wchar_t* CalPlateDescr, HTuple* X, HTuple* Y, HTuple* Z ) (Windows only)

static void HMisc.CaltabPoints( string calPlateDescr, out HTuple x, out HTuple y, out HTuple z )

Description🔗

caltab_pointsCaltabPoints reads the mark center points from the calibration plate description file CalPlateDescrcalPlateDescrcal_plate_descr (see gen_caltabGenCaltab for calibration plates with rectangularly arranged marks and create_caltabCreateCaltab for calibration plates with hexagonally arranged marks) and returns their coordinates in Xxx, Yyy and Zzz. The mark center points are 3D coordinates in the calibration plate coordinate system and describe the 3D model of the calibration plate. The calibration plate coordinate system is located in the middle of the surface of the calibration plate for calibration plates with rectangularly arranged marks and at the center of the central mark of the first finder pattern for calibration plates with hexagonally arranged marks. Its z-axis points into the calibration plate, its x-axis to the right, and its y-axis downwards.

The mark center points are typically used as input parameters for the operator camera_calibrationCameraCalibration.

Execution information🔗

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

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

  • Processed without parallelization.

Parameters🔗

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

Xxx (output_control) real-array → (real)HTuple (double)HTuple (double)Sequence[float]Htuple (double)

X coordinates of the mark center points in the coordinate system of the calibration plate.

Yyy (output_control) real-array → (real)HTuple (double)HTuple (double)Sequence[float]Htuple (double)

Y coordinates of the mark center points in the coordinate system of the calibration plate.

Zzz (output_control) real-array → (real)HTuple (double)HTuple (double)Sequence[float]Htuple (double)

Z coordinates of the mark center points in the coordinate system of the calibration plate.

Example🔗

(HDevelop)

* Read calibration image.
read_image(Image, 'calib/calib-3d-coord-03')
CalTabDescr := 'caltab_100mm.descr'
* Find calibration pattern.
find_caltab(Image, CalPlate1, CalTabDescr, 3, 112, 5)
* Find calibration marks and start poses.
StartCamPar := ['area_scan_division', 0.008, 0.0, 0.000011, 0.000011, \
                384, 288, 768, 576]
find_marks_and_pose(Image,CalPlate1,CalTabDescr, StartCamPar, \
                    128, 10, 18, 0.9, 15.0, 100.0, RCoord1, CCoord1, \
                    StartPose1)
* Read 3D positions of calibration marks.
caltab_points(CalTabDescr, NX, NY, NZ)
*  Calibrate camera.
camera_calibration(NX, NY, NZ, RCoord1, CCoord1, StartCamPar, \
                   StartPose1, 'all', CameraParam, FinalPose, Errors)
*  Visualize calibration result.
dev_display(Image)
disp_caltab(WindowHandle, CalTabDescr, CameraParam, FinalPose, 1.0)
(C++)
HTuple StartCamPar, NX, NY, NZ\;
HTuple RCoord, CCoord, StartPose\;
HTuple StartPose, CameraParam, FinalPose, Errors\;
// Read calibration image.
HImage Image("calib/calib-3d-coord-03")\;
// Find calibration pattern.
HRegion CalPlate1 = Image.FindCaltab("caltab_100mm.descr", 3, 112, 5)\;
// Find calibration marks and start pose.
StartCamPar[8] = 576\;                  // ImageHeight
StartCamPar[7] = 768\;                  // ImageWidth
StartCamPar[6] = 288\;                  // Cy
StartCamPar[5] = 384\;                  // Cx
StartCamPar[4] = 0.000011\;             // Sy
StartCamPar[3] = 0.000011\;             // Sx
StartCamPar[2] = 0.0\;                  // Kappa
StartCamPar[1] = 0.008\;                // Focus
StartCamPar[0] = "area_scan_division"\; // CameraType
RCoord = Image.FindMarksAndPose(CalPlate, "caltab_100mm.descr", StartCamPar,
                                  128, 10, &CCoord, &StartPose)\;
// Read 3D positions of calibration marks.
caltab_points("caltab_100mm.descr", &NX, &NY, &NZ)\;
// Calibrate camera.
camera_calibration(NX, NY, NZ, RCoord, CCoord, StartCamPar, StartPose,
                   11, &CameraParam, &FinalPose, &Errors)\;
// Visualize calibration result.
disp_image(Image, WindowHandle)\;
disp_caltab(WindowHandle, "caltab_100mm.descr, CameraParam, FinalPose, 1.0)\;

Result🔗

caltab_pointsCaltabPoints returns 2 (H_MSG_TRUE) if all parameter values are correct and the file CalPlateDescrcalPlateDescrcal_plate_descr has been read successfully. If necessary, an exception is raised.

Combinations with other operators🔗

Combinations

Possible successors

camera_calibrationCameraCalibration

See also

find_caltabFindCaltab, find_marks_and_poseFindMarksAndPose, camera_calibrationCameraCalibration, disp_caltabDispCaltab, sim_caltabSimCaltab, project_3d_pointProject3dPoint, get_line_of_sightGetLineOfSight, gen_caltabGenCaltab

Module🔗

Foundation