2

对于我正在进行的项目,我需要计算给定表面亮度分布的导数,该导数与像素响应函数(以及 PSF 等)进行卷积。

出于各种原因,但主要是为了保持一致性,我希望使用 GALSIM 代码的胆量来做到这一点。然而,由于在这种情况下,定义为非参数模型之和的“通量”就图像本身而言不再具有物理意义(在这种情况下它总是被认为是无噪声的),因此存在一定的我希望能够在没有通量归一化的情况下定义插值图像的情况。

代码似乎并不关心“通量”是否为负,但我遇到了某些情况,其中“通量”在机器精度为零的范围内,因此断言 ``dabs(flux-flux_tot) <= dabs( Flux_tot)'' 失败。

因此,我的问题是:是否可以指定一个非参数模型进行插值而不指定通量归一化值?

4

1 回答 1

1

目前没有办法使用 galsim.InterpolatedImage() 类来做到这一点;您可以在 GitHub 上的 GalSim 存储库中打开一个问题以提出此功能请求。

有一种方法可以利用 GalSim 的胆量做到这一点;如果您愿意深入研究源代码(lensing_ps.py - 只需搜索 SBInterpolatedImage 以查找相关代码位),则在透镜功率谱功能中说明了一个示例。基本思想是使用相关的 C++ 类 galsim._galsim.SBInterpolatedImage() 而不是使用 galsim.InterpolatedImage(),它可以在 python 中访问。SBInterpolatedImage 可以使用图像和实空间和傅里叶空间中的插值选项进行初始化,如 lensing_ps.py 中的示例所示,然后使用 xValue() 方法查询以获取插值到某个位置的值。

这个技巧在 lensing_ps.py 中是必要的,因为我们正在插入平均值为零的剪切场,所以我们遇到了同样的问题。GalSim 用户通常不建议使用 SBInterpolatedImage 类(我们建议仅使用 python 类),但它绝对是目前解决问题的一种方法。

于 2015-06-18T16:47:30.543 回答