Skip to main content

Python bindings for the fast ChESS chessboard corner detector (Rust backend)

Project description

chess_corners (Python)

Python bindings for the chess-corners detector.

Quick start

import numpy as np
import chess_corners

img = np.zeros((128, 128), dtype=np.uint8)

cfg = chess_corners.ChessConfig()
cfg.threshold_rel = 0.2
cfg.min_cluster_size = 1

corners = chess_corners.find_chess_corners(img, cfg)
print(corners.shape, corners.dtype)

You can also configure the detector via nested config objects:

cfg = chess_corners.ChessConfig()
cfg.params.threshold_rel = 0.2
cfg.multiscale.pyramid.num_levels = 2

What find_chess_corners returns

find_chess_corners(image, cfg=None) returns a NumPy float32 array of shape (N, 4) with columns:

  1. x – subpixel x coordinate (pixels, image space)
  2. y – subpixel y coordinate (pixels, image space)
  3. response – ChESS response strength at the corner
  4. orientation – local grid axis orientation in radians, in [0, pi)

The rows are sorted deterministically by the binding: response (descending), then x, then y.

Input requirements:

  • image must be a 2D uint8 NumPy array with shape (H, W)
  • it must be C-contiguous (non-contiguous arrays raise ValueError)

ChessConfig parameters

ChessConfig mirrors the most important Rust settings. Defaults match the Rust ChessConfig::default().

Response / detector parameters (cfg.*):

  • use_radius10 (bool, default False)
    • Use the larger ring radius (r=10) instead of r=5 for response computation.
  • descriptor_use_radius10 (Optional[bool], default None)
    • Override the descriptor sampling ring radius; when None, uses use_radius10.
  • threshold_rel (float, default 0.2)
    • Relative threshold as a fraction of the max response.
  • threshold_abs (Optional[float], default None)
    • Absolute threshold; when set, it overrides threshold_rel.
  • nms_radius (int, default 2)
    • Non-maximum suppression radius in pixels.
  • min_cluster_size (int, default 2)
    • Minimum count of positive neighbors in the NMS window to accept a corner.

Multiscale parameters (cfg.*):

  • pyramid_num_levels (int, default 3)
    • Number of pyramid levels (including base). Set to 1 for single-scale.
  • pyramid_min_size (int, default 128)
    • Minimum dimension to keep building the pyramid.
  • refinement_radius (int, default 3)
    • Coarse-level ROI radius used for coarse-to-fine refinement.
  • merge_radius (float, default 3.0)
    • Merge near-duplicate refined corners within this radius (pixels).

Full configuration structs

The Python bindings expose all configuration structs directly. You can use the nested API for clarity:

  • ChessConfig.paramsChessParams
  • ChessConfig.multiscaleCoarseToFineParams
  • CoarseToFineParams.pyramidPyramidParams

All fields listed above are available in the nested structs as well.

Classical refiners

Select the classic refiner via ChessParams.refiner:

cfg = chess_corners.ChessConfig()
cfg.params.refiner = chess_corners.RefinerKind.forstner(
    chess_corners.ForstnerConfig()
)

Available configs:

  • CenterOfMassConfig
  • ForstnerConfig
  • SaddlePointConfig

ML refiner

If the bindings are built with the ml-refiner feature, an ML-backed refiner is available via find_chess_corners_with_ml:

cfg = chess_corners.ChessConfig()
corners = chess_corners.find_chess_corners_with_ml(img, cfg)

The ML refiner uses built-in defaults and ignores the model’s confidence output in the current version.

Development

maturin develop -m crates/chess-corners-py/pyproject.toml

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chess_corners-0.3.1.tar.gz (785.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

chess_corners-0.3.1-cp310-abi3-win_amd64.whl (5.9 MB view details)

Uploaded CPython 3.10+Windows x86-64

chess_corners-0.3.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.8 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

chess_corners-0.3.1-cp310-abi3-macosx_11_0_arm64.whl (5.7 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

Details for the file chess_corners-0.3.1.tar.gz.

File metadata

  • Download URL: chess_corners-0.3.1.tar.gz
  • Upload date:
  • Size: 785.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for chess_corners-0.3.1.tar.gz
Algorithm Hash digest
SHA256 c14727a957f70ff704b838937f2a8bf669a81df88636f1e73355ab28837cad1b
MD5 234ce1a751089b44972c29166dfc7273
BLAKE2b-256 ae9db20b1cd4aa62020e5cbf2c71e82bad9e7e92c6c5095a4108085ac0f3864d

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_corners-0.3.1.tar.gz:

Publisher: release-pypi.yml on VitalyVorobyev/chess-corners-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chess_corners-0.3.1-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for chess_corners-0.3.1-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 f48852d7aad9d16fb1b59b099506d4bb814a3a5f57593a575cc549bfae2960a1
MD5 af42a18077a6839a007a6ccc66864e3c
BLAKE2b-256 85426cb5d808e03aedef3b8c50e0a2ef3daabef60da8fae1286703dc652ca7c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_corners-0.3.1-cp310-abi3-win_amd64.whl:

Publisher: release-pypi.yml on VitalyVorobyev/chess-corners-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chess_corners-0.3.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for chess_corners-0.3.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b7b9291b73d13e295227d2701a0ce7edf16f7d8d14469201fb0cbd9ba5bdc245
MD5 8497c1b89d3c2daba2ce50d771b141a8
BLAKE2b-256 9d778f526272b5273b76622005a73c4a79ab33dd4df173ea1e32d583f1765759

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_corners-0.3.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release-pypi.yml on VitalyVorobyev/chess-corners-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chess_corners-0.3.1-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for chess_corners-0.3.1-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5726ca7fbefd804e4e5c54646264163588160edcc2086cbe1ccaf3135945707f
MD5 9c008eddad9d1a75d4fcf05d8fb087ce
BLAKE2b-256 cd230d976d07fb5192a9f375486069af7b3901fbb593cdd6026616474dfd8972

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_corners-0.3.1-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: release-pypi.yml on VitalyVorobyev/chess-corners-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page