将泊松噪声添加到具有特定平均值的图像中



如何在 Matlab 中将泊松噪声与泊松分布的特定平均值相加?下面的代码给了我一个完全白色的图像。

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

在图像处理工具箱中,有一个函数imnoise在按如下方式调用时完全可以执行此操作:

img = imnoise(img,'poisson');

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

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

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

但是,要使用自动缩放的色彩图显示图像,请执行以下操作:

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

注意方形刹车。

最新更新