calib-targets

Fast, robust calibration target detection in Rust: chessboard, ChArUco, ArUco/AprilTag dictionaries, and marker boards.
Highlights
- Shared
TargetDetectionoutput across detectors for consistent downstream processing. - End-to-end helpers (
calib_targets::detect) that run ChESS corner detection for you (featureimage, enabled by default). - Low-level detector crates are re-exported when you need custom pipelines.
Quickstart (chessboard)
use detect;
use ChessboardParams;
use ImageReader;
What you get back
All detectors produce a TargetDetection (returned directly for chessboards and embedded in higher-level result structs elsewhere). Each LabeledCorner includes pixel position, optional grid coordinates, optional logical id, optional target-space position, and a detector-specific score.
Supported targets
- Chessboard:
detect::detect_chessboardorchessboard::ChessboardDetector. - ChArUco:
detect::detect_charucoorcharuco::CharucoDetector. - Marker boards:
detect::detect_marker_boardormarker::MarkerBoardDetector. - ArUco/AprilTag dictionaries and decoding via
aruco.
Features
image(default): enablescalib_targets::detecthelpers that useimage::GrayImageandchess-corners.tracing: enables tracing output across the workspace crates.
Examples (repo)
Python bindings
Python bindings are provided via crates/calib-targets-py (module name
calib_targets). See crates/calib-targets-py/README.md for setup.
Notes:
- Python config accepts typed params classes or dict overrides (partial dicts are OK).
detect_charucorequiresparamsand the board lives inparams.board.target_positionis populated only when a board layout includes a valid cell size and alignment succeeds (for marker boards, setparams.layout.cell_sizeorparams["layout"]["cell_size"]).
Crate map
calib_targets::core– core types and homographies.calib_targets::chessboard– chessboard detection.calib_targets::aruco– ArUco/AprilTag dictionaries and decoding.calib_targets::charuco– ChArUco alignment and IDs.calib_targets::marker– checkerboard + circle marker boards.