1

我正在尝试为没有数据的像素遮盖我的修复贴图,但是当我使用 应用修复遮罩时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)

谁能帮我消除这种边框效果?

在此处输入图像描述

4

1 回答 1

1

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

从高分辨率布尔蒙版到较低分辨率时,您可以遵循三种不同的策略。选择取决于您的问题。

我将使用您提供的蒙版来说明效果,并显示放大:

在此处输入图像描述

使用 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)

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

希望这对您有所帮助,如果您有任何问题,请告诉我!

在此处输入图像描述

于 2018-06-01T14:09:01.657 回答