gpt4 book ai didi

python - 对 FITS 图像过采样后从 ra、dec 获取像素坐标

转载 作者:行者123 更新时间:2023-12-05 06:31:07 26 4
gpt4 key购买 nike

我正在寻找一种方法来定位我的 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)

如果有人对我如何在过采样后恢复准确的像素坐标有任何想法,那就太好了。谢谢!

最佳答案

原则上,您描述的“将 x、y 乘以 5”的解决方案是正确的。您的实现中一定存在错误。

您没有显示用于计算坐标的代码,所以我只能猜测问题所在。

一些提示:

  • 首先学习使用 Cutout2D,阅读此页面:http://docs.astropy.org/en/stable/nddata/utils.html请注意,您在示例中使用了一个 cutout.data,但还有一个代表您的 cutout 的 WCS 的 cutout.wcs。如果您想使用剪切图,则必须使用该 WCS(而不是原始图像中的 WCS)在世界坐标和像素坐标之间转换。
  • 尝试在过采样图像上获得具有像素/天空坐标的工作示例,而无需额外复杂的剪切。如果您发布了一个我们可以运行但给出错误结果的最小示例,您的问题会更容易回答。
  • 知道如果您在 w.all_world2pix(ra, dec, 1) 调用中传递 origin=1 作为第三个参数,那么第一个像素的中心将位于像素位置 1。您必须获得要插值的 x 和 y 插值位置,以及用于计算坐标的代码行。传递 origin=0.5 可能更容易,即将第一个像素的中心放在像素位置 0.5,从而将图像的角放在像素位置 0.0?这样可能更容易编写放置插值节点的行,并正确计算插值图像中的坐标。

如果您将任务分成单独的步骤或函数(而不是一个函数同时进行剪切和上采样)并使用精心选择的测试用例,您知道预期的输出(例如,一张只有几个像素的图像知道预期的结果,例如 data = np.array([[1, 2, 3], [4, 5, 6]])),您将很快找到并解决您的问题计算坐标的代码。

关于python - 对 FITS 图像过采样后从 ra、dec 获取像素坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51886126/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com