繁体   English   中英

如何在imshow()命令中使用像素坐标,以便从python中适合图像的特定部分制作图像?

[英]How to Use Pixel Coordinates with the imshow() command in order to make images from specific sections of a fits image in python?

我有一个适合的图像,里面有很多天文物体。 我正在尝试根据我感兴趣的对象创建小的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文件,并为不同过滤器中的相同对象创建一组这些“标记”。

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

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

将显示数据的10x10角切口。 看起来您想显示以x,y坐标为中心的区域。 您希望每个图章都是4像素乘4像素,因此您可以

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM