Skip to main content

CameraModel

Struct CameraModel 

Source
pub struct CameraModel {
    pub photons_per_pixel: f64,
    pub gain_counts_per_electron: f64,
    pub offset_counts: f64,
    pub read_noise_electrons: f64,
    pub dark_current_electrons: f64,
    pub shot_noise: bool,
    pub pixel_sensitivity: Option<Vec<f64>>,
    pub bit_depth: Option<u8>,
    pub saturation_counts: Option<f64>,
    pub quantize: bool,
    pub bad_pixels: Vec<usize>,
    pub bad_pixel_value_counts: Option<f64>,
}
Expand description

Concrete detector pipeline from optical intensity to digital counts.

Fields§

§photons_per_pixel: f64

Expected photoelectrons per pixel at unit optical intensity.

§gain_counts_per_electron: f64§offset_counts: f64§read_noise_electrons: f64§dark_current_electrons: f64§shot_noise: bool

Whether to Poisson-sample photoelectrons and dark current.

§pixel_sensitivity: Option<Vec<f64>>

Multiplicative detector sensitivity for each pixel.

§bit_depth: Option<u8>§saturation_counts: Option<f64>§quantize: bool§bad_pixels: Vec<usize>§bad_pixel_value_counts: Option<f64>

Implementations§

Source§

impl CameraModel

Source

pub fn new() -> Self

Source

pub fn ideal() -> Self

Unit detector response without noise, clipping, or quantization.

Source

pub fn photons_per_pixel(self, value: f64) -> Self

Source

pub fn gain(self, counts_per_electron: f64) -> Self

Source

pub fn offset_counts(self, value: f64) -> Self

Source

pub fn read_noise_electrons(self, value: f64) -> Self

Source

pub fn dark_current_electrons(self, value: f64) -> Self

Source

pub fn shot_noise(self, enabled: bool) -> Self

Source

pub fn pixel_sensitivity(self, values: Vec<f64>) -> Self

Source

pub fn bit_depth(self, bits: u8) -> Self

Source

pub fn saturation(self, counts: f64) -> Self

Source

pub fn quantize(self, enabled: bool) -> Self

Source

pub fn bad_pixels(self, indices: Vec<usize>, value_counts: f64) -> Self

Source

pub fn validate(&self) -> Result<()>

Source

pub fn validate_for_frame(&self, frame_len: usize) -> Result<()>

Source

pub fn measure_frame<R: Rng + ?Sized>( &self, intensity: &mut [f64], rng: &mut R, ) -> Result<()>

Converts one optical-intensity frame into detector counts in place.

Source

pub fn compile_reconstruction_model( &self, model: ImagePlaneModel, ) -> Result<ImagePlaneModel>

Compiles known uniform linear response into a reconstruction model.

Pixel sensitivity, stochastic noise, clipping, quantization, and bad pixels remain detector effects and are not compiled into the model.

Trait Implementations§

Source§

impl Clone for CameraModel

Source§

fn clone(&self) -> CameraModel

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CameraModel

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for CameraModel

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for CameraModel

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for CameraModel

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,