caltab_pointsT_caltab_pointsCaltabPointsCaltabPointscaltab_points (Operator)
caltab_pointsT_caltab_pointsCaltabPointsCaltabPointscaltab_points
— Read the mark center points from the calibration plate description file.
Signature
Herror T_caltab_points(const Htuple CalPlateDescr, Htuple* X, Htuple* Y, Htuple* Z)
void CaltabPoints(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)
def caltab_points(cal_plate_descr: str) -> Tuple[Sequence[float], Sequence[float], Sequence[float]]
Description
caltab_pointscaltab_pointsCaltabPointsCaltabPointscaltab_points
reads the mark center points from the calibration plate
description file CalPlateDescrCalPlateDescrCalPlateDescrcalPlateDescrcal_plate_descr
(see gen_caltabgen_caltabGenCaltabGenCaltabgen_caltab
for
calibration plates with rectangularly arranged marks and create_caltabcreate_caltabCreateCaltabCreateCaltabcreate_caltab
for calibration plates with hexagonally arranged marks) and
returns their coordinates in XXXxx
, YYYyy
and ZZZzz
. 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_calibrationcamera_calibrationCameraCalibrationCameraCalibrationcamera_calibration
.
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
CalPlateDescrCalPlateDescrCalPlateDescrcalPlateDescrcal_plate_descr
(input_control) filename.read →
HTuplestrHTupleHtuple (string) (string) (HString) (char*)
File name of the calibration plate description.
Default:
'calplate_320mm.cpd'
"calplate_320mm.cpd"
"calplate_320mm.cpd"
"calplate_320mm.cpd"
"calplate_320mm.cpd"
List of values:
'calplate_10mm.cpd'"calplate_10mm.cpd""calplate_10mm.cpd""calplate_10mm.cpd""calplate_10mm.cpd", 'calplate_1200mm.cpd'"calplate_1200mm.cpd""calplate_1200mm.cpd""calplate_1200mm.cpd""calplate_1200mm.cpd", 'calplate_160mm.cpd'"calplate_160mm.cpd""calplate_160mm.cpd""calplate_160mm.cpd""calplate_160mm.cpd", 'calplate_20mm.cpd'"calplate_20mm.cpd""calplate_20mm.cpd""calplate_20mm.cpd""calplate_20mm.cpd", 'calplate_20mm_dark_on_light.cpd'"calplate_20mm_dark_on_light.cpd""calplate_20mm_dark_on_light.cpd""calplate_20mm_dark_on_light.cpd""calplate_20mm_dark_on_light.cpd", 'calplate_320mm.cpd'"calplate_320mm.cpd""calplate_320mm.cpd""calplate_320mm.cpd""calplate_320mm.cpd", 'calplate_40mm.cpd'"calplate_40mm.cpd""calplate_40mm.cpd""calplate_40mm.cpd""calplate_40mm.cpd", 'calplate_40mm_dark_on_light.cpd'"calplate_40mm_dark_on_light.cpd""calplate_40mm_dark_on_light.cpd""calplate_40mm_dark_on_light.cpd""calplate_40mm_dark_on_light.cpd", 'calplate_5mm.cpd'"calplate_5mm.cpd""calplate_5mm.cpd""calplate_5mm.cpd""calplate_5mm.cpd", 'calplate_640mm.cpd'"calplate_640mm.cpd""calplate_640mm.cpd""calplate_640mm.cpd""calplate_640mm.cpd", 'calplate_80mm.cpd'"calplate_80mm.cpd""calplate_80mm.cpd""calplate_80mm.cpd""calplate_80mm.cpd", 'calplate_80mm_dark_on_light.cpd'"calplate_80mm_dark_on_light.cpd""calplate_80mm_dark_on_light.cpd""calplate_80mm_dark_on_light.cpd""calplate_80mm_dark_on_light.cpd", '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_200mm.descr'"caltab_200mm.descr""caltab_200mm.descr""caltab_200mm.descr""caltab_200mm.descr", 'caltab_2500um.descr'"caltab_2500um.descr""caltab_2500um.descr""caltab_2500um.descr""caltab_2500um.descr", 'caltab_30mm.descr'"caltab_30mm.descr""caltab_30mm.descr""caltab_30mm.descr""caltab_30mm.descr", 'caltab_650um.descr'"caltab_650um.descr""caltab_650um.descr""caltab_650um.descr""caltab_650um.descr", 'caltab_6mm.descr'"caltab_6mm.descr""caltab_6mm.descr""caltab_6mm.descr""caltab_6mm.descr", 'caltab_800mm.descr'"caltab_800mm.descr""caltab_800mm.descr""caltab_800mm.descr""caltab_800mm.descr", 'caltab_big.descr'"caltab_big.descr""caltab_big.descr""caltab_big.descr""caltab_big.descr", 'caltab_small.descr'"caltab_small.descr""caltab_small.descr""caltab_small.descr""caltab_small.descr"
File extension:
.cpd
, .descr
XXXxx
(output_control) real-array →
HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
X coordinates of the mark center points in the
coordinate system of the calibration plate.
YYYyy
(output_control) real-array →
HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)
Y coordinates of the mark center points in the
coordinate system of the calibration plate.
ZZZzz
(output_control) real-array →
HTupleSequence[float]HTupleHtuple (real) (double) (double) (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)
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)
Example (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);
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)
Result
caltab_pointscaltab_pointsCaltabPointsCaltabPointscaltab_points
returns 2 (
H_MSG_TRUE)
if all parameter values are
correct and the file CalPlateDescrCalPlateDescrCalPlateDescrcalPlateDescrcal_plate_descr
has been read
successfully. If necessary, an exception is raised.
Possible Successors
camera_calibrationcamera_calibrationCameraCalibrationCameraCalibrationcamera_calibration
See also
find_caltabfind_caltabFindCaltabFindCaltabfind_caltab
,
find_marks_and_posefind_marks_and_poseFindMarksAndPoseFindMarksAndPosefind_marks_and_pose
,
camera_calibrationcamera_calibrationCameraCalibrationCameraCalibrationcamera_calibration
,
disp_caltabdisp_caltabDispCaltabDispCaltabdisp_caltab
,
sim_caltabsim_caltabSimCaltabSimCaltabsim_caltab
,
project_3d_pointproject_3d_pointProject3dPointProject3dPointproject_3d_point
,
get_line_of_sightget_line_of_sightGetLineOfSightGetLineOfSightget_line_of_sight
,
gen_caltabgen_caltabGenCaltabGenCaltabgen_caltab
Module
Foundation