我正在寻找一种方法来定位我的 FITS 图像上的像素坐标,这些坐标对应于过采样后对象的 ra 和 dec 位置(以度为单位)。如果我没有过采样,这会很简单,但我需要。给定一个未改变的 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)
如果有人对如何在过采样后恢复准确的像素坐标有任何想法,那就太好了。谢谢!