繁体   English   中英

对FITS图像进行过采样后,从ra,dec获取像素坐标

[英]Get pixel coordinates from ra, dec after oversampling FITS image

我正在寻找一种方法,可以在过采样后在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(而不是原始图像中的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]]) )一样,您将在计算坐标的代码中快速找到并解决该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM