← 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
OpenCV baseline — recall & runtime