首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Healpy口罩有边框

Healpy口罩有边框
EN

Stack Overflow用户
提问于 2018-05-24 06:58:02
回答 1查看 259关注 0票数 0

我试图为没有数据的像素遮罩我的健康地图,但是当我使用badval=-1.6375e+30应用健康遮罩时,我的遮罩周围似乎有一个边界。

代码语言:javascript
复制
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)

有没有人能帮我消除这个边框效应?

EN

回答 1

Stack Overflow用户

发布于 2018-06-01 22:09:02

我仍然不知道问题的全貌,但我假设你的问题与口罩的降级有关。

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

我将使用您提供的蒙版演示效果,显示放大效果:

降级bool类型的掩码

您可以简单地降级布尔掩码,得到左面板,如下图所示。请注意,在此过程中,小补丁将被取消屏蔽。

代码语言:javascript
复制
map_lowres_bool = hp.ud_grade(mask_highres.astype(bool), nside=16)

降级浮点类型的蒙版

如果你将float类型的蒙版降级,你将得到一个带有权重的连续贴图(下面的中间面板)。我假设这会产生你所看到的效果。

代码语言:javascript
复制
map_lowres_float = hp.ud_grade(mask_highres.astype(float), nside=16)

正确降级bool类型的掩码

也可以降级布尔遮罩,使所有被遮罩的区域保持遮罩状态。由于分辨率较低,您的遮罩面片将比原始遮罩中的大。

代码语言:javascript
复制
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)

这将生成下面的右侧面板。

希望这篇文章对你有帮助,如果你有任何问题,请告诉我!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50498612

复制
相关文章

相似问题

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