Saturday 11 March 2017

Image Sensor Theoretical Performance Calculator

For my previous blog post Comparing the Theoretical Performance of Four Hackable Cameras I wanted to compare the performance of some image sensors using the values found in their datasheets. However, looking at the datasheets did not make their relative performance obvious, especially since the manufacturers do not always provide the information in a clear to understand format. So I had to work out how to calculate the read noise of each sensor using the numbers provided in the datasheets. In addition, I wanted to calculate a value for the signal-to-noise (SNR) that could be expected for a specific light level (in lux) and a specific exposure time.

In case it is of use to others I've created this calculator. The example buttons on the right hand side of the calculator can be used to see the exact numbers used for the four image sensor that were compared in the previous blog post.
Examples


Reference Lux Values[3]
Illuminance (lux) Surfaces illuminated by
0.0001 Moonless, overcast night
0.05–0.36 Full moon on a clear night
20–50 Public areas with dark surroundings
100 Very dark overcast day
320–500 Office lighting
400 Sunrise or sunset on a clear day
1000 Overcast day
10,000–25,000 Full daylight
32,000–100,000 Direct sunlight

F/#: the F-number of the lens

Scene Reflectivity: the proportion of light reflected by an object in scene

Average Quantum Efficiency: the average proportion of light (photons) converted to signal (electrons) by the image sensor

Read Noise

Parameter Value
Max SNR `(dB)`
Full Well Capacity `(e^-)`
Dynamic Range `(dB)`
Read Noise `(e^-)`
</ br>

Signal

Parameter Value
Pixel Size `(\mum)`
Incident Illuminance `(lux)`
`F//#`
Scene Reflectivity, `R`
Average Quantum Efficiency, `q`
Exposure Time, `t` `(s)`
J `(e^-)`
Shot Noise `(e^-)`
</ br>

Result

Parameter Value
Read + Shot Noise `(e^-)`
SNR `(dB)`

How is the calculation performed

Estimating the read noise

Where read noise statistics are not provided by the manufacturer they can be estimated using the full well capacity and the dynamic range.
The dynamic range is calculated by dividing the maximum signal, which is the full well capacity, by the read noise.[1]

`drg = 20*log_10({fwc}/{rn})`

where:
`drg` is the dynamic range `(dB)`
`fwc` is the full well capacity `(e^-)`
`rn` is the read noise `(e^-)`

If the full well capacity is not stated in the datasheet it is usually possible to calculate it by using the maximum SNR figure often provided by manufacturers. This is the maximum SNR, which occurs when the signal is equal to the full well capacity.

`SNR_{max} = 20*log_10({fwc}/{tn})`

where:
`tn` is the total noise `(e^-)`

It is usually okay to assume that the total noise is dominated by the shot noise at the maximum signal.
`SNR_{max} \approx 20*log_10({fwc}/sqrt(fwc)) \approx 20*log_10(sqrt(fwc))`

Estimating the signal

To calculate the SNR it is necessary to estimate the number of electrons generated in each pixel during the exposure. To estimate the number of electrons generated, an equation was taken from the paper “When Does Computational Imaging Improve Performance?”[2].

Note: This calculation is an approximation but should be of the right order of magnitude.

`J = 10^15 (F//#)^{-2}tI_{src}R q\Delta^2`

where:
`J` is the number of generated electrons
`F//#` is the f-number of the lens
`t` is the exposure time
`I_{src}` is the incident illuminance in lux
`R` is the average reflectivity of the scene
`q` is the quantum efficiency of the sensor
`\Delta` is the size of a pixel in metres

Estimating Quantum Efficiency

For the values of the quantum efficiency (QE) it is usually necessary to estimate them from the charts put in the datasheets. For colour sensors, since each colour channel blocks approximately ⅓ of the photons, the QE can be approximated by taking the peak QE for the three colour channels and dividing by three.

References

[1] https://theory.uchicago.edu/~ejm/pix/20d/tests/noise/noise-p2.html
[2] When Does Computational Imaging Improve Performance?
[3] https://en.wikipedia.org/wiki/Lux

No comments:

Post a Comment