gpt4 book ai didi

image - numpy.random.poisson 可以用于向图像添加泊松噪声吗?

转载 作者:行者123 更新时间:2023-12-01 07:05:06 24 4
gpt4 key购买 nike

对于一张图像的每个像素,我都有它的 x(int)、y(int) 和像素值(浮点数)。

现在我需要给图像添加噪声。numpy.random.poisson 合适吗?

我很担心,因为它不像新像素值=原始值+噪声,而是像

新像素值=numpy.random.poisson(original value,1) 。新值都是整数。

我的问题是作为标题。

我的目的是获得一颗恒星的光度测量误差。但我只有一个图像。所以我通过添加泊松噪声来进行模拟。
请检查从下面的ccd图像中得到的图。来源是红色特征。

enter image description here

最佳答案

这是一个旧线程,但我知道答案,所以这里是。

答案是肯定的。

imageplusshotnoise = numpy.random.poisson(lam=<noiseless_simulated_image>, size=None)

这将从原始图像的每个像素的泊松分布中生成样本图像。泊松分布有一个特殊的性质,即均值和方差相等。这意味着如果均值是 100,则方差将为 100;因此,散粒噪声的标准偏差为 10(方差等于标准偏差的平方)。

创建一个所有值都等于 100 的 numpy 图像数组
>>> myimage = 100 * np.ones((100,100))
>>> np.mean(myimage)
100.0
>>> np.std(myimage)
0.0

请注意,平均值为 100,标准偏差为 0,如预期

现在使用此图像作为泊松分布的 lambda 将从该分布中生成具有相同大小的样本
>>> imageplusnoise = np.random.poisson(lam=myimage, size=None)
>>> imageplusnoise.shape
(100, 100)

样本的均值与 lambda 的均值相同,但标准差将等于方差的 sqrt,在泊松分布中,方差等于均值。
>>> np.mean(imageplusnoise)
100.0474
>>> np.std(imageplusnoise)
10.015934965843179

为了仅获得散粒噪声,简单地从中减去 lambda,现在平均值将接近于零(如果平均值很小,则平均噪声将从零开始进一步倾斜),但它始终具有相同的标准偏差。
>>> noiseonlyimage = imageplusnoise - myimage
>>> np.mean(noiseonlyimage)
0.047399999999999998
>>> np.std(noiseonlyimage)
10.015934965843179

这里需要指出的是,lam参数是泊松分布的期望值,是无噪声的。您的起始图像看起来已经有噪声,因此我将首先通过孔径对恒星响应进行建模以获得无噪声图像,例如使用一些点扩散函数(如艾里斑、sinc 函数或类似函数)作为 numpy 的输入。随机泊松函数。

关于image - numpy.random.poisson 可以用于向图像添加泊松噪声吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19397719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com