Sensor noise model - ISET/isetcam GitHub Wiki
Sensor noise model
sensorCompute adds several independent noise sources to the ideal pixel
signal. The dominant one, for most modern sensors under typical
illumination, is photon shot noise — noise that is a direct
consequence of counting a finite number of photons/electrons, not a defect
of the electronics.
Shot noise is Poisson
Electron counts from a light source follow a Poisson distribution: the
variance of the count equals its mean. ISETCam's noiseShot implements
this directly — it converts the mean voltage image to electrons, draws
Poisson-distributed noisy electron counts (using the exact Poisson
distribution below 25 electrons per pixel, and a normal approximation
above that, for speed), and converts back to a noisy voltage. Because shot
noise scales with signal level, its relative effect (the shot-noise-limited
SNR) improves as light level increases — the classic square-root law of
photon counting. This is why shot noise, not sensor electronics, is
usually the dominant noise source in adequately illuminated modern
sensors.
Other noise sources
- Read noise — additive electronic noise from the pixel's readout
circuitry, roughly constant regardless of signal level, and so most
visible in dark or low-light regions
(
sensorSet(sensor,'pixel read noise volts', ...)). - Dark current / dark voltage — signal that accumulates even with no
light present, from thermally generated electrons
(
sensorSet(sensor,'pixel dark voltage', ...)). - DSNU (dark signal nonuniformity) — pixel-to-pixel variation in dark
current, a fixed spatial pattern
(
sensorSet(sensor,'dsnu level', ...)). - PRNU (photoresponse nonuniformity) — pixel-to-pixel variation in
light sensitivity (gain), also a fixed spatial pattern
(
sensorSet(sensor,'prnu level', ...)).
DSNU and PRNU are both spatially fixed (the same pattern from exposure to
exposure), which is what makes them distinguishable from shot noise in
calibration measurements — see t_sensorFPN in
Sensors and camera systems.
Turning noise on or off
sensorCreate turns on all noise sources by default
(sensorSet(sensor,'noise flag',2)). This is controllable for testing
and teaching: setting the noise flag to a lower value disables some or all
noise sources so you can isolate one effect at a time — see t_cameraNoise
and t_sensorFPN in
Sensors and camera systems, and
s_sensorSNR in Examples for how pixel and sensor parameters
combine to determine overall SNR.
Back to Sensor.