caltab_points🔗
Short description🔗
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 )
Description🔗
caltab_points reads the mark center points from the calibration plate
description file CalPlateDescr (see gen_caltab for
calibration plates with rectangularly arranged marks and create_caltab
for calibration plates with hexagonally arranged marks) and
returns their coordinates in X, Y and Z. 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_calibration.
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🔗
CalPlateDescr (input_control) filename.read → (string)
File name of the calibration plate description.
Default: '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'
File extension: .cpd, .descr
X (output_control) real-array → (real)
X coordinates of the mark center points in the coordinate system of the calibration plate.
Y (output_control) real-array → (real)
Y coordinates of the mark center points in the coordinate system of the calibration plate.
Z (output_control) real-array → (real)
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)
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_points returns 2 (H_MSG_TRUE) if all parameter values are
correct and the file CalPlateDescr has been read
successfully. If necessary, an exception is raised.
Combinations with other operators🔗
Combinations
Possible successors
See also
find_caltab, find_marks_and_pose, camera_calibration, disp_caltab, sim_caltab, project_3d_point, get_line_of_sight, gen_caltab
Module🔗
Foundation