如何在imshow()命令中使用像素坐标,以便从python中fits图像的特定部分生成图像?

2024-05-05 14:51:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张fits图像里面有很多天文物体。我正在尝试从我感兴趣的对象创建4x4小“图章”(对象周围的部分/图像)。我已经计算了原始fits文件中对象的像素坐标,并创建了一个包含坐标的文档。我知道imshow()命令可能是最好的选择,但是对于如何使用像素坐标来完成任务,我感到困惑。在

from pylab import *
import numpy as np
import pyfits
import matplotlib.pyplot as plat
coord = loadtxt('/Users/seadr/data/sky_coordinate_selection.txt')
x = coord[:,0]
y = coord[:,1]

data = pyfits.getdata('/Users/seadr/data/sky_bkgdcor_match.fits')

#vimin will calaculate the median of the data that does not equal 0
vmin = median(data[where(data != 0)])

#vmax will calculate the normalized median
vmax = 1.483 * np.median(abs(np.array(data[where(data!= 0)]) - 

np.median(data[where(data!= 0)])))
print vmax, vmin

plt.imshow(data,vmin = vmin,vmax = vmax)

第一个imshow()给了我原始的fits文档。在

如果我想在图像中看到一颗星星,同时知道它的像素坐标,我该怎么做呢。在

我的长期目标是能够创造许多“邮票”,因为我有许多不同版本的同一天文图像,因此他们采取不同的过滤器。我希望能够切换出原始的fits文件,并为不同过滤器中的相同对象创建一组这样的“图章”。在


Tags: the对象图像importdatanp像素where
1条回答
网友
1楼 · 发布于 2024-05-05 14:51:50

如果您想使用imshow对显示的图像进行切片,您可以简单地索引数据。例如

plt.imshow(data[0:10, 0:10])

将显示10x10角切出的数据。看起来你想显示一个以x,y坐标为中心的区域。你想让每个图章都是4像素乘以4像素,所以你可以这样做

^{pr2}$

其中xcoord和ycoord是要居中的对象的坐标,即x[i]和y[i],其中x和y是上面定义的数组,i是一些整数索引。在

相关问题 更多 >