← calib-targets-rs

Performance

Where the milliseconds go, measured per image on public sample boards — not generic aggregates. Cost is regime-dependent: corner detection dominates sparse boards, the owned grid build and decode take over on dense ones.

Per-image stage breakdown

Per-stage p50 from full_stage_timing, which runs the complete detector on each public image — ChArUco (corner detection → grid build → marker decode) for the two ArUco-marked boards, a plain chessboard (corner detection → grid build) for the marker-free board, and a PuzzleBoard (corner detection → grid build → edge-dot 501×501 master decode) for the self-identifying synthetic board, whose decode sweep dominates its cost. Corners are detected once and reused, so the grid/decode bars never re-count corner detection.
corner detection (external) grid build (owned) decode (owned — ArUco markers or PuzzleBoard edge dots)

End-to-end latency — public frames

Framep50 (ms)

OpenCV baseline — recall & runtime