python - 如何将像素坐标与 imshow() 命令一起使用,以便从 python 中适合图像的特定部分生成图像?

标签 python image imshow fits pyfits

我有一张合适的图像,其中有许多天文物体。我正在尝试从我感兴趣的对象中创建小型 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() 为我提供了原始的拟合文档。

如果我想在图像中查看诸如单个星星之类的东西,同时知道其像素坐标,我将如何去做。

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

最佳答案

如果您想使用 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 是某个整数索引.

关于python - 如何将像素坐标与 imshow() 命令一起使用,以便从 python 中适合图像的特定部分生成图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30925962/

相关文章:

python - 在 Python 中使用 BeautifulSoup 从 HTML 中删除回车符

标题的 HTML 背景图片

javascript - 使用 Jquery 和 servlet 检索图像不显示图像

python - 如何用两种颜色绘制imshow?

python - 通用 :python command in vim?

python - 使用 train_test_split 的一个命令创建数据集的多分割

Python-为什么 imshow() 会为非零数组生成空白图像?

opencv - imshow 断言错误

python - 如何在函数之间实时共享变量

css - 如何删除 CSS 中 <image> 周围的间距?