Skip to content

gen_caltabGenCaltabGenCaltabgen_caltabgen_caltabπŸ”—

Short descriptionπŸ”—

gen_caltabGenCaltabGenCaltabgen_caltabgen_caltab β€” Generate a calibration plate description file and a corresponding PostScript file for a calibration plate with rectangularly arranged marks.

SignatureπŸ”—

gen_caltab( integer XNum, integer YNum, real MarkDist, real DiameterRatio, filename.write CalPlateDescr, filename.write CalPlatePSFile )void GenCaltab( const HTuple& XNum, const HTuple& YNum, const HTuple& MarkDist, const HTuple& DiameterRatio, const HTuple& CalPlateDescr, const HTuple& CalPlatePSFile )static void HOperatorSet.GenCaltab( HTuple XNum, HTuple YNum, HTuple markDist, HTuple diameterRatio, HTuple calPlateDescr, HTuple calPlatePSFile )def gen_caltab( xnum: int, ynum: int, mark_dist: float, diameter_ratio: float, cal_plate_descr: str, cal_plate_psfile: str ) -> None

Herror gen_caltab( const Hlong XNum, const Hlong YNum, double MarkDist, double DiameterRatio, const char* CalPlateDescr, const char* CalPlatePSFile )

Herror T_gen_caltab( const Htuple XNum, const Htuple YNum, const Htuple MarkDist, const Htuple DiameterRatio, const Htuple CalPlateDescr, const Htuple CalPlatePSFile )

static void HMisc::GenCaltab( Hlong XNum, Hlong YNum, double MarkDist, double DiameterRatio, const HString& CalPlateDescr, const HString& CalPlatePSFile )

static void HMisc::GenCaltab( Hlong XNum, Hlong YNum, double MarkDist, double DiameterRatio, const char* CalPlateDescr, const char* CalPlatePSFile )

static void HMisc::GenCaltab( Hlong XNum, Hlong YNum, double MarkDist, double DiameterRatio, const wchar_t* CalPlateDescr, const wchar_t* CalPlatePSFile ) (Windows only)

static void HMisc.GenCaltab( int XNum, int YNum, double markDist, double diameterRatio, string calPlateDescr, string calPlatePSFile )

DescriptionπŸ”—

gen_caltabGenCaltab generates the description of a standard HALCON calibration plate with rectangularly arranged marks. This calibration plate consists of XNumXNumxnum times YNumYNumynum black circular marks on a white plane which are surrounded by a black frame.

A standard HALCON calibration plate with rectangularly arranged marks

The marks are arranged in a rectangular grid with YNumYNumynum and XNumXNumxnum equidistant rows and columns. The distances between these rows and columns defines the parameter MarkDistmarkDistmark_dist in meter. The marks’ diameter can be set by the parameter DiameterRatiodiameterRatiodiameter_ratio and is defined by the equation \({\tt Diameter} = {\tt MarkDist} \cdot {\tt DiameterRatio}\). Using a distance between marks of 0.01 m and a diameter ratio of 0.5, the width of the dark surrounding frame becomes 8 cm, and the radius of the marks is set to 2.5 mm. The coordinate system of the calibration plate is located in the barycenter of all marks, its z-axis points into the calibration plate, its x-axis to the right, and its y-axis downwards.

The black frame of the calibration plate encloses a triangular black orientation mark in the top left corner to uniquely determine the position of the calibration plate. The width and the height of the generated calibration plate can be calculated with the following equations:

\({\tt Width} = {\tt MarkDist} \cdot ({\tt XNum + 1})\)

\({\tt Height} = {\tt MarkDist} \cdot ({\tt YNum + 1})\)

