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.4.2.tar.gz (794.7 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.4.2-cp310-abi3-win_amd64.whl (5.9 MB view details)

Uploaded CPython 3.10+Windows x86-64

chess_corners-0.4.2-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.4.2-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.4.2.tar.gz.

File metadata

  • Download URL: chess_corners-0.4.2.tar.gz
  • Upload date:
  • Size: 794.7 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.4.2.tar.gz
Algorithm Hash digest
SHA256 3ea09d11fdc407df3b305092c293db3f693ccdd1507f82e9d3394c293090a2c7
MD5 e437369fdffbaa3fdb27b2278db012d5
BLAKE2b-256 1dc91616ce458636e5b026418de3b595967ecfd5890d8e3c0f9156eefc8c3c9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_corners-0.4.2.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.4.2-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for chess_corners-0.4.2-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 4f5512eda203f3b53c352bb36a08efa5e7377dbe663a01e8de75f98df73248d6
MD5 0f343aae3958180216e89316ab3dc141
BLAKE2b-256 819b51349d30d1d5519c8962026a87b15a28a3e82d7b120e2fe6aa6c17ec69ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_corners-0.4.2-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.4.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for chess_corners-0.4.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 121867019d31c6d3d4f2a35a716ca73df3795627cfe79cd5103147788f7b58a9
MD5 fa624a47127ae5de496af6833ae9e405
BLAKE2b-256 a850e3005e5089a27b2d99bb5baa36a0022fbf0e688031b1bdb895b4d63ea90b

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_corners-0.4.2-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.4.2-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for chess_corners-0.4.2-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f9ea67e56f2fd342095255c8d546abff08198fde6f5c63a793a071ab01a22ba8
MD5 69351eb4ce06ccaf417bf904d82768f3
BLAKE2b-256 cfa8a2776e261b1c332ede4667d72fa04f4282874464b5ed6fabde7702a0965a

See more details on using hashes here.

Provenance

The following attestation bundles were made for chess_corners-0.4.2-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