Sensor Model¶
-
template<IsSpectral TSpectral>
class SensorModel¶ Abstract base class for sensor models.
Defines the interface and configuration for all sensor models, including pixel pitch, quantum efficiency, and noise parameters.
- Template Parameters:
TSpectral – The spectral representation type.
Subclassed by huira::SimpleSensor< TSpectral >
Public Functions
-
SensorModel() = default¶
-
SensorModel(SensorConfig<TSpectral> config)¶
Constructs a SensorModel with the given configuration.
- Parameters:
config – The sensor configuration parameters.
- Throws:
std::runtime_error – if the resolution or pixel pitch is invalid.
-
virtual ~SensorModel() = default¶
-
void set_resolution(Resolution resolution)¶
Sets the sensor resolution.
- Parameters:
resolution – The new sensor resolution (width x height).
- Throws:
std::runtime_error – if the resolution is invalid.
-
inline Resolution resolution() const¶
-
void set_pixel_pitch(units::Micrometer pitch_x, units::Micrometer pitch_y)¶
Sets the pixel pitch of the sensor.
- Parameters:
pitch_x – The horizontal pixel pitch in micrometers.
pitch_y – The vertical pixel pitch in micrometers.
- Throws:
std::runtime_error – if either pitch is invalid.
-
Vec2<float> pixel_pitch() const¶
Returns the pixel pitch of the sensor.
- Returns:
The pixel pitch as a 2D vector (x, y) in meters.
-
void set_sensor_size(units::Millimeter width, units::Millimeter height)¶
Sets the sensor size in millimeters.
Computes and sets the pixel pitch based on the given sensor size and current resolution.
- Parameters:
width – The sensor width in millimeters.
height – The sensor height in millimeters.
- Throws:
std::runtime_error – if either dimension is invalid.
-
Vec2<float> sensor_size() const¶
Returns the sensor size in meters.
- Returns:
The sensor size as a 2D vector (width, height) in meters.
-
void set_quantum_efficiency(const TSpectral &qe)¶
Sets the quantum efficiency of the sensor.
- Parameters:
qe – The quantum efficiency spectrum (values between 0 and 1).
- Throws:
std::runtime_error – if the values are invalid.
-
void set_full_well_capacity(float fwc)¶
Sets the full well capacity of the sensor.
- Parameters:
fwc – The full well capacity in electrons.
- Throws:
std::runtime_error – if the value is invalid.
-
inline float full_well_capacity() const¶
-
void set_read_noise(float read_noise)¶
Sets the read noise of the sensor.
- Parameters:
read_noise – The read noise in electrons RMS.
- Throws:
std::runtime_error – if the value is invalid.
-
inline float read_noise() const¶
-
void set_dark_current(float dark_current)¶
Sets the dark current of the sensor.
- Parameters:
dark_current – The dark current in electrons per second.
- Throws:
std::runtime_error – if the value is invalid.
-
inline float dark_current() const¶
-
void set_bias_level_dn(float bias_level_dn)¶
Sets the bias level of the sensor in ADU.
- Parameters:
bias_level_dn – The bias level in ADU.
- Throws:
std::runtime_error – if the value is invalid.
-
inline float bias_level_dn() const¶
-
void set_bit_depth(int bit_depth)¶
Sets the bit depth of the sensor.
- Parameters:
bit_depth – The bit depth (number of bits per pixel).
- Throws:
std::runtime_error – if the value is invalid.
-
inline int bit_depth() const¶
-
void set_gain_adu(float gain)¶
Sets the gain of the sensor in e-/ADU.
- Parameters:
gain – The gain in electrons per ADU.
- Throws:
std::runtime_error – if the value is invalid.
-
inline float gain_adu() const¶
-
void set_unity_db(float unity_db)¶
Sets the unity dB reference level for gain.
- Parameters:
unity_db – The unity dB reference level.
- Throws:
std::runtime_error – if the value is invalid.
-
inline float unity_db() const¶
-
void set_gain_db(float gain_db)¶
Sets the gain in dB for the sensor.
- Parameters:
gain_db – The gain in decibels.
-
inline float gain_db() const¶
-
inline void set_rotation(units::Radian angle)¶
-
inline units::Radian rotation() const¶
-
virtual void readout(FrameBuffer<TSpectral> &fb, float exposure_time) const = 0¶
Friends
- friend class CameraModel< TSpectral >