The file CalPlateDescrcalPlateDescrcal_plate_descr contains the calibration plate description, e.g., the number of rows and columns of the calibration plate, the geometry of the surrounding frame (see find_caltabFindCaltab), the triangular orientation mark, an offset of the coordinate system to the plate’s surface in z-direction, and the x,y coordinates and the radius of all calibration plate marks given in the calibration plate coordinate system. The definition of the orientation and the offset, indicated by t and z, is optional and can be commented out. The default HALCON file extension for the calibration plate description is 'descr'. A file generated by gen_caltabGenCaltab looks like the following (comments are marked by a β€˜#’ at the beginning of a line):

    # Plate Description Version 2
    # HALCON Version 7.1 --  Fri Jun 24 16:41:00 2005
    # Description of the standard calibration plate
    # used for the camera calibration in HALCON
    # (generated by gen_caltab)
    #
    #
    # 7 rows x 7 columns
    # Width, height of the black frame [meter]: 0.1, 0.1
    # Distance between mark centers [meter]: 0.0125

    # Number of marks in y-dimension (rows)
    r 7

    # Number of marks in x-dimension (columns)
    c 7

    #   offset of coordinate system in z-dimension [meter] (optional):
    z 0

    # Rectangular border (rim and black frame) of calibration plate
    #   rim of the calibration plate (min x, max y, max x, min y) [meter]:
    o -0.05125 0.05125 0.05125 -0.05125
    #   outer border of the black frame (min x, max y, max x, min y) [meter]:
    i -0.05 0.05 0.05 -0.05
    #   triangular corner mark given by two corner points (x,y, x,y) [meter]
    #   (optional):
    t -0.05 -0.0375 -0.0375 -0.05

    #   width of the black frame [meter]:
    w 0.003125

    # calibration marks:  x y radius [meter]

    # calibration marks at y = -0.0375 m
    -0.0375 -0.0375 0.003125
    -0.025 -0.0375 0.003125
    -0.0125 -0.0375 0.003125
    -3.46945e-018 -0.0375 0.003125
    0.0125 -0.0375 0.003125
    0.025 -0.0375 0.003125
    0.0375 -0.0375 0.003125

    # calibration marks at y = -0.025 m
    -0.0375 -0.025 0.003125
    -0.025 -0.025 0.003125
    -0.0125 -0.025 0.003125
    -3.46945e-018 -0.025 0.003125
    0.0125 -0.025 0.003125
    0.025 -0.025 0.003125
    0.0375 -0.025 0.003125

    # calibration marks at y = -0.0125 m
    -0.0375 -0.0125 0.003125
    -0.025 -0.0125 0.003125
    -0.0125 -0.0125 0.003125
    -3.46945e-018 -0.0125 0.003125
    0.0125 -0.0125 0.003125
    0.025 -0.0125 0.003125
    0.0375 -0.0125 0.003125

    # calibration marks at y = -3.46945e-018 m
    -0.0375 -3.46945e-018 0.003125
    -0.025 -3.46945e-018 0.003125
    -0.0125 -3.46945e-018 0.003125
    -3.46945e-018 -3.46945e-018 0.003125
    0.0125 -3.46945e-018 0.003125
    0.025 -3.46945e-018 0.003125
    0.0375 -3.46945e-018 0.003125

    # calibration marks at y = 0.0125 m
    -0.0375 0.0125 0.003125
    -0.025 0.0125 0.003125
    -0.0125 0.0125 0.003125
    -3.46945e-018 0.0125 0.003125
    0.0125 0.0125 0.003125
    0.025 0.0125 0.003125
    0.0375 0.0125 0.003125

    # calibration marks at y = 0.025 m
    -0.0375 0.025 0.003125
    -0.025 0.025 0.003125
    -0.0125 0.025 0.003125
    -3.46945e-018 0.025 0.003125
    0.0125 0.025 0.003125
    0.025 0.025 0.003125
    0.0375 0.025 0.003125

    # calibration marks at y = 0.0375 m
    -0.0375 0.0375 0.003125
    -0.025 0.0375 0.003125
    -0.0125 0.0375 0.003125
    -3.46945e-018 0.0375 0.003125
    0.0125 0.0375 0.003125
    0.025 0.0375 0.003125
    0.0375 0.0375 0.003125

The file CalPlatePSFilecalPlatePSFilecal_plate_psfile contains the corresponding PostScript description of the calibration plate.

AttentionπŸ”—

Depending on the accuracy of the used output device (e.g., laser printer), the printed calibration plate may not match the values in the calibration plate description file CalPlateDescrcalPlateDescrcal_plate_descr exactly. Thus, the coordinates of the calibration marks in the calibration plate description file may have to be corrected!

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πŸ”—

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

Number of marks in x direction.

Default: 77
Suggested values: 5, 7, 95, 7, 9
Recommended increment: 1
Restriction: XNum > 1

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

Number of marks in y direction.

Default: 77
Suggested values: 5, 7, 95, 7, 9
Recommended increment: 1
Restriction: YNum > 1

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

Distance of the marks in meters.

Default: 0.01250.0125
Suggested values: 0.1, 0.0125, 0.00375, 0.001250.1, 0.0125, 0.00375, 0.00125
Restriction: 0.0 < MarkDist

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

Ratio of the mark diameter to the mark distance.

Default: 0.50.5
Suggested values: 0.5, 0.55, 0.6, 0.650.5, 0.55, 0.6, 0.65
Restriction: 0.0 < DiameterRatio < 1.0

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

File name of the calibration plate description.

Default: 'caltab.descr'"caltab.descr"
List of values: 'caltab.descr'"caltab.descr"
File extension: .descr

CalPlatePSFilecalPlatePSFilecal_plate_psfile (input_control) filename.write β†’ (string)HTuple (HString)HTuple (string)strHtuple (char*)

File name of the PostScript file.

Default: 'caltab.ps'"caltab.ps"
File extension: .ps

ExampleπŸ”—

(HDevelop)

* Create calibration plate with width = 80 cm.
gen_caltab( 7, 7, 0.1, 0.5, 'caltab.descr', 'caltab.ps')
(C++)
// Create calibration plate with width = 80 cm.
gen_caltab( 7, 7, 0.1, 0.5, "caltab.descr", "caltab.ps")\;

ResultπŸ”—

gen_caltabGenCaltab returns 2 (H_MSG_TRUE) if all parameter values are correct and both files have been written successfully. If necessary, an exception is raised.

Combinations with other operatorsπŸ”—

Combinations

Possible successors

read_cam_parReadCamPar, caltab_pointsCaltabPoints

Alternatives

create_caltabCreateCaltab

See also

find_caltabFindCaltab, find_marks_and_poseFindMarksAndPose, camera_calibrationCameraCalibration, disp_caltabDispCaltab, sim_caltabSimCaltab

ModuleπŸ”—

Foundation