def imresample(image, source_pscale, target_pscale, interp_order=1):
"""
Resample data array from one pixel scale to another
The resampling ensures the parity of the image is conserved
to preserve the centering.
Parameters
----------
image : `numpy.ndarray`
Input data array
source_pscale : float
Pixel scale of ``image`` in arcseconds
target_pscale : float
Pixel scale of output array in arcseconds
interp_order : int, optional
Spline interpolation order [0, 5] (default 1: linear)
Returns
-------
output : `numpy.ndarray`
Resampled data array
"""
old_size = image.shape[0]
new_size_raw = old_size * source_pscale / target_pscale
new_size = int(np.ceil(new_size_raw))
if new_size > 10000:
raise MemoryError("The resampling will yield a too large image. "
"Please resize the input PSF image.")
# Chech for parity
if (old_size - new_size) % 2 == 1:
new_size += 1
ratio = new_size / old_size
return zoom(image, ratio, order=interp_order) / ratio**2
评论列表
文章目录