Skip to main content

Module radon_peak

Module radon_peak 

Source
Expand description

Local Radon-peak subpixel refiner.

This is a per-candidate adaptation of the localized Radon transform introduced in Duda & Frese 2018, “Accurate Detection and Localization of Checkerboard Corners for Calibration”. The original paper proposes a whole-image detector in which the response is evaluated on every pixel of a 2× supersampled image, post-blurred with a small box filter, and the subpixel corner is recovered by a Gaussian peak fit. The refiner implemented here performs the same three steps, but only inside a small region of interest around an existing ChESS candidate.

§Algorithm

For each seed (cx, cy):

  1. Evaluate the localized Radon response (max − min)² over four discrete ray angles α ∈ {0, π/4, π/2, 3π/4} on a dense grid of samples around the seed. Ray integration and response-grid sampling both use step 1 / image_upsample physical pixels, equivalent to operating on a 2×-supersampled image (paper §3.1 step 2).
  2. Smooth the response map with a (2·response_blur_radius+1)² box filter (paper §3.1 step 7, default 3×3).
  3. Locate the discrete argmax. Reject border hits.
  4. Fit a parabola in x and y through the argmax and its two neighbours along each axis. By default the fit is performed on log(response) (“Gaussian peak fit”, paper §3.1 step 8), which is robust to mild plateauing of the raw response.

The returned offset is in the seed’s pixel frame; callers do not need to know about the response-grid density.

§Status

The refiner is expected to recover sub-0.1 px accuracy on clean chessboard patches with the default configuration. Noise-tolerance follows the paper’s empirical behaviour — smoothing of the response map is what makes the peak fit stable rather than the ray integration alone.

Re-exports§

pub use crate::detect::radon::primitives::PeakFitMode;

Structs§

RadonPeakConfig
Configuration for RadonPeakRefiner.
RadonPeakRefiner
Subpixel refiner built on a local Duda-Frese-style Radon response.