Gaussian Noise is Added, Poisson Noise is Applied

There is a fundamental difference between adding Gaussian noise and applying Poisson noise. In practice, people often talk about adding Poisson noise anyway, but this is not accurate. I will be looking at this from the image processing perspective in this article, and I’ll show purely visual examples. An application of this could be a simulation where you want to add noise to an image, and you known that this noise is Poisson distributed in the system that you are simulating.

Gaussian noise is typically generated separately and independently from the original image and then added to it (hence, additive noise). When you apply Poisson noise, on the other hand, you take the original image and ask the question “what would these individual pixels intensities be if they were produced by a Poisson process?”. This means that Poisson noise is correlated with the intensity of each pixel. Gaussian noise is independent of the original intensities in the image.

Why is this Difference Important?

There is the risk is that you use the common knowledge that Poisson noise approaches Gaussian noise for large numbers, and then simply add Gaussian noise with a fixed variance to the original image. This adds noise that is too strong in the darker parts of the image. This is demonstrated in the image below.

Poisson and Gaussian noise, pixel values 0 to 5Poisson and Gaussian noise, pixel values 0 to 5

The first row of the image shows squares with an increasing photon count, from 0 to 5 increasing in steps of 1 (admittedly very low signal levels, but an example with higher values follows). All the pixels in a square have the same value. In the second row, Poisson noise has been applied. In the third row, Gaussian noise has been added, with the variance adapted to the pixel values, as an approximation of Poisson noise. The variance of the Gaussian noise can be adapted to the pixel values using the relation

\[\mathrm{Poisson}(\lambda)=\mathrm{Gaussian}(\mu=\lambda,\,\sigma^2=\lambda).\]

Adapting the variance makes the Gaussian noise very close to the Poisson noise, except for the darkest squares. The fourth row shows the mistake that must be avoided, which is using Gaussian noise with a fixed variance. Negative values have been set to zero (also in the image that follows) for the rows with Gaussian noise, emulating the effect that a typical detector does not produce negative values.

The illustration below shows the same thing for 0 to 50 detected photons, increasing in steps of 10.

Poisson and Gaussian noise, pixel values 0 to 50Poisson and Gaussian noise, pixel values 0 to 50

The second and third rows are now very close together, so it seems that you can get away with this for even these still very small signal levels. The fourth row still looks different, since the effect of the variance being too high remains for the darker parts of the image. This effect stays visible for even higher photon counts.

So the conclusion must be that, if you need Poisson distributed noise, you cannot not simply replace it by Gaussian noise with a fixed variance.

Submitted by Tom Roelandts on 11 January 2014

Comments

Very nice illustration of the different nature of these two types of noise. I will probably use 'apply' instead of 'add' for Poisson in my future publications. Thanks

Thanks for good posting.
I fully understanded about poisson noise (photon shot noise)with in an image. But I can't understand about gaussian noise. You said the gaussian noise additive noise. But I wonder, where gaussian noise came from and the origin of gaussian noise? It is difficult to distinguish between gaussian noise and poisson noise. Would you please help me for understand?

I think that the main explanation for the fact that noise in practical systems is often Gaussian (or can be approximated well by it) is the central limit theorem (see the Wikipedia article on the central limit theorem). An example is thermal noise. It is unavoidable (which is the reason why some cameras are actively cooled) and caused by the random motion of a very large number of electrons.

Hi, firstly thanks a lot, this page helped me with some of the differences. Anyhow, I'm still confused and I thought, where should I ask if not here.
Can you explain me, how poisson noise could be implemented? Wouldn't it still be an additive term? And secondly, not directly connected but maybe you can tell me that too :), is a simulation of poisson noise meaningful if my function has small values (let's say normalized to 1)?

For the implementation of the examples, I've used MATLAB's imnoise() with the 'poisson' option, so that is one possiblity to implement it.
If your data is normalized, you'll have to de-normalize it before applying the Poisson noise, and then re-normalize it. In the case of an image, for example, it is the actual number of photons per pixel that counts, not the normalized value.
In general, using actual Poisson noise instead of approximating it with Gaussion noise is more important for smaller numbers of photons, as the examples in this article show. However, as the examples also show, if you use Gaussian noise with the variance adapted to the pixel values, then it’s very close!

Very good work illustrate the difference between Gaussian and Poisson.

Firstly thanks for your posting
but i wonder something. if i want to apply specific percentage of poisson noise to image, how can i apply that.. ?
and i confuse meaning apply specific percentage of poisson noise. ( what is reference the percentage )

Add new comment