I'm trying to understand the behavior of my DSLR camera sensor (Canon 80D). I've taken a picture of a gradient from top-right to bottom-left corners of a square. This square is positioned at the right-hand side of the picture, so that it'd be easy to just take the diagonal, starting from the top-right corner, that would be composed only of green-filtered photosites.

The shot is done with a defocused lens, so that the detail of the monitor pixels pattern couldn't cause any interference like moire. ISO sensitivity is set to the smallest value: 100, exposure is 1/10 s, and aperture is f/3.2, with f=24 mm.

What I get is that as the intensity registered by a photosite increases, the noise amplitude also increases. See this plot of the raw data of the diagonal, taken from the CR2 file:

enter image description here

The fact that noise amplitude is correlated with signal amplitude makes me wonder. Thermal noise should be the same on all the photosites, regardless of their illuminance. Quantization noise wouldn't even be noticeable on this scale of ~10000 counts (and it's also additive). Shot noise also shouldn't be noticeable at this illuminance.

So what is the origin of this multiplicative noise then?

I've done some more captures to find the relation between the mean and the variance of the pixel values. I've taken 15 shots of a gray gradient, used every 50th row and column of the resulting data, and computed mean and variance in the sets of 15 values for each resulting pixel.

Here are the results. Blue the variance, orange the least-squares fit:

mean vs variance

Blue the variance/mean ratio, orange the estimate of gain from the fit above: mean vs variance/mean

The plot above smoothed with moving average with 100 points in the window:

smoothed mean-vs-ratio

Is this consistent with the shot noise explanation given in the answers?

After some more comments I've subtracted the DC offset of about 511.9 from all the pixels, and now the smoothed ratio of variance to mean (i.e. estimated gain) as a function of mean looks like this:

smoothed mean-vs-ratio after subtracting DC offset

So, now the answer that explains the noise as the shot noise makes sense.

  • \$\begingroup\$ It's photon flux noise (Poisson.) You should look it up. I've had to deal with it most of my life. So it's kind of ingrained in me, today. I'm sure someone has a good web page on the topic. You are right about other noise sources. Dark noise and then the pre-amplifier's noise. All of those contribute. But the photon flux noise is the one that is signal dependent, more than the others. \$\endgroup\$
    – jonk
    Jun 9, 2020 at 23:04
  • \$\begingroup\$ You may also be seeing noise amplification through gamma correction. en.wikipedia.org/wiki/Gamma_correction \$\endgroup\$
    – user16324
    Jun 10, 2020 at 11:42
  • \$\begingroup\$ @BrianDrummond I'm working on raw data, gamma correction is irrelevant. \$\endgroup\$
    – Ruslan
    Jun 10, 2020 at 11:46
  • \$\begingroup\$ Is there a DC offset on your pixel values? \$\endgroup\$ Jun 11, 2020 at 16:59
  • \$\begingroup\$ @user1850479 yes, you can see it in the plots: its mean is about 511.9 (standard deviation about 2.7). These values here I've calculated from a dark shot. \$\endgroup\$
    – Ruslan
    Jun 11, 2020 at 17:06

2 Answers 2


To amplify a bit on the explanation of "shot noise", remember that we are in the realm where (due to the tiny size of the photosites, the length of the exposure, and the various efficiencies involved) the discrete nature of photons really matters. The sensor is actually counting them.

Now imagine you're photographing a flat field, and every photosite receives the same amount of illumination (for simplicity, say it's a monochrome sensor). Does that mean that in a given exposure, every photosite will record exactly the same number of photons? No! Photons arrive at random, and their arrival is well-modeled by the distribution of a Poisson process.

If you turned the illumination way down so that the average number of photons per photosite per exposure was 1, then about 37% of photosites will record 0 photons, 37% will record 1 photon, 18% will record 2 photons, and 8% will record 3 or more. The standard deviation of this distribution is 1.

poisson mu=1

If you increased the illumination so that the average number of photons per photosite per exposure was 10, then about 88% would record between 5 and 15 photons, with less than 1% seeing more than 18. The standard deviation of this distribution is sqrt(10) ≈ 3.16.

poisson mu=10

If you increased again to an average of 100, then about 90% would record between 84 and 117 photons, and the standard deviation is 10.

poisson mu=100

And the pattern continues. As the illumination increases, there are more and more "rolls of the dice" for a photon to either be detected by a photosite or not, and more and more possible values for the measurement to take on, so the absolute magnitude of the noise increases. At the same time, since the standard deviation of the Poisson process is the square root of the mean rate, the relative magnitude of the noise decreases with increasing illumination. Since what we perceive is ratios of brightness (more or less), this explains why the visible noise goes down. When you get up to, say, an average illumination of a million, the standard deviation is up to 1000... but put another way, that means that practically all of the values are between 99.8% and 100.2% of the average. That's a far cry from the situation where the average illumination was 10, and we could easily see values between 50% and 150% of the average.

  • \$\begingroup\$ So, based on this explanation, I understand that one can estimate expected number of photons per exposure from the ratio of standard deviation to average. As I get sqrt(n)/n=0.6% for the brightest part of the image, expected number of photons per exposure per photosite is about 28 000. With pixel size of 3.7 μm and photon frequency of roughly 550 THz this would result in irradiance of about 7 mW/m², or luminance of about 5 lx. Is it realistic? \$\endgroup\$
    – Ruslan
    Jun 10, 2020 at 11:23
  • \$\begingroup\$ @Ruslan You can calculate the gain (digital numbers per photon) of your sensor from the variance (not standard deviation). Since the variance is equal to the mean for a poisson process, if the gain in the A/D was 1 they'd be equal. Since you are running at low "ISO" (gain), your picture shows gain <<1. This will be more obvious if you plot the variance vs pixel value. Once you know the gain, you can add up how many photons you have in each pixel. \$\endgroup\$ Jun 10, 2020 at 13:59
  • \$\begingroup\$ Well, from my calculations, gain (computed via least-squares fit of mean vs. variance to ax+b) is about 0.9. Here're the plots of mean vs. variance and mean vs variance/mean ratio. Orange lines are the fit result. What's puzzling me a bit is that at low intensities the "gain" appears much smaller than this (see the ratio plot). Is it still somehow consistent with the shot noise picture? \$\endgroup\$
    – Ruslan
    Jun 10, 2020 at 16:04
  • \$\begingroup\$ @Ruslan Those measurements are extremely noisy compared to what I would expect. How are you acquiring them? Variance should increase relative to mean at low average values since you will not be shot noise limited. A DC offset will also screw up measurements of low values, so make sure the zero point on each pixel is set correctly. If you haven't looked at it, the EMVA1288 specification has detailed examples for doing this calculation, including removing DC offsets. \$\endgroup\$ Jun 10, 2020 at 16:42
  • \$\begingroup\$ @Ruslan You should probably edit your original question with your new questions and measurements so that other people see them. If I hadn't remembered to check this question again, I'd never have seen your comments. \$\endgroup\$ Jun 10, 2020 at 16:43

The fact that noise amplitude is correlated with signal amplitude makes me wonder.

Shot noise.

Thermal noise should be the same on all the photosites, regardless of their illuminance.

It's not, although thermal noise is very small on modern sensors so you only see it in the darkest pixels.

Shot noise also shouldn't be noticeable at this illuminance.

Shot noise is the sqrt(N) where N is the number of photons, so bright pixels have a large shot noise component, which is what you observe. Plot the variance of pixel value vs. pixel value and you will see that your brighter pixels are shot noise limited.


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.