Я хотел бы сгладить карту, которая не покрывает полное небо.Эта карта не является гауссовой и не имеет нулевого значения, поэтому поведение по умолчанию healpy
, при котором она заполняет отсутствующие значения 0, приводит к смещению в сторону более низких значений по краям этой маски:
import healpy as hp
nside = 128
npix = hp.nside2npix(nside)
arr = np.ones(npix)
mask = np.zeros(npix, dtype=bool)
mask[:mask.size//2] = True
arr[~mask] = hp.UNSEEN
arr_sm = hp.smoothing(arr, fwhm=np.radians(5.))
hp.mollview(arr, title='Input array')
hp.mollview(arr_sm, title='Smoothed array')
Я бы хотел сохранить острый край, установив вес маскируемых значений на ноль, вместо того, чтобы устанавливать значения на ноль,Это кажется трудным, потому что healpy
выполняет сглаживание в гармоническом пространстве.
Чтобы быть более точным, я хотел бы имитировать ключевое слово mode
в scipy.gaussian_filter()
.healpy.smoothing()
неявно использует mode=constant
с cval=0
, но мне потребуется что-то вроде mode=reflect
.
Есть ли какой-нибудь разумный способ преодолеть эту проблему?