I am working on a camera sensor and was trying to get a rough estimate on if a given camera module has enough dynamic range. Fortunately I know the target and illumination source. The dynamic range I am interested in is only the pixel dynamic range. My plan is to pulse a measurement light which will allow me to distinguish reflections from the measurement light and background light.

To simplify the question I want to assume the following

  • The spectrum of the measurement and background lights are identical
  • Background and Measurement light sources are colocated and use the same lens

This assumption allows me to not worry about the filters and other intricacies of the camera and just focus on the radiant power received by the camera.

My main question is this if for example I am using a 12 bit adc on my camera (assuming 0 noise) my dynamic range is 20*log10(2^12) = 72 dB.

If I assume that my background light at the pixel is 100 uW and my measurement light is 0.1 uW then the dB difference between them is 10*log10(1000) = 30 dB since watts has units of power.

My question then is when the pixel converts from stored energy to voltage is it linear that is would the PowerBackground / PowerMeasurement = VoltageBackground/VoltageMeasurement or is it nonlinear since typically power is a function of voltage squared? P = V^2/R. If this were the case then PowerBackground / PowerMeasurement = sqrt(voltageBackground/VoltageMeasurement)

  • \$\begingroup\$ My educated guess is that it is nonlinear. \$\endgroup\$
    – tlfong01
    Commented Aug 27, 2021 at 0:59
  • \$\begingroup\$ Pixels are linear in energy since they count photons. Double the photons gives double the DNs. \$\endgroup\$ Commented Aug 27, 2021 at 1:18
  • \$\begingroup\$ @user1850479, I agree that pixels should be linear in photons. My question though is if adc voltage and pixel stored energy are linearly related. Also I am not sure what DNs refers to. Thank You \$\endgroup\$ Commented Aug 27, 2021 at 3:14
  • \$\begingroup\$ DN = digital number, that is, the pixel value returned by the ADC. This is proportional to the number of photoelectrons in the pixel well. If it was not, then you could not calculate shot noise as I have done. \$\endgroup\$ Commented Aug 27, 2021 at 3:19

1 Answer 1


If I assume that my background light at the pixel is 100 uW and my measurement light is 0.1 uW then the dB difference between them is 10*log10(1000) = 30 dB since watts has units of power.

This will be much easier to think about if you convert to photons per second per pixel. For example, if your larger signal has 1000 photons per pixel per integration time, then your smaller signal has 1 photon per pixel per integration period. Since you have 12 bits, you easily have enough A/D dynamic range to digitize up to 1000.

The shot noise of your larger signal is thus sqrt(1000) = 31.6. The shot noise of the smaller signal is 1. The total noise is therefore 31.6, and your SNR for the smaller signal is 1/31.6 = 0.0316. You'll want to make the larger signal smaller, use lock in detection, average many frames to improve your SNR or adopt some other strategy.

Thus your A/D is fine, but your SNR is not (in this specific example). Note that this will scale with the number of photons you detect, so for larger numbers of photons your SNR will improve. You will need a lot of photons though to get the SNR very high.

  • \$\begingroup\$ Yes my plan was to use some kind of lock in detection/averaging to push the noise floor down. I appreciate the answer detailing SNR and shot noise, it helped me better understand shot noise. Despite this I don't think this fully answers my original question. Since photons per second can be thought of as joules/sec this is still power. After integrating across time there is a certain amount of energy stored in the pixel. If the pixel acts like a capacitor then the stored energy is the square of the voltage, (U = 1/2CV^2 , hyperphysics.phy-astr.gsu.edu/hbase/electric/capeng.html). \$\endgroup\$ Commented Aug 27, 2021 at 3:07
  • \$\begingroup\$ @ColeHarlow How an ADC reads voltage is an implementation detail that will not necessarily be the same between devices (e.g. compare read out between CCD and CMOS). Since it does not matter, you do not have to consider it unless you a designing the silicon chip. \$\endgroup\$ Commented Aug 27, 2021 at 3:26
  • \$\begingroup\$ @ColeHarlow Don’t forget to account for the QE of the sensor/pixels. Re linearity, in practise modern CMOS sensors have a linear response up to a point (e.g. ~95% saturation), and then rapidly asymptote to nearly flat/zero-response as they reach saturation. \$\endgroup\$ Commented Aug 28, 2021 at 9:24
  • \$\begingroup\$ @Techydude Thank you for the response. Quantum efficiency tells the ratio of incident photons to released electrons, so this should be constant for both my measurement and background signal and shouldn't impact the dynamic range between measurement and background signal or is that incorrect? I know QE is typically a function of wavelength but I assume for this application that background and measurement lights have the same spectrum \$\endgroup\$ Commented Aug 28, 2021 at 16:38
  • \$\begingroup\$ Yes, sorry, not meaning to imply a link to dynamic range, just that your 'application' sounds like it's wanting to quantify 'absolute' radiant energy levels, and so the QE is an imporant factor in the conversion (unlike in general imaging scenarios, which are more 'relative'). \$\endgroup\$ Commented Aug 28, 2021 at 21:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.