Standards/stag
STag
Overview
STag is a square fiducial marker system for pose estimation whose design goal is pose stability — minimizing the frame-to-frame jitter that imaging noise and lighting changes induce in recovered pose [1]. A STag marker has an outer square border plus an inner circular border; the square is used for detection and an initial homography, and the circle (which appears as an ellipse under perspective) is then used to refine that homography, yielding more repeatable corners and steadier pose than border-only systems like aruco [1, 2]. As with apriltag, it carries only a coded ID, not a data payload.
History
STag was introduced by Burak Benligiray, Cihan Topal and Cüneyt Akınlar (Eskişehir Technical / Anadolu University, Turkey). The paper "STag: A Stable Fiducial Marker System" was first posted to arXiv on 19 July 2017 (arXiv:1707.06292), revised in 2019, and published in the journal Image and Vision Computing [1, 2]. The reference implementation has been maintained on GitHub since release [3].
Technical specification
Marker structure. A STag marker has two nested borders: an outer square border for detection and homography estimation, and an inner circular border for refinement [1]. The interior carries a binary codeword (48-bit lexicographic codes) [2].
Detection pipeline. Edge segments are extracted with the parameter-free EDPF (Edge Drawing) algorithm — the dominant cost (>80% of runtime) — then linear borders are found with EDLines and corners taken from line intersections [2]. The outer quad yields an initial homography.
Homography refinement. The key contribution: the circular inner border projects to an ellipse, and STag optimizes the initial homography by a single conic correspondence — minimizing the deviation of the back-projected ellipse from the expected circle (center and radii) via Nelder–Mead — which markedly improves marker-center localization and pose stability at all viewing angles [1, 2].
Marker library. Lexicographic libraries of 48-bit codewords are built in Hamming-distance groups: HD11 = 22,309 markers, HD15 = 766 markers, HD23 = 6 markers, trading library size against error-correction strength [2].
Reported robustness. On an indoor dataset, STag HD11 produced 7 false positives from 57,893 candidates versus ArUco 7×7's 2,349 from 317,741; STag detected reliably to ~80° viewing angle with only ~4 failures per 1000 frames at extreme angles (vs ArUco's hundreds), and showed substantially lower rotation jitter; per-frame processing was ~18 ms (vs ArUco ~10 ms, RUNE-Tag ~580 ms) [2].
Use cases
- Robotics and SLAM where steady, low-jitter pose is critical [1].
- Augmented reality registration with reduced visible wobble [1].
- Robot localization — later work (e.g. an "Enhanced STag" study) applies it to flexible robot localization [2].
Implementations
bbenligiray/stag— C; the official reference detector from the paper authors, including the marker library generators (~223 stars, last active 2023) [3]. Ports/wrappers (Python, ROS) exist in the wider community.
Comparison
Versus aruco: STag's inner-circle homography refinement gives markedly lower pose jitter and higher angular tolerance — in the authors' tests far fewer false positives and detection failures than ArUco at steep angles — at a modest speed cost (~18 ms vs ~10 ms) [2]. Versus apriltag: both are coded square fiducials with strong error correction; STag's distinguishing feature is the explicit stability/refinement step rather than raw detection speed. Versus RUNE-Tag (a ring-of-dots fiducial), STag is ~30× faster while remaining stable [2]. STag's largest library (HD11, 22,309 IDs) sits between AprilTag's mid families and the very large ID spaces of topotag.
Status
Active research-grade open source. The reference C implementation is maintained on GitHub and continues to be used and extended in robotics literature as of the mid-2020s [3].
Sources
- STag: A Stable Fiducial Marker System (abstract) — Benligiray, Topal & Akınlar, arXiv, 2017
- STag: A Stable Fiducial Marker System (full text) — ar5iv / Image and Vision Computing, 2019
- bbenligiray/stag — GitHub, accessed 2026
Deployments
No country reports mention this standard by name.
Regions / aggregations not mapped to a single country
- Universal