pub struct ObservationModel {
pub pixel_noise_px: f64,
pub dropout_prob: f64,
pub clutter_per_frame: f64,
pub occlusion: OcclusionModel,
}Expand description
Observation-model imperfections applied to the 2D detections. All default to zero, so the perfect-world baseline is unchanged.
Everything is sampled deterministically from the scenario seed plus the
(camera, frame, insect) indices, so a (config, seed) reproduces a run
exactly — the harness can print the seed on failure and replay it.
Fields§
§pixel_noise_px: f64Standard deviation (pixels) of zero-mean Gaussian jitter added to each projected detection. Models finite localization accuracy. Default 0.
dropout_prob: f64Per-(camera, insect, frame) probability in [0, 1] that a real detection
is missed (dropped), i.i.d. per frame. Models sporadic detector misses;
for sustained misses use Self::occlusion instead. Default 0.
clutter_per_frame: f64Expected number of spurious “clutter” detections per camera per frame
(false positives, placed uniformly in the image). Stresses data
association. Modeled as a fixed count floor(x) plus a fractional part
included with probability x - floor(x). Default 0.
occlusion: OcclusionModelTemporally-correlated occlusion: hides an insect from a camera for whole
spans of frames (default: never). See OcclusionModel.
Implementations§
Source§impl ObservationModel
impl ObservationModel
Sourcepub fn is_dropped(
&self,
seed: u64,
cam_index: usize,
fno: usize,
insect_id: u32,
) -> bool
pub fn is_dropped( &self, seed: u64, cam_index: usize, fno: usize, insect_id: u32, ) -> bool
Whether a real detection of insect_id on camera cam_index at frame
fno is dropped, given the scenario seed. Deterministic.
Sourcepub fn is_suppressed(
&self,
seed: u64,
cam_index: usize,
fno: usize,
insect_id: u32,
) -> bool
pub fn is_suppressed( &self, seed: u64, cam_index: usize, fno: usize, insect_id: u32, ) -> bool
Whether a real detection of insect_id on camera cam_index at frame
fno should be suppressed for any reason — an i.i.d. Self::is_dropped
miss or an OcclusionModel span. This is the single check both the
image backend and the in-process injector apply before emitting a point.
Trait Implementations§
Source§impl Clone for ObservationModel
impl Clone for ObservationModel
Source§fn clone(&self) -> ObservationModel
fn clone(&self) -> ObservationModel
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ObservationModel
impl Debug for ObservationModel
Source§impl Default for ObservationModel
impl Default for ObservationModel
Source§fn default() -> ObservationModel
fn default() -> ObservationModel
Source§impl<'de> Deserialize<'de> for ObservationModel
impl<'de> Deserialize<'de> for ObservationModel
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 ObservationModel
impl PartialEq for ObservationModel
Source§impl Serialize for ObservationModel
impl Serialize for ObservationModel
impl StructuralPartialEq for ObservationModel
Auto Trait Implementations§
impl Freeze for ObservationModel
impl RefUnwindSafe for ObservationModel
impl Send for ObservationModel
impl Sync for ObservationModel
impl Unpin for ObservationModel
impl UnsafeUnpin for ObservationModel
impl UnwindSafe for ObservationModel
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> 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>, which can then be
downcast into Box<dyn 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>, which 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> DowncastSend for T
impl<T> DowncastSend for T
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<T> Preferences for Twhere
T: Serialize + DeserializeOwned,
impl<T> Preferences for Twhere
T: Serialize + DeserializeOwned,
Source§fn save<S>(&self, app: &AppInfo, key: S) -> Result<(), PreferencesError>
fn save<S>(&self, app: &AppInfo, key: S) -> Result<(), PreferencesError>
Source§fn load<S>(app: &AppInfo, key: S) -> Result<T, PreferencesError>
fn load<S>(app: &AppInfo, key: S) -> Result<T, PreferencesError>
key. This is
an instance method which completely overwrites the object’s state with the serialized
data. Thus, it is recommended that you call this method immediately after instantiating
the preferences object. 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.