gpt4 book ai didi

python - 调整子图大小后如何更改标题?

转载 作者:行者123 更新时间:2023-11-28 18:27:16 25 4
gpt4 key购买 nike

我加载了一张完整的 map

from astropy.io import fits
from astropy.wcs import wcs

mapheader = fits.getheader(MapFile, 0)
mapdata = fits.getdata(MapFile, 0)
w = wcs.WCS(mapheader)

然后我从中取出一个方形子图假设中心在 RA,DEC 以度为单位这可以使用 CutOut2D 轻松完成

from astropy.nddata import Cutout2D
from astropy import coordinates
from astropy import units as u

center = coordinates.SkyCoord(RA*u.deg, DEC*u.deg, frame='fk5')
submap = Cutout2D(mapdata, center, size=16*u.pix, wcs=w)
submapheader = submap.wcs.to_header()

标题的相关区别在于它移动了引用像素“CRPIX”

例如,如果我调整图像大小,我会进行插值并从 16 像素传递图像到 128 像素

from scipy.misc import imresize
newsubmap = imresize(submap.data, (128,128), interp=‘cubic’)

我应该如何更改标题以在 newsubmap 上获得良好的投影?

我尝试将引用像素乘以调整大小因子,在本例中为 128,但这并不简单

最佳答案

scipy.misc.imresize在您的情况下,将图像大小调整为 (128, 128)。鉴于您的声明:

I tried multiplying the reference pixel by the resizing factor, which is 128 in this example, but it's not simple as that.

我认为这是这里的第一个陷阱。您真的确定要将大小调整为 (128, 128) 还是要将其“放大”128 倍甚至 1.28 (请注意 imresize 使用分数值!)

>>> from scipy.misc import imresize
>>> import numpy as np
>>> imresize(np.ones((1000, 1000)), (100, 100)).shape # to (100, 100)
(100, 100)
>>> imresize(np.ones((1000, 1000)), 50).shape # half the size. 50->50%
(500, 500)

请确保您正确使用了 imresize


所以下一步是 reshape WCS。幸运的是 WCS 允许切片,所以如果您知道原始形状和调整大小因子,这将非常容易。

假设您有一个像这样的 WCS:

>>> im.wcs
WCS Keywords
Number of WCS axes: 2
CTYPE : 'PIXEL' 'PIXEL'
CRVAL : 2044.203 239.489
CRPIX : 1022.1 119.7
PC1_1 PC1_2 : 2.0 0.0
PC2_1 PC2_2 : 0.0 2.0
CDELT : 1.0 1.0

你可以给它一个步骤切片:

>>> im.wcs[::2, ::2]  # half the size
WCS Keywords
Number of WCS axes: 2
CTYPE : 'PIXEL' 'PIXEL'
CRVAL : 2044.203 239.489
CRPIX : 511.30000000000001 60.100000000000001
PC1_1 PC1_2 : 2.0 0.0
PC2_1 PC2_2 : 0.0 2.0
CDELT : 2.0 2.0

或者用小于 1 的步长对它进行切片以增加它:

>>> im.wcs[::1/128, ::1/128]  # assuming you increase each axis by a factor of 128.
WCS Keywords
Number of WCS axes: 2
CTYPE : 'PIXEL' 'PIXEL'
CRVAL : 2044.203 239.489
CRPIX : 130765.3 15258.1
PC1_1 PC1_2 : 2.0 0.0
PC2_1 PC2_2 : 0.0 2.0
CDELT : 0.0078125 0.0078125

请注意,PCCD 以及可能的 SIP 和其他失真将被忽略。您必须手动处理它们。但是 CDELT 值将被处理,因此简单的 FITS 文件将被正确处理。

注意:我删除了 NAXIS 关键字,因为它们在下一个版本中可能会发生变化,所以无论如何这些都不可靠。这些目前没有处理,在下一个版本中,只有当“开始、停止和步骤”是整数或无时,它们才会被处理。

关于python - 调整子图大小后如何更改标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40475030/

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