本篇博客主要用于学习交流,用来记录自己学习过程中遇到的问题,所获得的感想,同时也为了方便以后的查找与回顾。另外也为了向各位前辈学习,纠正自己思维上的不足。文中可能会引用其他前辈的博客,文末会给出相应链接,侵删!

前言

由于目的需要,需处理空间天气图像数据,主要是空间天气数据,但目前空间天气图像数据的取得并不顺利,找到的是.fits文件,通过参考网上的一些方法,将.fits转换为.png图像,从而得到所需数据。

自己所获得的.fits数据,是从JSOC(http://jsoc.stanford.edu/)上 下载的,下载过程使自己很是糟心!

在此,也向广大网友寻求帮助,如果您有做过关于太阳黑子、太阳耀斑、太阳日冕物质抛射的检测的实验或项目,请联系我,自己很是需要您的帮助!谢谢,文末会给出自己QQ,添加时,请备注 太阳黑子检测。

1、FITS基本文件格式

FITS (Flexible Image Transport System) 是国际天文学会(IAU)1982 年确定的世界各天文台之间用于数据传输、交换的统一标准格式。它描述了数据的定义和数据编码的一般方法。它是与机器无关的,用磁带作为标准传输介质的独立方法。它提供了图像的单值转换,精度包括符号在内可以达到 32 位。对一维、二维、三维、甚至多维的数据类型都提供了合适的转换。它不仅适用于天文数据, 对其他学科的数据也是可用的。 FITS 是天文学界常用的数据格式,专门为在不同平台之间交换数据而设计。1988年的国际天文学联合会(IAU)大会指定IAU的FITS工作组全权负责此格式的修订。IAU规定,今后对FITS标准的修改不得破坏前后一致性,也就是所谓的“once FITS, always FITS”一说。

FITS文件由文件头和数据组成。在文件头中存储有对该文件的描述,如观测时间、观测对象、拍照温度、曝光时间等信息,同时也可以在文件头中注明观测时的视场、精度等,便于后期数据分析之用。文件头部分每行占80个字符,并以END结尾。按南京大学郑兴武教授所编《现代天体物理实验指导》一书中的说法,文件头共有36行,若未满则以空格补之。较重要的几项有:BITPIX(指明图像位数)、NAXIS(指明图像维数)、NAXISn(代表第n维的像素数)。数据部分可以是图象或其他信息(如数据表),这些数据按头部所给出的描述进行组织。

下图是FITS的基本格式:

基本fits的文件格式大体上如上图所示,但是还有一个关键点是文件头中36行标题的格式。

文件头中必须存在的五个关键词是: 
SIMPLE,BITPIX,NAXIS,NAXISn 和 END。它们的含义是: 
SIMPLE 逻辑变量,指明文件是否符合基本 FITS 标准。 
BITPIX 整数变量,指明用于表示每一个象元值的位数。 
NAXIS 整数变量,指明图象里坐标轴数。 
NAXIS1 整数变量,指明在数组内沿最快变化轴的象元数。 
NAXIS2 整数变量,指明在数组内沿次快变化轴的象元数。

举个例子:

SIMPLE = T 
BITPIX = 16 
NAXIS = 2 
NAXIS1 = 320 
NAXIS2 = 512 
END

说明:

SIMPLE=T 其中逻辑值 T(True)表明该磁带文件是简单的 FITS 数据文件。

BITPIX=16 表明每一象元值为16 位带符号的补码形式,每一象元值占用两个字节, 每一记录可记 1440 个像元值(23040÷16= 1440)。

NAXIS=2 表明图象为两维阵列NAXIS1=320 表明第一轴 (列变化方向)的长度为 320 个象元。

NAXIS2=512 表明第二轴(行变化方向)的长度为 512行。

END表明标题结束。记录后面的所有零字节都用 ASCII 码空格填满。

这五个关键次的顺序不能颠倒。

除了这五个必须的关键词,还有一些其他的关键词: 
——BSCALE(浮点数)和 BZERO(浮点数):用于将磁带上的象元值转换为真实值的参数:真实值= ( 磁带值×BSCALE)+BZERO 
——BUNIT(字符):单位 
——BLANK (整数), 如果某象元未定义值, 则磁带上该象元对应位置上所写入的就是由 BLANK 定义的数值。 
——OBJECT (字符): 图象名 
——DATE (字符): 写 FITS 文件的日期(‘日/月/年’)。 
——DATE_OBS (字符): 数据的观测日期(‘日/月/年’)。 
——ORIGIN (字符): 写磁带的研究单位。 
——INSTRUME (字符): 数据的探测仪器。 
——TELESCOP (字符): 所使用的望远镜。 
——OBSERVER (字符):观测者姓名。 
——CRVALn (浮点数), CRPIXn(浮点数), CDELTn(浮点数), CTYPEn(字符)和 CROTAn(浮点数):这些关键词是用于定义第 n个轴的象元坐标与真实的物理坐标之间的关系。 
——DATAMAX(浮点数)和 DATAMIN(浮点数): 给出文件中数据的最大值和最小值。 
——EPOCH(浮点数): 坐标系统的历元(以年为单位)。 
——空白(无)、COMMENT(无)和 HISTORY(无): 用于说明其它一些信息表明第 9-80 列是注释用的 ASCII 文本。

注意, 图象阵中象元的二进制数据是高位在前, 低位在后。

2、将.fits数据转换为.png图像

运行平台:Windows 
Python版本:Python3.6
IDE:Jupyter notebook

2.1 本地.fits转化为.png

整体截图:

In [1]:

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
#from astropy.utils.data import download_file
from astropy.io import fits

In [2]:

path = "F:\DownloadData\solar flare data\magnetogram.fits"
hdu_list = fits.open(path, cache=True)
#print(type(hdu_list))
hdu_list.info()image_data = hdu_list[1].data  #此处是hdu_list[1].data,不是hdu_list[0].data
hdu_list.close()image_data = fits.getdata(path, cache=True)
print(type(image_data))
print(image_data.shape)plt.imshow(image_data, cmap='gray')
plt.colorbar()

生成的空间天气.png图像如下:

如此,就可以保存生成的.png图像。

2.2 通过.fits数据链接 转换

有时候,不用下载.fits文件,也可以直接进行转换。

整体截图

In [1]:

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from astropy.utils.data import download_file
from astropy.io import fits

In [2]:

path = 'http://data.astropy.org/tutorials/FITS-images/HorseHead.fits'
image_file2 = download_file(path, cache=True)
hdu_list2 = fits.open(image_file2)
hdu_list2.info()image_data2 = hdu_list2[0].data   #此处是hdu_list[0].data,不是hdu_list[1].data
hdu_list2.close()image_data2 = fits.getdata(image_file2)
print(type(image_data2))
print(image_data2.shape)plt.imshow(image_data2, cmap='gray')
plt.colorbar()

生成的.png图像如下。

请注意本地转换与链接转换的不同,以免出错。

3、总结

通过此次空间天气数据的转换,了解了一些天文数据.fits格式的知识,对jupyter notebook的使用,有了更深认识。

在获取.fits时,对JSOC lookdata(http://jsoc.stanford.edu/ajax/lookdata.html)的使用,有了一定了解。

4、参考资料

  1. JSOC
  2. FITS基本文件格式

  3. FITS文件处理

  4. Python--显示fits文件

  5. FITS2Images

  6. FITS 基本格式及其扩展

世界和我爱着你!

将.fits数据转换为.png图像相关推荐

  1. 海康相机SDK+halcon17(64位)+MFC+VS(64位)联合开发遇到的问题(在使用GenImage3Extern将RGB数据转换为halcon图像时出现异常情况处理)

    这几天遇到了问题就是在MFC中开发SDK,遇到了问题是: 1.回调函数中的原始图像没数据,但是图像的信息是有的 这个问题的主要原因在于海康相机的默认输出数据的格式是 YUYV ,并不是RGB的,因此需 ...

  2. 使用Python将OV7725的RGB565图像数据转换为jpg图像

    第一步,在单片机上添加如下代码 在读取摄像头数据的时候,加入下面这段代码 UART_Send_Data(UART4,color1);//通过串口发送RGB565的高八位 UART_Send_Data( ...

  3. Intel Realsense D435 python (Python Wrapper)example00: NumPy Integration 将深度帧数据转换为 Numpy 数组进行处理

    NumPy Integration: Librealsense frames support the buffer protocol. A numpy array can be constructed ...

  4. 多帧点云数据拼接合并_自动驾驶:Lidar 3D传感器点云数据和2D图像数据的融合标注...

    自动驾驶汽车的发展已经见证了硬件传感器记录感官数据的容量和准确度的发展.传感器的数量增加了,新一代传感器正在记录更高的分辨率和更准确的测量结果. 在本文中,我们将探讨传感器融合如何在涉及环环相扣的数据 ...

  5. Power BI 将商业智能数据转换为数据理解

    l  研究数据 在本部分中你要了解各种知识,并且积极的互动和进行 Power BI 共享在这一部分至关重要. Power BI 服务简介 Power BI 服务是 Power BI Desktop 的 ...

  6. matlab数据转换为tecplot格式[ASCII码格式下的plt文件]

    matlab数据转换为tecplot格式[ASCII码格式下的plt文件] 1 tecplot能读取的的常见ASCII格式 1.1 文件格式与文件头 1.2 zone相关的格式 2 一维数据 3 二维 ...

  7. numeric转换varchar_数据库中varchar类型数据转换为numeric类型

    关于数据库中varchar/nvarchar类型数据的获取注意事项 当在页面后台获取数据库表中某字段的数据时,需注意该数据的类型.防止因实际数据的字符长度因达不到指定数据类型规定的字符长度而导致空格的 ...

  8. 从原理到实现 | 如何通过球面投影将点云转换为Range图像

    点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心技术交流群 后台回复[3D检测综述]获取最新基于点云/BEV/图像的3D检测综述! 前言 ...

  9. 初识YUV,实战NV21格式数据转换为Bitmap

    初识YUV,实战NV21格式数据转换为Bitmap 一.初识YUV 二.采样方式 2.1.YUV 4:4:4 2.2.YUV 4:2:2 2.2.YUV 4:2:0[重点] 三.存储方式 3.1.pl ...

  10. 数字数据转换为字符数据_为什么替代数据对数字转换至关重要

    数字数据转换为字符数据 边缘是数据的未来(Fringe is the future of data) Alternative data has been a buzzword among invest ...

最新文章

  1. 关于一个简易的实时内存监控系统的思维导图
  2. 利用SQL对数据进行清洗处理
  3. e5 e3 php,硬件百科:E3/E5为什么让“垃圾佬”痴迷
  4. 目标检测工具安装使用--labelImg
  5. unity 多选枚举
  6. qq旋风离线服务器维护,如何进入qq旋风离线空间
  7. 蓝牙 - 通信原理:电磁波 - 无线电波 - ISM - 蓝牙
  8. 导出手机QQ聊天记录到电脑
  9. Mac上制作Linux U盘启动盘
  10. 生物信息学|基于多尺度特征融合的药物-药物相互作用预测
  11. W11系统VMware网卡vmnet8显示未识别的网络
  12. EMC辐射骚扰整改案例分析
  13. 用html制作空心菱形的代码,javascript打印完整金字塔型_完整菱形_空心菱形_思路算法详解_js源代码...
  14. 微信公众平台开发学习
  15. 伺服马达和步进马达的区别在哪里?
  16. android实现弹幕功能,Android实现自定义的弹幕效果
  17. 三生万物---算法生成的25幅三角形图像
  18. 大数据——HDFS的常用命令
  19. 贪吃的大嘴java_Java实现 蓝桥杯VIP 算法提高 贪吃的大嘴
  20. 计算机房改造简报,某单位机房改造方案

热门文章

  1. 王者荣耀英雄测试用例
  2. 大数据基础概念(三)
  3. Redhat认证考试心得之一死记硬背篇
  4. 战争迷雾效果 第1章_要探索,不要地图全开!
  5. Linux软件安装管理的三种方式——源码安装/deb/rpm/yum/apt
  6. 移动机器人c语言程序设计,机器人辅助C程序设计
  7. python xlrd pandas_Python:Pandas pd.read_excel提供ImportError:为Excel supp安装xlrd = 0.9.0
  8. docker制作Nginx镜像
  9. NIVIDIA Tegra K1 QWT安装使用问题和解决办法
  10. java file exists用法_Java File exists()方法