簡體   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