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,此時無法使...