为FITS IMAGE创建WCS

时间:2015-08-13 10:10:31

标签: python astronomy astropy

更新时间(2016年10月3日):我想这会在未来的任何人看到这里。我基本上把这个问题搁置了。我本质上是在尝试制造"拍摄图像后的世界坐标系。我的想法是,如果我可以从特定的夜晚减少数百张图像获得WCS,那将更容易。然而,如果没有图像中的参考点或者只是在拍摄图像时在源处制作一个参考点,这样的事情就不那么容易了。在撰写本文时,我的大学望远镜正在升级为具有自动引导系统,因此我们希望能够以这种方式在我们的图像标题中实现WCS。

希望没有太多的假设知识。这纯粹是使用熵的天文减少问题。

一些背景:     现在我有一大堆合适的图像;数百个不同的目标。如果你只是坐在目标上,我使用的望远镜有一些讨厌的漂移,所以现在我需要对齐我的所有图像。我可以使用像PixInsight这样的非自由软件,我听说它做得很漂亮,但我是一个好奇的大学生,想要以自由的方式/艰难的方式尝试。在广泛寻找一种方法来对齐许多图像与IRAF中的漂移后,似乎我最需要的是星坐标。所以我提出这样的想法:如果我得到一个参考星的世界坐标,然后使用它对我所有的其他图像我可以提取每个图像中参考星的像素坐标。这将允许我计算移位,从而对齐数据。

关于我的烦恼:

按照有关使用astropy从fit头中获取wcs的文档,我遇到错误后出现问题:

警告:FITSFixedWarning:EPOCH =' 2015.5' RA / Dec(年)的/ Epoch 预计会出现浮点值。 [astropy.wcs.wcs]

这个时代很奇怪,因为望远镜不能使用2000年的EPOCH进行转换,因此系统会将其转换为当前年份以正确转换RA和DEC,我认为这就是在标题中编目的内容。如果我从这里按下并尝试将像素坐标转换为世界坐标,那么我最终会再次使用像素坐标,因此显然这不起作用。我的想法是为每个图像手动创建一个WCS对象,但我真的不能很好地遵循天文数据文档。 wcs对象的属性让我感到困惑,因为我似乎知道的是RA,而标题是Dec。

有人可以帮我解决这个问题吗?

请不要告诉我使用imstar,要么是因为这需要我安装wfctools到IRAF并且每个人都知道IRAF是一个挑剔的野兽我可能会破坏。

谢谢!

PS:希望有人仍然愿意在这里帮助我,但至于我的借口夏季结束了,这个问题就到了休假的一边。但是,我想恢复它并解决它并重新改写它。

基本上,我的大学有一台只有本科生真正使用的望远镜,因为它是今天标准研究等级的底线。因此,它继续是天文学本科生驾驶30英寸望远镜的良好练习。最终,图像上的拟合标题不包括世界坐标系(WCS),我认为这是一个问题,因为我认为如果所有图像都有WCS,那么对齐图像将会更加容易。所以我要做的是在图像标题中正确添加一个WCS,我对如何做不太了解。

我的第一次尝试只是测试在天蝎座内制作WCS,我将提供一些初步代码,但是他们已经充满了失败,因为制作WCS的关键词让我感到困惑。我在这里找到了一个好的描述和可能的WCS教程:http://astroweb.iag.usp.br/~moser/notes/GAi_FITSimgs.html

这是我尝试制作WCS的代码(这有点可怜):

import numpy as np
from astropy.io import fits
from astropy import wcs

def main():
    w = wcs.WCS(naxis=2)

    w.wcs.crpix = [256, 256] # center pixel

    w.wcs.crval = [18.73337, 0.54708] # RA and dec values in hours and degrees

    w.wcs.cdelt = np.array([-1.0, 1.0])

    w.wcs.ctype = ["RA-TAN", "DEC-TAN"]

    #print w.wcs.print_contents()

    wx, wy = w.wcs_pix2world(232.85, 278.14, 1) # pixel coords of interested star
    print wx, wy

    pix_x, pix_y = w.wcs_world2pix(wx, wy, 1)

    # for gstandard010; another images WCS
    w2 = wcs.WCS(naxis=2)
    w2.wcs.crpix = [256, 256]
    w2.wcs.crval = [18.733427777777777, 0.5471388888888888]
    w2.wcs.cdelt = np.array([-1.0, 1.0])
    w2.wcs.ctype = ["RA-TAN", "DEC-TAN"]

    wx2, wy2 = w.wcs_pix2world(pix_x, pix_y, 1)
    print wx2, wy2

    # Using first WCS wx, and wy to find the pixel coordinates in this new images.
    # It only outputs the first images pixel values which is incorrect.
    pix_x2, pix_y2 = w2.wcs_world2pix(wx, wy, 1)
    print pix_x2, pix_y2

main()

OutPut:
41.88337 22.68708
41.88337 22.68708
232.850057778 278.139941111

我相信我需要进一步填写WCS参数的详细信息,包括缺少的参数,那么有人可以帮我解决这个问题吗?

0 个答案:

没有答案