Skip to main content

Crate chess_corners_core

Crate chess_corners_core 

Source
Expand description

Core primitives for computing ChESS responses and extracting subpixel corners.

§Overview

This crate exposes two main building blocks:

  • response – dense ChESS response computation on 8‑bit grayscale images.
  • detect + refine – thresholding, non‑maximum suppression (NMS), and pluggable subpixel refinement (center-of-mass, Förstner, saddle-point).

The response is based on a 16‑sample ring (see ring) and is intended for chessboard‑like corner detection, as described in the ChESS paper (“Chess‑board Extraction by Subtraction and Summation”).

§Features

  • std (default) – enables use of the Rust standard library. When disabled, the crate is no_std + alloc.
  • rayon – parallelizes the dense response computation over image rows using the rayon crate. This does not change numerical results, only performance on multi‑core machines.
  • simd – enables a SIMD‑accelerated inner loop for the response computation, based on portable_simd. This feature currently requires a nightly compiler and is intended as a performance optimization; the scalar path remains the reference implementation.
  • tracing – emits structured spans around response and detector functions using the tracing ecosystem, useful for profiling and diagnostics.

Feature combinations:

  • no features / std only – single‑threaded scalar implementation.
  • rayon – same scalar math, but rows are processed in parallel.
  • simd – single‑threaded, but the inner ring computation is vectorized.
  • rayon + simd – rows are processed in parallel and each row uses the SIMD‑accelerated inner loop.

The detector in detect is independent of rayon/simd, and tracing only adds observability; none of these features change the numerical results, only performance and instrumentation.

The ChESS idea is proposed in the papaer Bennett, Lasenby, ChESS: A Fast and Accurate Chessboard Corner Detector, CVIU 2014

Re-exports§

pub use crate::descriptor::CornerDescriptor;
pub use crate::refine::CenterOfMassConfig;
pub use crate::refine::CenterOfMassRefiner;
pub use crate::refine::CornerRefiner;
pub use crate::refine::ForstnerConfig;
pub use crate::refine::ForstnerRefiner;
pub use crate::refine::RefineContext;
pub use crate::refine::RefineResult;
pub use crate::refine::RefineStatus;
pub use crate::refine::Refiner;
pub use crate::refine::RefinerKind;
pub use crate::refine::SaddlePointConfig;
pub use crate::refine::SaddlePointRefiner;
pub use imageview::ImageView;

Modules§

descriptor
Corner descriptors and helpers for chessboard detection.
detect
Corner detection utilities built on top of the dense ChESS response map.
imageview
refine
Pluggable subpixel refinement backends for ChESS corners.
response
Dense ChESS response computation for 8-bit grayscale inputs.
ring
Canonical 16-sample rings used by the ChESS detector.

Structs§

ChessParams
Tunable parameters for the ChESS response computation and corner detection.
ResponseMap
Dense response map in row-major layout.