怎么用IDL处理FITS文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用IDL处理FITS文件相关的知识,希望对你有一定的参考价值。

参考技术A 从开始做这个课题到现在就没少用IDL读FITS文件。这个方面用mrdfits比较容易,基本就是一行搞定数据,几行搞定文件头,用了不知多少次。其实在读FITS的时候就在想,把写FITS也搞明白吧,不过惰性太大,一直都回避这个问题。 今天合作者建议我把数据平滑一下重新计算。我用的那个程序的输入就是一个FITS文件,这就意味着我需要重新写一个平滑后的FITS文件,于是今天不得不去看看怎么写FITS文件了。原来知道和mrdfits对应的有mwrfits,专门写FITS文件的。我有一个数组a和文件头head,于是按照说明里写 IDL> mwrfits,a,'out.fits',head 这样倒是可以生成一个FITS文件,查看了也正常,可是我用来处理的那个程序就是不认。不得已,参考了一下别人的程序,用writefits IDL> writefits, 'out.fits', a, head 这样生成的FITS文件就能被识别了。原因为何,有待研究。 在文件头某些信息改变的情况下还需要改一下文件头里的参数,可以用fxaddpar,例如改变参数'NAXIS'的值 IDL> fxaddpar,'NAXIS',2

数组/矩阵转换成Image类

Python下将数组/矩阵转换成Image类

原创 2017年04月21日 19:21:27

先说明一下为什么要将数组转换成Image类。我处理的图像是FITS (Flexible Image Transport System)文件,是一种灰度图像文件,也就是单通道图像。FITS图像的特点是灰度值取值为0~65535,这类图像在python下读成数组首先是不能直接转换成位图,也就不能用OpenCV、Image等方法了。如果是普通的jpg图像,用自带的Image库就能实现很多功能。 
技术分享图片

技术分享图片
下方的这幅图就是通过python下的Image库中的rotate函数实现的 
接下来贴上代码。


import Image
import numpy as np
#生成一个数组,维度为100*100,灰度值一定比255大
narray=np.array([range(10000)],dtype=‘int‘)
narray=narray.reshape([100,100])
#调用Image库,数组归一化
img=Image.fromarray(narry*255.0/9999)
#转换成灰度图
img=img.covert(‘L‘)
#可以调用Image库下的函数了,比如show()
img.show()
#Image类返回矩阵的操作
imgdata=np.matrix(img.getdata(),dtype=‘float‘)
imgdata=imgdata.reshape(narry.shape[0],narry.shape[1])
#图像归一化,生成矩阵
nmatrix=imgdata*9999/255.0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

技术分享图片

这是刚才代码生成的图片,是不是很简单?




以上是关于怎么用IDL处理FITS文件的主要内容,如果未能解决你的问题,请参考以下文章

处理idl文件

读取 FITS 文件

shp矢量文件批处理裁剪栅格影像_IDL/ENVI

在 C++ 项目中包含 .idl 文件

oaidl.idl 和 ocidl.idl 有啥用?

TS文件与m3u8文件合并怎么排序