# ArUco

> Source: https://docs.barcoder.ai/docs/standards/aruco
> research date 2026-06-03 · extracted at 2026-10-03
> Publisher: Barcoder — encyclopedia of QR, barcode and payment-code standards

Specifications:
- [OpenCV: Detection of ArUco Markers](https://docs.opencv.org/4.x/d5/dae/tutorial_aruco_detection.html)
- [Automatic generation and detection of highly reliable fiducial markers under occlusion (Pattern Recognition, 2014)](https://www.sciencedirect.com/science/article/abs/pii/S0031320314000235)

## Overview

ArUco markers are synthetic **fiducial markers** designed for camera pose estimation in computer-vision applications such as augmented reality and robot localization, not for carrying arbitrary data like a retail barcode <sup>[2][2]</sup>. Each marker is a binary square: a wide black border surrounding an inner binary matrix <sup>[1][1]</sup>. The system's purpose is geometric: a single marker provides four corner correspondences, which is enough to recover the 6-DoF camera pose relative to the marker given the camera's intrinsic parameters <sup>[1][1]</sup>. The marker's encoded bits carry only a small identifier (an index into a dictionary), so ArUco trades data capacity for fast, robust detection and accurate localization <sup>[1][1]</sup>.

The name "ArUco" stands for **Augmented Reality University of Córdoba**, the institution in Spain where the system originated <sup>[2][2]</sup>.

## History

ArUco was introduced in 2014 by Sergio Garrido-Jurado, Rafael Muñoz-Salinas, Francisco José Madrid-Cuevas and Manuel J. Marín-Jiménez of the University of Córdoba, in the paper *"Automatic generation and detection of highly reliable fiducial markers under occlusion"*, published in *Pattern Recognition*, vol. 47, pp. 2280–2292 <sup>[2][2]</sup>. The paper presented a fiducial system aimed specifically at camera pose estimation, with three core contributions: an algorithm to generate configurable marker dictionaries that maximize inter-marker distance and the number of bit transitions; a method to automatically detect markers and correct bit errors; and a method to handle occlusion in augmented-reality use <sup>[2][2]</sup>. The work has been heavily cited (on the order of 2,300+ citations) and became one of the most widely used square-marker systems in robotics and AR <sup>[2][2]</sup>.

ArUco was subsequently integrated into OpenCV. It first shipped as the contributed `aruco` module in `opencv_contrib`, and as the module matured it was moved into the main OpenCV distribution under the `objdetect` module <sup>[7][7]</sup>.

## Technical specification

**Marker structure.** An ArUco marker is a square with a wide black outer border and an inner region of black/white cells encoding a binary matrix <sup>[1][1]</sup>. The black border facilitates fast detection in the image, while the binary codification carries the identifier and enables error detection and correction <sup>[1][1]</sup>.

**Dictionaries.** A dictionary is the set of markers considered for a given application <sup>[1][1]</sup>. OpenCV ships predefined dictionaries parameterized by two numbers — the inner matrix size in bits and the dictionary size (number of distinct markers). Marker sizes are 4×4, 5×5, 6×6 and 7×7 (so a 4×4 marker carries 16 bits), and standard dictionary sizes are 50, 100, 250 or 1000 markers <sup>[1][1]</sup>. The marker **ID** is not the binary-to-decimal value of the matrix; it is the marker's index within its dictionary <sup>[1][1]</sup>.

**Error correction / inter-marker distance.** Robustness derives from the minimum Hamming distance between codes in a dictionary (the inter-marker distance). Smaller dictionary sizes and larger marker sizes increase the inter-marker distance, allowing more bit errors to be detected and corrected; larger dictionaries or smaller markers reduce it <sup>[1][1]</sup>. The error-correction capability is configurable as a fraction of the dictionary's theoretical maximum <sup>[1][1]</sup>.

**Detection pipeline.** Detection proceeds in two stages <sup>[1][1]</sup>:
1. *Candidate detection* — adaptive thresholding segments the image, contours are extracted, and non-convex / non-square / wrongly sized candidates are filtered out.
2. *Identification* — each candidate is rectified by perspective transform, binarized (Otsu), divided into a cell grid matching the marker size, and each cell's bits are read; the resulting code is matched against the dictionary with error correction.

**Pose recovery.** With a calibrated camera (camera matrix + distortion coefficients) and the known 3D coordinates of the marker corners, the pose is recovered by solving the Perspective-n-Point problem via `solvePnP()` <sup>[1][1]</sup>. By default the marker coordinate frame sits at the marker centre (optionally the top-left corner) with the Z axis pointing out of the marker plane <sup>[1][1]</sup>.

**Boards.** Multiple markers can be combined into a *board* of known geometry; using many markers at once increases the number of corner correspondences and improves pose accuracy and robustness to partial occlusion <sup>[1][1]</sup>.

## Use cases

- **Camera pose estimation / augmented reality** — the original target application: overlaying virtual content registered to a printed marker <sup>[2][2]</sup>.
- **Robot localization and navigation** — markers placed in the environment give a robot fixed references of known pose <sup>[2][2]</sup>.
- **Camera calibration** — ArUco boards and the related ChArUco (chessboard + ArUco) targets are used to estimate camera intrinsics and extrinsics within OpenCV <sup>[1][1]</sup>.
- **Robustness under occlusion** — a stated design goal, making ArUco suitable for AR scenes where markers are partly hidden <sup>[2][2]</sup>.

## Implementations

- **OpenCV `objdetect` (ArUco)** — C++ (with Python/Java bindings); the canonical implementation, providing dictionary generation, detection, board/ChArUco support and pose estimation. Distributed in the main OpenCV library (Apache-2.0); the wider OpenCV repository has ~87.8k GitHub stars and was actively released through 2025 (OpenCV 4.13.0, Dec 2025) <sup>[7][7]</sup>.
- **`opencv_contrib`** — C++ (~10.1k stars, Apache-2.0, active 2025); historically hosted the experimental `aruco` module before it graduated into core `objdetect` <sup>[6][6]</sup>.

## Comparison

**ArUco vs AprilTag.** Both are square black-bordered binary fiducials for 6-DoF pose estimation, and the two ecosystems have converged — the AprilTag reference library can natively detect ArUco families <sup>[5][5]</sup>. ArUco originates from the AR/OpenCV world and ships with a flexible family of dictionaries (4×4–7×7, up to 1000 markers) tuned for inter-marker distance and bit transitions <sup>[1][1], [2][2]</sup>. AprilTag originates from robotics and emphasizes very low false-positive rates and long-range detection with small payloads <sup>[5][5]</sup>.

**Fiducials vs data barcodes (QR / Data Matrix).** The key difference is intent. QR Code and Data Matrix are *data carriers* — they pack hundreds or thousands of bits of arbitrary information. ArUco (like AprilTag) is a *fiducial* — it encodes only a small dictionary index and is engineered so that the marker can be found, identified, and geometrically localized robustly from a single image, even small in frame, under occlusion, motion blur or oblique viewing <sup>[2][2]</sup>. Where a QR scanner cares about decoding a payload, an ArUco detector cares about precisely locating four corners to compute camera pose <sup>[1][1]</sup>.

## Fun facts

- The acronym ArUco is a backronym for **A**ugmented **R**eality **U**niversity of **Co**rdoba, the lab in Spain where it was born <sup>[2][2]</sup>.
- ArUco markers are reused as building blocks elsewhere: OpenCV's **ChArUco** calibration target embeds ArUco markers inside a chessboard, and AprilTag's detector can read ArUco families directly <sup>[1][1], [5][5]</sup>.

## Status

ArUco is actively maintained as part of mainstream OpenCV. Having migrated from `opencv_contrib` into the core `objdetect` module, it ships with every recent OpenCV release (4.13.0 was released in December 2025) and remains one of the most widely deployed square-marker systems in AR and robotics <sup>[7][7], [6][6]</sup>.

## Sources

[1]: https://docs.opencv.org/4.x/d5/dae/tutorial_aruco_detection.html
[2]: https://www.sciencedirect.com/science/article/abs/pii/S0031320314000235
[5]: https://github.com/AprilRobotics/apriltag
[6]: https://github.com/opencv/opencv_contrib
[7]: https://github.com/opencv/opencv

[1] [OpenCV: Detection of ArUco Markers](https://docs.opencv.org/4.x/d5/dae/tutorial_aruco_detection.html) — OpenCV documentation, 2024
[2] [Automatic generation and detection of highly reliable fiducial markers under occlusion](https://www.sciencedirect.com/science/article/abs/pii/S0031320314000235) — Garrido-Jurado et al., Pattern Recognition vol. 47, 2014
[5] [AprilRobotics/apriltag](https://github.com/AprilRobotics/apriltag) — APRIL Robotics Lab, GitHub, 2025
[6] [opencv/opencv_contrib](https://github.com/opencv/opencv_contrib) — OpenCV, GitHub, 2025
[7] [opencv/opencv](https://github.com/opencv/opencv) — OpenCV, GitHub, 2025

## Deployments

_No country reports mention this standard by name._

## Regions / aggregations not mapped to a single country

- Universal
