| Crates.io | chess-corners-core |
| lib.rs | chess-corners-core |
| version | 0.3.1 |
| created_at | 2025-12-06 18:40:31.283512+00 |
| updated_at | 2026-01-01 16:20:55.890698+00 |
| description | Core ChESS (Chess-board Extraction by Subtraction and Summation) response + corner candidates |
| homepage | https://vitalyvorobyev.github.io/chess-corners-rs |
| repository | https://github.com/VitalyVorobyev/chess-corners-rs |
| max_upload_size | |
| id | 1970579 |
| size | 95,338 |
Core primitives for computing ChESS responses and extracting subpixel chessboard corners.
This crate implements:
ring module) at radii 5 and 10.response module).detect + refine modules).descriptor module).Feature flags:
std (default) – use the Rust standard library; disabling this yields no_std + alloc.rayon – parallelize response computation over image rows.simd – enable portable-SIMD acceleration of the response kernel (nightly only).tracing – emit structured spans around response and detector code for profiling.Basic usage:
use chess_corners_core::{detect::find_corners_u8, ChessParams, RefinerKind};
fn detect(img: &[u8], w: usize, h: usize) {
let mut params = ChessParams::default();
// Default = center-of-mass refinement on the response map.
let corners = find_corners_u8(img, w, h, ¶ms);
println!("found {} corners", corners.len());
// Opt into Förstner or saddle-point refiners on the image intensities:
params.refiner = RefinerKind::Forstner(Default::default());
let refined = find_corners_u8(img, w, h, ¶ms);
println!("found {} corners with Förstner", refined.len());
}
For a higher-level, image-friendly API (including multiscale detection and an optional CLI),
see the chess-corners crate in this workspace.