Standards/aruco
ArUco
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 [2]. Each marker is a binary square: a wide black border surrounding an inner binary matrix [1]. 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 [1]. 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 [1].
The name "ArUco" stands for Augmented Reality University of Córdoba, the institution in Spain where the system originated [2].
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 [2]. 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 [2]. 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 [2].
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 [7].
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 [1]. The black border facilitates fast detection in the image, while the binary codification carries the identifier and enables error detection and correction [1].
Dictionaries. A dictionary is the set of markers considered for a given application [1]. 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 [1]. The marker ID is not the binary-to-decimal value of the matrix; it is the marker's index within its dictionary [1].
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 [1]. The error-correction capability is configurable as a fraction of the dictionary's theoretical maximum [1].
Detection pipeline. Detection proceeds in two stages [1]:
- Candidate detection — adaptive thresholding segments the image, contours are extracted, and non-convex / non-square / wrongly sized candidates are filtered out.
- 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() [1]. 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 [1].
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 [1].
Use cases
- Camera pose estimation / augmented reality — the original target application: overlaying virtual content registered to a printed marker [2].
- Robot localization and navigation — markers placed in the environment give a robot fixed references of known pose [2].
- Camera calibration — ArUco boards and the related ChArUco (chessboard + ArUco) targets are used to estimate camera intrinsics and extrinsics within OpenCV [1].
- Robustness under occlusion — a stated design goal, making ArUco suitable for AR scenes where markers are partly hidden [2].
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) [7]. opencv_contrib— C++ (~10.1k stars, Apache-2.0, active 2025); historically hosted the experimentalarucomodule before it graduated into coreobjdetect[6].
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 [5]. 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 [1, 2]. AprilTag originates from robotics and emphasizes very low false-positive rates and long-range detection with small payloads [5].
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 [2]. Where a QR scanner cares about decoding a payload, an ArUco detector cares about precisely locating four corners to compute camera pose [1].
Fun facts
- The acronym ArUco is a backronym for Augmented Reality University of Cordoba, the lab in Spain where it was born [2].
- 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 [1, 5].
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 [7, 6].
Sources
1 OpenCV: Detection of ArUco Markers — OpenCV documentation, 2024 2 Automatic generation and detection of highly reliable fiducial markers under occlusion — Garrido-Jurado et al., Pattern Recognition vol. 47, 2014 5 AprilRobotics/apriltag — APRIL Robotics Lab, GitHub, 2025 6 opencv/opencv_contrib — OpenCV, GitHub, 2025 7 opencv/opencv — OpenCV, GitHub, 2025
Deployments
No country reports mention this standard by name.
Regions / aggregations not mapped to a single country
- Universal