我试图为没有数据的像素遮罩我的健康地图,但是当我使用badval=-1.6375e+30应用健康遮罩时,我的遮罩周围似乎有一个边界。
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)有没有人能帮我消除这个边框效应?

发布于 2018-06-01 22:09:02
我仍然不知道问题的全貌,但我假设你的问题与口罩的降级有关。
从高分辨率的布尔蒙版转换到较低的分辨率时,有三种不同的策略可供选择。选择取决于您的问题。
我将使用您提供的蒙版演示效果,显示放大效果:

降级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)这将生成下面的右侧面板。
希望这篇文章对你有帮助,如果你有任何问题,请告诉我!

https://stackoverflow.com/questions/50498612
复制相似问题