向具有特定均值的图像添加泊松噪声。

Adding poisson noise to an image with specific mean.

如何在 Matlab 中添加具有特定泊松分布均值的泊松噪声?下面的代码给了我一个全白的图像。

img = im2double(phantom(512));
figure; imshow(img)
mean = 1e9;
R = poissrnd(mean, [512, 512]);
J = img + R;
figure; imshow(J);

你这样做的方式很好。您的平均值是 1000000000,因此数字非常大。

但是要显示带有自动缩放颜色图的图像,请执行以下操作:

img = im2double(phantom(512));
figure; imshow(img,[])
mean = 1e9;
R = poissrnd(mean, [512, 512]);
J = img + R;
figure; imshow(J,[]);

注意方括号。

通常,在向图像添加泊松噪声时,您希望使用像素值作为平均值(在适当缩放之后)。这将更接近图像采集中的泊松噪声。

例如,假设您的图像在 im2double 之后的 0-1 范围内,是在光子受限显微镜中采集的。假设缩放是这样的,即一个像素上的 1e9 个光子表示为像素值 1。为了在这里模拟光子噪声,这个(无噪声)值为 1 的像素将有一个(噪声)值 poissrnd(1e9)/1e9。另一个值为 0.5 的像素将具有 poissrnd(1e9*0.5)/1e9.

的值

在 Image Processing Toolbox 中有一个函数 imnoise 可以在调用时执行此操作,如下所示:

img = imnoise(img,'poisson');

此函数使用 1e12 的缩放比例。您想要 1e9 的缩放比例,所以您必须将图像除以 1e3:

img = imnoise(img/1e3,'poisson')*1e3;