【问题标题】:Get pixel coordinates from ra, dec after oversampling FITS image过采样 FITS 图像后从 ra、dec 获取像素坐标
【发布时间】:2019-01-23 22:47:30
【问题描述】:

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

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

【问题讨论】:

    标签: python python-3.x astropy fits oversampling


    【解决方案1】:

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

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

    一些提示:

    • 首先学习使用 Cutout2D,通过阅读此页面:http://docs.astropy.org/en/stable/nddata/utils.html 请注意,您在示例中使用了 cutout.data,但也有一个 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]])),您将很快找到并修复计算坐标的代码中的问题。

    【讨论】:

      猜你喜欢
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      • 2021-05-19
      • 1970-01-01
      相关资源
      最近更新 更多