Camera Targets
MetriCal supports a large variety of traditional camera calibration targets, as well as a few of our own design. You can even use multiple targets at once, without having to do much of anything! Learn how to use multiple targets at once here: Using Multiple Targets.
You can now purchase calibration targets directly from our online store. This store holds all the targets necessary to run through our calibration guides. If you are a company or facility that needs a more sophisticated target setup for automation or production line purposes, contact us at info@tangramvision.com.
That being said, you can always make your own! Find examples for AprilGrid, Markerboard, and Lidar targets in the MetriCal Premade Targets repository on GitLab.
- AprilGrid
- Markerboard
- SquareMarkers
- DotMarkers
- Checkerboard
AprilGrid
AprilGrids are patterned sets of Apriltags. They have contrasting squares in the corner of every tag; this provides feature detection algorithms more information to derive corner locations.
Download Object Space JSON: AprilGrid
| Field | Type | Description |
|---|---|---|
marker_dictionary | string | The marker dictionary used on this target. See Supported Marker Dictionaries below. |
marker_grid_width | float | Number of AprilTags / markers horizontally on the board |
marker_grid_height | float | Number of AprilTags / markers vertically on the board |
marker_length | float | The length of one edge of the AprilTags in the board, in meters |
tag_spacing | boolean | The space between the tags in fraction of the edge size [0.0, 1.0] |
marker_id_offset | integer | (Optional) Lowest marker ID present in the board. This will offset all expected marker values. Default is 0. |
Supported Marker Dictionaries
| Value | Description |
|---|---|
| "Apriltag16h5" | 4x4 bit Apriltag containing 20 markers. Minimum hamming distance between any two codes is 5. |
| "Apriltag25h9" | 5x5 bit Apriltag containing 35 markers. Minimum hamming distance between any two codes is 9. |
| "Apriltag36h11" | 6x6 bit Apriltag containing 587 markers. Minimum hamming distance between any two codes is 11. |
| "ApriltagKalibr" | 6x6 bit Apriltag containing 587 markers. Minimum hamming distance between any two codes is 11. Every marker has a border width of 2; this is the only main differentiator between Kalibr and other Apriltag types. |
Markerboard
Markerboards are similar to checkerboards, but contain a series of coded markers in the empty spaces of the checkerboard. These codes are most often in the form of April or ArUco tags, which allow for better identification and isolation of features.
Download Object Space JSON: Markerboard
| Field | Type | Description |
|---|---|---|
checker_length | float | The length of the side of a checker (a solid square), in meters |
corner_height | float | The number of inner corners on the board, counted vertically. This is one less than the number of columns on the board |
corner_width | float | The number of inner corners on the board, counted horizontally. This is one less than the number of rows on the board |
marker_dictionary | string | The marker dictionary used on this target. See Supported Marker Dictionaries below. |
marker_length | float | The length of the side of a marker, in meters |
marker_id_offset | integer | (Optional) Lowest marker ID present in the board. This will offset all expected marker values. Default is 0. |
initial_corner | string | (Optional) Valid values are "square" and "marker". Default is "marker". Used to counteract a breaking change to markerboards generated by newer versions of OpenCV. This option specifies if the origin corner of your board is populated with a solid black square or a marker. In boards generated by OpenCV >=4.6.0, the origin will always be a black square. In older versions, the origin can sometimes be a marker. |
Supported Marker Dictionaries
| Value | Description |
|---|---|
| "Aruco4x4_50" | 4x4 bit Aruco containing 50 markers. |
| "Aruco4x4_100" | 4x4 bit Aruco containing 100 markers. |
| "Aruco4x4_250" | 4x4 bit Aruco containing 250 markers. |
| "Aruco4x4_1000" | 4x4 bit Aruco containing 1000 markers. |
| "Aruco5x5_50" | 5x5 bit Aruco containing 50 markers. |
| "Aruco5x5_100" | 5x5 bit Aruco containing 100 markers. |
| "Aruco5x5_250" | 5x5 bit Aruco containing 250 markers. |
| "Aruco5x5_1000" | 5x5 bit Aruco containing 1000 markers. |
| "Aruco6x6_50" | 6x6 bit Aruco containing 50 markers. |
| "Aruco6x6_100" | 6x6 bit Aruco containing 100 markers. |
| "Aruco6x6_250" | 6x6 bit Aruco containing 250 markers. |
| "Aruco6x6_1000" | 6x6 bit Aruco containing 1000 markers. |
| "Aruco7x7_50" | 7x7 bit Aruco containing 50 markers. |
| "Aruco7x7_100" | 7x7 bit Aruco containing 100 markers. |
| "Aruco7x7_250" | 7x7 bit Aruco containing 250 markers. |
| "Aruco7x7_1000" | 7x7 bit Aruco containing 1000 markers. |
| "ArucoOriginal" | 5x5 bit Aruco containing the original generated marker library. |
| "Apriltag16h5" | 4x4 bit Apriltag containing 20 markers. Minimum hamming distance between any two codes is 5. |
| "Apriltag25h9" | 5x5 bit Apriltag containing 35 markers. Minimum hamming distance between any two codes is 9. |
| "Apriltag36h10" | 6x6 bit Apriltag containing 2320 markers. Minimum hamming distance between any two codes is 10. |
| "Apriltag36h11" | 6x6 bit Apriltag containing 587 markers. Minimum hamming distance between any two codes is 11. |
| "ApriltagKalibr" | 6x6 bit Apriltag containing 587 markers. Minimum hamming distance between any two codes is 11. Every marker has a border width of 2; this is the only main differentiator between Kalibr and other Apriltag types. |
SquareMarkers
"SquareMarkers" is a general catch-all for a collection of signalized markers, e.g. a calibration space made up of many unconnected ArUco or April tags.

| Field | Type | Description |
|---|---|---|
marker_dictionary | string | The marker dictionary used on this target. See Supported Marker Dictionaries below. |
marker_ids | list of integers | The marker IDs present in this set of SquareMarkers. |
Supported Marker Dictionaries
| Value | Description |
|---|---|
| "Aruco4x4_50" | 4x4 bit Aruco containing 50 markers. |
| "Aruco4x4_100" | 4x4 bit Aruco containing 100 markers. |
| "Aruco4x4_250" | 4x4 bit Aruco containing 250 markers. |
| "Aruco4x4_1000" | 4x4 bit Aruco containing 1000 markers. |
| "Aruco5x5_50" | 5x5 bit Aruco containing 50 markers. |
| "Aruco5x5_100" | 5x5 bit Aruco containing 100 markers. |
| "Aruco5x5_250" | 5x5 bit Aruco containing 250 markers. |
| "Aruco5x5_1000" | 5x5 bit Aruco containing 1000 markers. |
| "Aruco6x6_50" | 6x6 bit Aruco containing 50 markers. |
| "Aruco6x6_100" | 6x6 bit Aruco containing 100 markers. |
| "Aruco6x6_250" | 6x6 bit Aruco containing 250 markers. |
| "Aruco6x6_1000" | 6x6 bit Aruco containing 1000 markers. |
| "Aruco7x7_50" | 7x7 bit Aruco containing 50 markers. |
| "Aruco7x7_100" | 7x7 bit Aruco containing 100 markers. |
| "Aruco7x7_250" | 7x7 bit Aruco containing 250 markers. |
| "Aruco7x7_1000" | 7x7 bit Aruco containing 1000 markers. |
| "ArucoOriginal" | 5x5 bit Aruco containing the original generated marker library. |
| "Apriltag16h5" | 4x4 bit Apriltag containing 20 markers. Minimum hamming distance between any two codes is 5. |
| "Apriltag25h9" | 5x5 bit Apriltag containing 35 markers. Minimum hamming distance between any two codes is 9. |
| "Apriltag36h10" | 6x6 bit Apriltag containing 2320 markers. Minimum hamming distance between any two codes is 10. |
| "Apriltag36h11" | 6x6 bit Apriltag containing 587 markers. Minimum hamming distance between any two codes is 11. |
| "ApriltagKalibr" | 6x6 bit Apriltag containing 587 markers. Minimum hamming distance between any two codes is 11. Every marker has a border width of 2; this is the only main differentiator between Kalibr and other Apriltag types. |
DotMarkers
This target type is still under development. Please check back later for more information.
DotMarkers are the same as SquareMarkers, but all of the black and white squares within the tags are replaced with circles! In addition to being a fun name, DotMarkers allow MetriCal to use circles while also preserving the code information of Aruco or April tags.
Download Object Space JSON: DotMarkers
| Field | Type | Description |
|---|---|---|
marker_dictionary | string | The marker dictionary used on this target. See Supported Marker Dictionaries below. |
marker_ids | list of integers | The marker IDs present in this set of SquareMarkers. |
Supported Marker Dictionaries
| Value | Description |
|---|---|
| "Aruco4x4_50" | 4x4 bit Aruco containing 50 markers. |
| "Aruco4x4_100" | 4x4 bit Aruco containing 100 markers. |
| "Aruco4x4_250" | 4x4 bit Aruco containing 250 markers. |
| "Aruco4x4_1000" | 4x4 bit Aruco containing 1000 markers. |
| "Aruco5x5_50" | 5x5 bit Aruco containing 50 markers. |
| "Aruco5x5_100" | 5x5 bit Aruco containing 100 markers. |
| "Aruco5x5_250" | 5x5 bit Aruco containing 250 markers. |
| "Aruco5x5_1000" | 5x5 bit Aruco containing 1000 markers. |
| "Aruco6x6_50" | 6x6 bit Aruco containing 50 markers. |
| "Aruco6x6_100" | 6x6 bit Aruco containing 100 markers. |
| "Aruco6x6_250" | 6x6 bit Aruco containing 250 markers. |
| "Aruco6x6_1000" | 6x6 bit Aruco containing 1000 markers. |
| "Aruco7x7_50" | 7x7 bit Aruco containing 50 markers. |
| "Aruco7x7_100" | 7x7 bit Aruco containing 100 markers. |
| "Aruco7x7_250" | 7x7 bit Aruco containing 250 markers. |
| "Aruco7x7_1000" | 7x7 bit Aruco containing 1000 markers. |
| "ArucoOriginal" | 5x5 bit Aruco containing the original generated marker library. |
Checkerboard
While MetriCal supports checkerboards, it is important to note some limitations:
- Points on the checkerboard are ambiguous. No calibration system can reliably tell the difference between a checkerboard rotated 180° and one that is not rotated at all. The same applies between rotations of 90° and 270°. This ambiguity means that MetriCal cannot reliably differentiate extrinsics, which causes projective compensations.
- The entire checkerboard needs to be visible in the field-of-view of the camera. With coded targets or asymmetric patterns, MetriCal can still identify key features without the full target in view.
We recommend using coded detectors like the Markerboard whenever possible. This allows MetriCal to be more flexible to different data collection practices, and reduces the burden on you to keep the entire object space in frame at all times.
Anyone who has ever tried their hand at calibration is familiar with the checkerboard. This is a flat, contrasting pattern of squares with known dimensionality. It's known for its ease of creation and flexibility in use.
Download Object Space JSON: Checkerboard
| Field | Type | Description |
|---|---|---|
checker_length | float | The length of the side of a checker (a solid square), in meters |
corner_height | float | The number of inner corners on the board, counted vertically. This is one less than the number of columns on the board |
corner_width | float | The number of inner corners on the board, counted horizontally. This is one less than the number of rows on the board |