2

我有一张适合的图像,里面有很多天文物体。我正在尝试从我感兴趣的对象中创建小的 4x4“图章”(对象周围的部分/图像)。我已经计算了原始拟合文件中对象的像素坐标,并创建了一个包含坐标的文档。我知道 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() 给了我原始的 fit 文档。

如果我想在图像中查看像一颗星这样的东西,同时知道它的像素坐标,我将如何去做。

我的长期目标是能够创建许多“邮票”,因为我有许多不同版本的同一天文图像,因此它们是在不同的滤镜中拍摄的。我希望能够切换出原始拟合文件,并为不同过滤器中的相同对象创建一组这些“标记”。

4

1 回答 1

2

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

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

将显示数据的 10x10 切角。看起来您想要显示以每个 x、y 坐标为中心的区域。您希望这些图章中的每一个都是 4 x 4 像素,所以您会这样做

imwidth = 2
plt.imshow(data[xcoord-imwidth:xcoord+imwidth, ycoord-imwidth:ycoord+imwidth])

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

于 2015-07-07T21:04:50.810 回答