Length of unit used in checkerboard patterns for camera calibration

Viewed 50

When we consturct the 3D coordinates of the checkerboard corners, does the unit of length matter?

I have read multiple articles and example codes for camera calibration with OpenCV. To represent the 3D coordinates on a checkerboard, some use centimeter as a unit, some use meter as a unit, some simply consider the length of one checkerboard box as 1 without any unit of length involved.

So how is the length of unit determined when we calibrate a camera?

4 Answers

It is up to you to decide whether to treat the length of 1 meter as {1m, 100cm, 1000mm, etc.}. All you have to do is decide based on what kind of unit system the program should operate on.

For example, if you want to estimate the height of a person from a camera image, you could do the calculation using nm(:nanometer) as the unit of length, but that would be silly. You may use different units.

If you are doing intrinsic calibration (focal length, lens distortion), the scale doesn't matter at all because your single camera can't see it anyway and the pose of the board itself is of no interest (the intrinsics are).

The scale does matter if you are doing extrinsic calibration (multiple cameras), pose estimation (of the board), or any kind of Structure from Motion.

You can choose your unit of length freely. It will be the base unit for everything, i.e. determines how to interpret any values.

*Scale meaning both values (1, 1000, 25.4) and units (m, mm, inches, parsecs).

The unit is irrelevant. You choose it and keep all measurements in that unit. The calibration system does not have to know.


If you want to mix several units (say sometimes work in chessboard squares, sometimes in inches) it is your duty to perform the conversions. (You might perform several calibrations in the different units, but that would be foolish.)

Without a priori knowledge of the world, there is a fundamental world scale ambiguity in monocular camera pose estimation and SLAM. However if the checkerboard is a known physical reference object, then you can set the scale accordingly that way.

Related