pub struct CompletionParams {
pub enable: bool,
pub roi_radius_px: f32,
pub reproj_gate_px: f32,
pub min_fit_confidence: f32,
pub min_arc_coverage: f32,
pub max_attempts: Option<usize>,
pub image_margin_px: f32,
pub require_perfect_decode: bool,
pub max_radii_std_ratio: f32,
}Expand description
Configuration for homography-guided completion: attempt local fits for missing IDs at H-projected board locations.
Fields§
§enable: boolEnable completion (runs only when a valid homography is available).
roi_radius_px: f32Radial sampling extent (pixels) used for edge sampling around the prior center.
reproj_gate_px: f32Maximum allowed reprojection error (pixels) between the fitted center and the H-projected board center.
min_fit_confidence: f32Minimum fit confidence in [0, 1].
min_arc_coverage: f32Minimum arc coverage (fraction of rays with both edges found).
max_attempts: Option<usize>Optional cap on how many completion fits to attempt (in ID order).
image_margin_px: f32Skip attempts whose projected center is too close to the image boundary.
require_perfect_decode: boolRequire a perfect decode (dist=0 and margin ≥ the active profile’s minimum cyclic Hamming distance) for a completion marker to be accepted.
When homography prediction accuracy is low (e.g. significant lens distortion without a calibrated mapper), the H-projected seed can be several pixels off. Under those conditions, the geometry gates alone are insufficient; requiring a perfect decode provides an independent quality signal that does not depend on H.
Default: false (backward-compatible). Set to true for Scheimpflug / high-
distortion setups where no calibrated camera model is available.
max_radii_std_ratio: f32Maximum allowed coefficient of variation (std_dev / mean) of per-ray outer radii. High scatter indicates inner/outer edge contamination — rays landing on the inner ring inflate the apparent outer radius for some angles. Values above this threshold cause the completion candidate to be rejected.
The gate is skipped when fewer than 2 rays have valid outer radii or when the mean outer radius is below 1 px (degenerate fit).
Default: 0.35 (35% coefficient of variation).
Trait Implementations§
Source§impl Clone for CompletionParams
impl Clone for CompletionParams
Source§fn clone(&self) -> CompletionParams
fn clone(&self) -> CompletionParams
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CompletionParams
impl Debug for CompletionParams
Source§impl Default for CompletionParams
impl Default for CompletionParams
Source§impl<'de> Deserialize<'de> for CompletionParamswhere
CompletionParams: Default,
impl<'de> Deserialize<'de> for CompletionParamswhere
CompletionParams: 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>,
Auto Trait Implementations§
impl Freeze for CompletionParams
impl RefUnwindSafe for CompletionParams
impl Send for CompletionParams
impl Sync for CompletionParams
impl Unpin for CompletionParams
impl UnsafeUnpin for CompletionParams
impl UnwindSafe for CompletionParams
Blanket Implementations§
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
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().Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.