I have collected some noise data from a dimly lit CMOS image sensor. The distribution of pixel values is tallied below:-


I'd like to be able to simulate this sensor noise. How would I fit a statistical distribution to this bell curvish graph? And which distribution? Bear in mind that the distribution is discrete. From the raw samples, I get mean = 18 and standard deviation = 7 (both approximations).

  • $\begingroup$ You can always find a distribution that fits. But you'd risk overfitting. You'd typically start with things like "I assume this is normal" or "$\chi^2$ with $M$ degrees of freedom, $M$ small. $\endgroup$ – Marcus Müller Aug 5 '18 at 0:57
  • $\begingroup$ In physics, normal is often a very reasonable assumption. In your case, I'd presume you'd see a normal distribution (representing your noise) added to another distribution (representing your signal) $\endgroup$ – Marcus Müller Aug 5 '18 at 0:59
  • $\begingroup$ @MarcusMüller But normal distributions are continuous, whilst pixel values are discrete integers. That's my problem. $\endgroup$ – Paul Uszak Aug 5 '18 at 1:13
  • $\begingroup$ So? I see how these kind of values are different, but you can simply quantize a continuous distribution or consider a discrete distribution a slightly deformed continuous one. $\endgroup$ – Marcus Müller Aug 5 '18 at 1:16
  • 1
    $\begingroup$ Define a sampled normal distribution function as discrete normal. Done. $\endgroup$ – Marcus Müller Aug 5 '18 at 1:46

Since you say your distribution is discrete, if your samples are independent, you could try a multinomial distribution as a model https://en.m.wikipedia.org/wiki/Multinomial_distribution

You can use either maximum likelihood or a Bayesian estimator.

You could also take the mean and standard deviation and use a Gaussian model with rounding. A goodness of fit test


would tell you how good the model is.

If your samples are independent noise generation is straightforward . A Bayesian model is different because you use another (prior) noise generator as an input to the fixed parameter noise generator.

If your samples are correlated you can use a Gibbs sampler.

You should perform an independence test on your data, of which a Google search will provide a number of candidates

You also might consider boot-strapping


It is also very likely that a physics based noise model exists for your device.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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