首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GalSim用于galsim.GSObject.draw()的自动图像大小行为

GalSim用于galsim.GSObject.draw()的自动图像大小行为
EN

Stack Overflow用户
提问于 2014-03-29 19:07:47
回答 1查看 96关注 0票数 2

我注意到可以不使用GSObject.draw关键字来调用它。文档指出,如果image = None,则返回自动大小的图像。这个自动尺寸究竟是如何确定的?它是否确保在图像中保留星系通量的一部分,如果是的话,是什么部分?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-29 20:11:25

是。总结是,它试图得到至少99.5%的流量。

每个原子对象都有一个内部属性stepk,它是傅里叶图像中使用的网格大小。这是基于一个真实的图像,包括至少99.5%的流量,以避免混叠在FFT。

然后,当您组合对象时(与Add、Convolve等)或变换它们(剪切、滑脱等)对于新的配置文件,步骤k的值是最新的,有时使用启发式方法,当精确的公式太难处理时,我们通常试图错误地站在保守的立场。

然后,当您用image=None绘制最终对象时,它使用最后的步骤k值来计算N = 2pi * wmult / (scale * stepk)的邮票大小,其中scale是图像的像素尺度,通常您会显式地指定(im = obj.draw(scale=pixel_scale)),而wmult是一个可选的参数,它的工作就是这样--制作比默认情况下更大的图像。

然后这个N被舍入到2^k3 * 2^k。这有助于提高后续FFT的效率。

如果您想要更改99.5%的值,这在GSParams类中也是可能的。它是参数alias_threshold。实际上是1-alias_threshold。默认的alias_threshold是5e-3,但是如果您愿意,可以通过执行以下操作来降低这个值:

代码语言:javascript
复制
gsparams = galsim.GSParams(alias_threshold=1.e-3)
gal = galsim.Sersic(..., gsparams=gsparams)
psf = galsim.Kolmogorov(..., gsparams=gsparams)
pix = galsim.Pixel(..., gsparams=gsparams)
conv = galsim.Convolve([gal,psf,pix])
im = conv.draw(scale=pixel_scale)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22735579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档