我写了校准图像的脚本(暗框和平场)…这是代码的一部分
for n in range(len(img)):
with pyfits.open(img[n], mode='update', memmap=True) as im:
imgg = im[0].data
header = im[0].header
imgg.astype(float)
imgg = (imgg - dd) / df
imgg[np.isnan(imgg)] = 1
imgg.astype(int)
plt.imshow(imgg, cmap=plt.cm.Greys_r, vmin=0.5, vmax=1.5)
plt.show()
该部分代码实现了暗框平场图像的标定。。。当我在绘制vmin
和vmax
时,我得到了正确的图片,但我不知道vmin
和vmax
是如何工作的。我需要在图像数据(imgg
)上应用这个,因为当我保存数据时,得到的图像没有vmin
和vmax
。。。
有什么建议吗?
第二个问题。。。如何在fits文件中保存数据更改?当我使用im.close()
时,这只对一个文件起作用,但不在循环中起作用。
谢谢
编辑
好的,这是完整的脚本
import numpy as np
import pyfits
from matplotlib import pyplot as plt
import glob
dark=glob.glob('.../ha/dark/*.fits')
flat=glob.glob('.../ha/flat/*.fits')
img=glob.glob('.../ha/*.fits')
sumd0 = pyfits.open(dark[0])
sumdd=sumd0[0].data
sumdd.astype(float)
for i in range(1,len(dark)):
sumdi=pyfits.open(dark[i])
sumdi=sumdi[0].data
sumdd=sumdd.astype(float)+sumdi.astype(float)
dd=sumdd/len(dark)
sumf0 = pyfits.open(flat[0])
sumff=sumf0[0].data
sumff.astype(float)
for i in range(1,len(flat)):
sumfi=pyfits.open(flat[i])
sumfi=sumfi[0].data
sumff=sumff.astype(float)+sumfi.astype(float)
ff=sumff/len(flat)
df=(ff-dd)
for n in range(len(img)):
with pyfits.open(img[n],mode='update',memmap=True) as im:
imgg=im[0].data
header=im[0].header
imgg.astype(float)
imgg=(imgg-dd)/df
imgg.astype(int)
plt.imshow(imgg,cmap=plt.cm.Greys_r,vmin=0.5,vmax=1.5)
plt.show()
在
imshow
中使用vmin
和vmax
参数与norm一起用于规范化数据。示例:
你得到这样一个图,其中
imshow
将数据规范化为其min
和max
。但是当我们将
vmin
和vmax
设置为0和1时,颜色将被标准化,就像数据中存在一个值0和一个值1一样。在这里,我们将
imshow
更改为从颜色栏中可以看到,它被标准化为0和1。
有点分散的问题,但我认为这是你想要的(从你在另一个答案的评论)。
要使用与} :
vmin
和vmax
相同的行为钳制数据,请使用^{就你而言:
相关问题 更多 >
编程相关推荐