Python讀取和顯示Fits檔案

2021-08-01 13:01:02 字數 2530 閱讀 2547

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檔案:

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

執行結果:

matlab中讀取和顯示fits檔案:

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);

data_grey_r=uint8(data_grey);

figure(10), imshow(data_grey_r);

end

執行結果:

到現在也沒有明白,為什麼我用上述方法,在idl中不能讀取aia的fits檔案;matlab中不能讀取eit的fits檔案(在此也向大家請教)

今天又在糾結這個問題,尋找解決方法,看到一篇博文在python中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.colorbar();

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檔案

顯示的效果不是很好,還需繼續學習改進。

TIFF 檔案顯示和讀取

tiff檔案的處理已經基本上完成了,在此寫下自己對tiff檔案處理的總結。1.tiff檔案是以tag作為資料的組織方式的,關於tiff檔案的所有內容都可以通過tag tag value 的形式讀寫。2.tiff檔案頭 0 1 位元組序 2 3 版本號 4 7 第一組tag 也可以叫第一幅 頁圖 的偏...

Python讀取YUV檔案,並顯示

opencv可以讀取的型別比較多,但大多是比較常見的型別,比如 jpg 和 png 但它不能直接讀取yuv格式的檔案,需要通過python讀取yuv檔案,並進行相應的轉換後,才能被opencv讀取,並進行後續相應的處理.話不多說,直接上程式.import cv2 from numpy import ...

python讀取nrrd資料並顯示

1.python中opencv讀取的彩色預設三通道 維度為w,h,c 型別uint8 讀取的灰度圖預設單通道,維度為 w,h 型別uint8.2.nrrd資料使用python庫nrrd讀取,得到 w,h,slice num 的三維度tensor。第三維是灰度圖的序號。資料型別為int16,此時無法使...