Matlab 添加泊松噪声对图像没有任何作用
我试图在MATLAB中将泊松噪声添加到一个非常简单的图像中Matlab 添加泊松噪声对图像没有任何作用,matlab,image-processing,matlab-figure,Matlab,Image Processing,Matlab Figure,我试图在MATLAB中将泊松噪声添加到一个非常简单的图像中 im = ones(256, 256); noisy = imnoise(im, 'poisson'); 看完答案后,我也试了一下 im = ones(256, 256); noisy = imnoise(im2double(im), 'poisson'); 无济于事 我也尝试过使用im=zero(256,256)但也没有效果 我用从互联网上取下的一张图片试了一下 如果我拿你的,把它改成高斯分布,你会看到不同 I = ones(
im = ones(256, 256);
noisy = imnoise(im, 'poisson');
看完答案后,我也试了一下
im = ones(256, 256);
noisy = imnoise(im2double(im), 'poisson');
无济于事
我也尝试过使用
im=zero(256,256)
但也没有效果 我用从互联网上取下的一张图片试了一下
如果我拿你的,把它改成高斯分布,你会看到不同
I = ones(256,256);
imshow(I)
J = imnoise(I,'gaussian');
imshow(J)
关于这一点我读得不够多,但我相信这是因为图像的强度是均匀的
来自:
如果I
为双精度,则输入像素值被解释为泊松分布的平均值,按1e12
进行放大。例如,如果输入像素的值为5.5e-12
,则相应的输出像素将从泊松分布生成,平均值为5.5
,然后按1e12
缩小
当输入为uint8
时,不会发生此缩放:
im = ones(256, 256, 'uint8');
noisy = imnoise(im, 'poisson');
在双精度情况下,有两个问题:
1e12
的缩放比例似乎过大。这意味着输出来自泊松分布,平均值为1e12
,然后除以1e12
。平均值为1
,标准偏差为sqrt(1e-12)=1e-6
。也就是说,标准偏差很小,强度的变化不可见。如果使用格式long
,MATLAB将显示以下值:
>> format long
>> min(noisy(:))
ans =
0.999996115518000
>> max(noisy(:))
ans =
1
noisy = imnoise(im * 1e-12, 'poisson') * 1e12;
(如果更适合您,也可以使用不同的因子)。这是因为您选择了泊松,将其更改为高斯。您能解释一下为什么这是有效的,而毒物不是吗?@地毯嘶嘶不管这里的matlab实现如何,泊松噪声都会发生在光子数较低的情况下,这是有道理的,你没有任何在一个超级明亮的形象
noisy = imnoise(im * 1e-12, 'poisson') * 1e12;