Healpy面具有边框

时间:2018-05-23 22:58:02

标签: python healpy

我试图为没有数据的像素屏蔽我的healpy地图,但是当我使用badval=-1.6375e+30应用healpy面具时,我的面具周围似乎有一个边框。

import healpy as hp
import numpy as np

# load the mask
mask = hp.read_map('mask_nvss_S20-S1000_Ns64.fits')

# degrade the mask to NSIDE = 16
mask16 = np.round(hp.ud_grade(mask, 16))

# apply it to the map
masked_map = hp.ma(map1)
masked_map.mask = np.logical_not(mask16)

# masked map
nvss_map = np.round(masked_map)

有人可以帮我删除这种边框效果吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

我仍然没有对问题进行全面了解,但我认为你的问题与面具的降级有关。

当从高分辨率布尔掩码变为较低分辨率时,您可以遵循三种不同的策略。选择取决于您的问题。

我将使用您提供的面具说明效果,显示放大:

enter image description here

用bool型

降级面具

您可以简单地降级布尔蒙版,为您提供下图中的左侧面板。请注意,在此过程中,小补丁将被取消屏蔽。

map_lowres_bool = hp.ud_grade(mask_highres.astype(bool), nside=16)

降级浮动类型的面具

如果你改为降级float类型的面具,你将得到一个带有权重的连续地图(下面的中间面板)。我认为这会产生你所看到的效果。

map_lowres_float = hp.ud_grade(mask_highres.astype(float), nside=16)

正确降级bool类型

的面具

您还可以降级布尔掩码,使所有遮罩区域保持屏蔽状态。由于分辨率较低,遮罩的补丁将比原始遮罩更大。

mask_lowres_proper = hp.ud_grade(mask.astype(float), nside=16).astype(float)
mask_lowres_proper = np.where(mask_lowres_proper == 1., True, False).astype(bool)

这会产生下面的右侧面板。

希望您发现这有用,如果您有任何疑问请与我联系!

enter image description here