Poisson Noise [message #75481] |
Fri, 11 March 2011 16:54  |
M. Katz
Messages: 69 Registered: May 2005
|
Member |
|
|
I'm wondering if anyone has a ready-made Poisson-noise simulator for
images that works in the following way.
Start with a simulated ideal image as input, where each pixel contains
a number of photons as the intensity. It could be integer or floating-
point. Then use a function P(img) to return a Poisson-noise-added
version of the image. The key is that noise at each pixel scales with
the intensity appropriately, and not uniformly.
For large numbers of photons, where the Poisson noise has an RMS of
Sqrt(N) and behaves like a Gaussian distribution, I could just add
noise to img1 like this
img2 = 0L > ROUND( img1 + RANDOMN(seed, Nx, Ny)*SQRT(img1) )
But for low photon numbers, this approximation isn't valid.
Thanks,
M.
|
|
|
Re: Poisson Noise [message #75641 is a reply to message #75481] |
Tue, 15 March 2011 07:28  |
pgrigis
Messages: 436 Registered: September 2007
|
Senior Member |
|
|
On Mar 11, 8:54 pm, "M. Katz" <MKatz...@yahoo.com> wrote:
> I'm wondering if anyone has a ready-made Poisson-noise simulator for
> images that works in the following way.
>
> Start with a simulated ideal image as input, where each pixel contains
> a number of photons as the intensity. It could be integer or floating-
> point. Then use a function P(img) to return a Poisson-noise-added
> version of the image. The key is that noise at each pixel scales with
> the intensity appropriately, and not uniformly.
>
> For large numbers of photons, where the Poisson noise has an RMS of
> Sqrt(N) and behaves like a Gaussian distribution, I could just add
> noise to img1 like this
>
> img2 = 0L > ROUND( img1 + RANDOMN(seed, Nx, Ny)*SQRT(img1) )
>
> But for low photon numbers, this approximation isn't valid.
>
> Thanks,
> M.
IDL has a built-in way too:
a=randomu(seed,poisson=10.0)
Ciao,
Paolo
|
|
|