Python 读取和显⽰Fits ⽂件
FITS (Flexible Image Transport System)是天⽂学界常⽤的数据格式,由⽂件头和数据组成。
我需要分别处理来⾃EIT和AIA的fits⽂件,但因为Fits⽂件的标准并不统⼀,做实验的时候,对于EIT的fits⽂件在IDL中进⾏处理,AIA的fits⽂件在matlab中处理。很长⼀段时间都没有到能同时处理这两种fits⽂件的⽅法(如果有,烦请不吝赐教),到现在也没有明⽩,为什么我⽤IDL中的fisread不能读取AIA的fits⽂件;matlab中的fitsread不能读取EIT的fits⽂件(在此也向⼤家请教)。IDL中读取和显⽰Fits⽂件:
运⾏结果: Matlab中读取和显⽰Fits⽂件:
mreadfits,'D:\EIT_Dat\efz19970512.155012',index1,data1,header =header
data1=mrdfits('D:\test_data\AIA20130120_1428_0211.fits',1,header )
index2map,index1,data1,map1
plot_map,map1,/log
data = fitsread('D :\Learning \Master \Project \AIAData \20100705\Test \AIA20100705_0252_0171.fits', 'image');
data = flipud(data );
fitsShow (data );
%%显⽰函数,将灰度值转换到[0,255]进⾏显⽰
function [ output_args ] = fitsShow( data )
data_max=max(max(data ));
data_min=min(min(data ));
data_grey=255*(data -data_min)/(data_max -data_min );python怎么读取桌面上的文件
data_grey_r=uint8(data_grey);
figure(10), imshow(data_grey_r);
end
运⾏结果:
到现在也没有明⽩,为什么我⽤上述⽅法,在IDL中不能读取AIA的fits⽂件;matlab中不能读取EIT的fits⽂件(在此也向⼤家请教)
今天⼜在纠结这个问题,寻解决⽅法,看到⼀篇博⽂,于是就开始尝试⽤Python按照⽂中的⽅法对两种fits⽂件进⾏读取和显⽰。最后竟然成功了!期间也有⼀些bug,但最终问题还是解决了,激动~~
import matplotlib.pyplot as plt
import numpy as np
from astropy.io import fits
### 读取AIA fits
hdu = fits.open('D:/Learning/Master/Project/AIAData/20100705/Test/AIA20100705_0252_0171.fits');
#hdu.info();
hdu.verify('fix');
#hdu[1].data;
img_data_aia = np.flipud(hdu[1].data);
### 读取EIT fits
hdu = fits.open('D:/Learning/Master/Project/EITData/1997_May_12/efz19970512.001205');
#hdu.info()
img_data_eit = hdu[0].data;
### 显⽰fits图像
plt.imshow(img_data_eit, cmap= 'gray');
plt.show();
在读⼊AIA的fits⽂件后,如果直接执⾏hdu[1].data获取imgdata,编译器会报错:astropy.io.fits.verify.VerifyError: Unparsable card (OSCNMEAN), fix it first with .verify('fix').
这是因为AIA的fits⽂件不符合fits⽂件的标准,需要进⾏fix,所以执⾏代码:
hdu.verify('fix');
在这之后,就可以对imgdata进⾏操作。
Python中显⽰来⾃AIA的fits⽂件
显⽰的效果不是很好,还需继续学习改进。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论