#[non_exhaustive]pub struct RadonConfig {
pub ray_radius: u32,
pub image_upsample: u32,
pub response_blur_radius: u32,
pub peak_fit: PeakFitMode,
}Expand description
Configuration for the whole-image Radon detector branch of
crate::DetectionStrategy.
All radii and counts are in working-resolution pixels (i.e.
after image_upsample). The shared NMS / clustering thresholds
(crate::DetectionParams), multiscale, and upscale live at the top level
of crate::DetectorConfig and apply to both strategies.
§Common knobs
image_upsample—2(the default) reproduces the paper’s 2× supersampled detection;1is faster but less accurate on low-resolution inputs.
§Advanced tuning
The remaining fields control low-level detection behaviour. The defaults reproduce the paper’s recommended settings and work well for typical camera images. Adjust them only when you have a specific reason (e.g. a non-standard image resolution or SNR budget).
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.ray_radius: u32Advanced tuning. Half-length of each Radon ray in
working-resolution pixels. The ray has 2·ray_radius + 1
samples. Paper default at image_upsample = 2 is ray_radius = 4.
Shorter rays are faster but integrate less signal; longer rays are
more discriminating but may cross into neighbouring cells.
image_upsample: u32Image-level supersampling factor applied before ray integration.
1 operates on the input grid; 2 (paper default) is equivalent
to bilinearly upsampling the input first, giving sub-pixel ray
positioning. Values ≥ 3 are clamped to 2 by the core detector.
response_blur_radius: u32Advanced tuning. Half-size of the box blur applied to the Radon
response map after integration. 0 disables blurring; 1
(default) yields a 3×3 box, smoothing quantisation noise in the
response. Increase only on very high-SNR images where extra
smoothing is unwanted.
peak_fit: PeakFitModeAdvanced tuning. Peak-fit mode for the 3-point subpixel
refinement of the response-map argmax. Gaussian (default) fits
on log-response (more accurate near the peak); Parabolic fits
directly on the response values. See PeakFitMode.
Trait Implementations§
Source§impl Clone for RadonConfig
impl Clone for RadonConfig
Source§fn clone(&self) -> RadonConfig
fn clone(&self) -> RadonConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for RadonConfig
Source§impl Debug for RadonConfig
impl Debug for RadonConfig
Source§impl Default for RadonConfig
impl Default for RadonConfig
Source§impl<'de> Deserialize<'de> for RadonConfigwhere
RadonConfig: Default,
impl<'de> Deserialize<'de> for RadonConfigwhere
RadonConfig: Default,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for RadonConfig
impl PartialEq for RadonConfig
Source§fn eq(&self, other: &RadonConfig) -> bool
fn eq(&self, other: &RadonConfig) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for RadonConfig
impl Serialize for RadonConfig
impl StructuralPartialEq for RadonConfig
Auto Trait Implementations§
impl Freeze for RadonConfig
impl RefUnwindSafe for RadonConfig
impl Send for RadonConfig
impl Sync for RadonConfig
impl Unpin for RadonConfig
impl UnsafeUnpin for RadonConfig
impl UnwindSafe for RadonConfig
Blanket Implementations§
impl<T> Any for Twhere
T: Any,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> CloneAny for T
impl<T> CloneAny for T
impl<T> CloneAnySend for T
impl<T> CloneAnySendSync for T
impl<T> CloneAnySync for T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().