Struct flydra_feature_detector::ImPtDetectCfg
source · pub struct ImPtDetectCfg {Show 14 fields
pub do_update_background_model: bool,
pub polarity: ContrastPolarity,
pub alpha: f32,
pub n_sigma: f32,
pub bright_non_gaussian_cutoff: u8,
pub bright_non_gaussian_replacement: u8,
pub bg_update_interval: u32,
pub diff_threshold: u8,
pub use_cmp: bool,
pub max_num_points: u16,
pub feature_window_size: u16,
pub clear_fraction: f32,
pub despeckle_threshold: u8,
pub valid_region: Shape,
}
Expand description
Configuration parameters for feature detection.
These parameters are used in the 2D feature detection step. As such, they are used to parameterize how incoming images are analyzed so that relevant features are extracted and sent onwards for consideration as candidates for 3D tracking.
Fields§
§do_update_background_model: bool
Switch whether to continuously update the background model or not.
polarity: ContrastPolarity
What kind of difference from the background model to detect.
alpha: f32
How much to weight the update of the background model.
Valid range is 0.0 - 1.0. 0.0 means never update, 1.0 means complete replacement on every update.
n_sigma: f32
Number of standard deviations a pixel must differ by to be detected.
Used when use_cmp
is true. No effect when use_cmp
is false. Valid
range is 0.0 - infinity. 0.0 means any difference is detected, large
value means only large deviations from mean are detected.
bright_non_gaussian_cutoff: u8
(used when use_cmp
is true)
bright_non_gaussian_replacement: u8
(used when use_cmp
is true)
bg_update_interval: u32
How often to update the background model, in number of frames.
Valid range is 0-4294967295.
diff_threshold: u8
This is the absolute difference required to detect a point. (For both
use_cmp
true and false.)
use_cmp: bool
If use_cmp
is true, use n_sigma based difference.
max_num_points: u16
How many points above threshold can be detected.
feature_window_size: u16
Half the width (and half the height) of the analysis region. In pixels.
clear_fraction: f32
Reduces moment arm when detecting pixels.
The result of this computation or despecked_threshold
is used,
whichever is larger. Fraction of the maximum difference value in pixel
intensity. Valid range is 0.0 - 1.0. 0.0 means the value is 0, 1.0 means
the value used is the maximum difference in pixel intensity between the
current image and the mean of the background model.
despeckle_threshold: u8
Reduces moment arm when detecting pixels.
This value or the result of the clear_fraction
computation is used,
whichever is larger. Intensity difference value. Value range is 0-255.
valid_region: Shape
The shape of the reason over which detected points are checked.
Trait Implementations§
source§impl Clone for ImPtDetectCfg
impl Clone for ImPtDetectCfg
source§fn clone(&self) -> ImPtDetectCfg
fn clone(&self) -> ImPtDetectCfg
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for ImPtDetectCfg
impl Debug for ImPtDetectCfg
source§impl<'de> Deserialize<'de> for ImPtDetectCfg
impl<'de> Deserialize<'de> for ImPtDetectCfg
source§fn deserialize<__D>(
__deserializer: __D
) -> Result<ImPtDetectCfg, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D
) -> Result<ImPtDetectCfg, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
source§impl PartialEq for ImPtDetectCfg
impl PartialEq for ImPtDetectCfg
source§fn eq(&self, other: &ImPtDetectCfg) -> bool
fn eq(&self, other: &ImPtDetectCfg) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl Serialize for ImPtDetectCfg
impl Serialize for ImPtDetectCfg
source§fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for ImPtDetectCfg
Auto Trait Implementations§
impl Freeze for ImPtDetectCfg
impl RefUnwindSafe for ImPtDetectCfg
impl Send for ImPtDetectCfg
impl Sync for ImPtDetectCfg
impl Unpin for ImPtDetectCfg
impl UnwindSafe for ImPtDetectCfg
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> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§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
.source§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
.source§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.source§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.source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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<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.