我希望找到一种方法,可以定位我的经过超采样后的FITS图像中与目标在以度为单位给出的赤经和赤纬位置对应的像素坐标。如果我不需要进行超采样,这将是简单的操作。但是,我需要进行超采样处理。对于一个未经修改的FITS图像,我可以执行以下操作:
from astropy.wcs import WCS
ra, dec = (43.603, 31.029)
w = WCS('myimage.fits')
x, y = w.all_world2pix(ra, dec, 1) #this gives me the pixel coordinates of the object at (ra, dec) position
然而,当我对其进行过采样,然后尝试查找像素坐标时,由于(ra,dec)不再适用于过采样图像,因此显然不准确。 由于我正在进行5x5的过采样,因此我尝试将上述x、y
乘以5。但是,当我在ds9中放大这个点时,它显示物体偏离中心,所以我认为这不起作用。由于这可能有助于查看,下面是代码中的过采样部分。在此处,data
只是原始FITS图像中包含数据的2D numpy数组。
from astropy.nddata import Cutout2D
import numpy as np
from scipy import interpolate
def oversample(data_set, N):
size = 120 #pixel size of my box cutout
geom_ctr = (np.shape(data_set)[0]//2, np.shape(data_set)[1]//2)
cutout = Cutout2D(data_set, geom_ctr, size).data
Y, X = np.shape(cutout)
x = np.linspace(0, 0.5, X)
y = np.linspace(0, 0.5, Y)
f = interpolate.interp2d(x, y, cutout, kind='cubic')
Xnew = np.linspace(0, 0.5, X*N)
Ynew = np.linspace(0, 0.5, Y*N)
new_data = f(Xnew, Ynew)
return new_data
resampled_data = oversample(data, 5)
如果有任何关于如何在过采样后恢复准确的像素坐标的想法,那将是非常好的。谢谢!