FITS (.fits, .fit)
背景
-
- MIME 类型:application/fits,image/fits
- FITS 科学图像和数据格式.
- 天文数据交换和归档存储的标准格式.
- 由美国国家航空航天局(NASA)和国际天文学联合会认可.
- FITS 是 Flexible Image Transport System(灵活的图像传输系统)的缩写.
- 允许多开头数据单位(HDU).
- 每个 HDU 可为图像、ASCII 表格或二进制表格.
- 图像 HDU 仅可存储单通道二维图像数组.
- 二进制和 ASCII 表格 HDU 仅可存储二维数据.
- 二进制表格元素可为多维数组.
- 将频谱数据和光栅图像存储为未压缩数组.
- 由 Don Wells、Eric Greisen 以及其他人于 1979 年开发.
Import 与 Export
- Import["file.fits"] 把一个 FITS 文件导入为图像或数据值数组,根据 HDU 类型,用于单个 HDU 文件.
- Import["file.fits"] 返回一个用于文件中全部 HDU 的 <|1->hdu1,…|> 格式关联.
- Import["file.fits",elem] 导入 FTIS 文件中指定参数.
- Import["file.fits",{elem, i}] 返回在 i
HDU 中存储的 elem. - 导入格式可用 Import["file","FITS"] 或 Import["file",{"FITS",elem,…}]指定.
- Export["file.fits",expr] 以图像和图形的光栅大小,将其作为图像导入至 FITS 文件.
- Export["file.fits",expr] 把字符串和数字数组作为表格导入至 FITS 文件.
- Export["file.fits",1->expr1,…] 将 expri 导出至 i
HDU. - 请到以下参考页面了解完整的基本信息:
-
Import, Export 从文件导入或导出到文件 CloudImport, CloudExport 从云对象导入或导出到云对象 ImportString, ExportString 从字符串导入或导出到字符串 ImportByteArray, ExportByteArray 从字节数组导入或导出到字节数组
参数
- Import 的通用参数:
-
"Elements" 该文件可用的参数和选项列表 "Summary" 文件摘要 "Rules" 所有可用参数的规则列表 - 结构参数:
-
"HDUCount" HDU 的数目 "Summary" 文件摘要 "SummarySlideView" 全部 HDU 的幻灯片浏览摘要 - 用于 FITS 文件的所有参数将被作为编号关联导入,返回为 1val1,2val2,…格式.
- 数据表示参数:
-
"Data" 像素值或表格参数数组 "Plaintext" 用字符串表示图像和表格扩展 "RawData" 文件中存储的元数据 - 附加参数可用于图像 HDU:
-
"Graphics" 给定为 Graphics 对象的光栅图像 "Image" 给定为 Image 对象的光栅图像 "IndeterminateMask" 一个 SparseArray 表示图像中的不确定值 - 附加参数可用于二进制和 ASCII 表格 HDU:
-
"TableData" 表示表格扩展 "TableHeaders" 表格行的开头 "TableUnits" 表格行对应的测量单位 - Import 和 Export 默认使用 "Image" 参数用于图像 HDU,以及 "Data" 参数用于二进制和 ASCII 表格.
- 子参数用于部分数据导入,可用以下任意格式给定:
-
{elem,hdu} 用于任意参数 {elem,hdu,rows,cols} 用于数据参数或单图和表格 HDU {elem,hdu,spec1,spec2,…,rows,cols} 用于更高维度图像 HDU 的数据参数 - 用于 hdu, speci 的部分规范,rows 和 cols 可为以下任意:
-
All 全部 HDU n 第 n 个 HDU n;;m HDU n 从 m n;;m;;s 从 n 到 m,步长为 s {n1,n2,…} 指定 HDUs ni - 高级参数:
-
"BitDepth" 用于表示文件中灰度级别像素的位数 "Channels" 文件中使用的颜色通道数 "ColorSpace" 文件中使用的颜色编码 "DataType" 文件中用于存储图像或表格数据的数据类型 "Dimensions" 数据维数 "Extension" HDU 扩展类型 "ImageSize" 单个帧的光栅维数 "Range" 元数据的最小和最大值 - 通用元数据参数:
-
"MetaInformation" 处理后的元数据 "RawMetaInformation" 文件中存储的未加工元数据 - 关于记录设备或环境的信息:
-
"Airmass" 相对的气团 "Declination" 望远镜轴的赤纬设置 "Device" 记录仪器(如:摄像机) "Equinox" 文件中使用的天体坐标系统的春分,一般以年为单位 "ExposureTime" 摄影曝光时间,以秒为单位 "HourAngle" 获取图像时描述对象的小时角度 "ObservationDate" 观察日期和时间 "RightAscension" 望远镜轴的赤经设置 "SiderealTime" 恒星时间(LST) "Telescope" 获取图像的望远镜 - 参考文献的信息参数:
-
"Author" 编译图像信息的人 "Reference" 与该文件相关的参考文献 - 其他通用元数据参数:
-
"Comments" 存储在文件中的注释,以字符串的列表形式给出 "History" 数据或图像如何被处理的描述 "Object" 被观察对象的名称 "Observer" 记录数据或图像的人 "Organization" 创建该文件的组织或机构 - 当导出时,元数据的字段名被转换成大写,以保持与 FITS 标准一致.
选项
- Import 与 Export 选项:
-
DataReversed Automatic 是否颠倒行的排序 - Import 选项:
-
ColorFunction Automatic 各单元如何着色 ImageSize Automatic 总体图像大小 "Gamma" 1.0 用于渲染的伽玛校正参数 "IncludeExtensions" All HDU 扩展导入 "IncludeHeaders" False 是否导入表格开头 - Export 选项:
-
"Append" False 是否附加至已有文件 "CompressionMethod" None 用于导出的压缩算法 "MetaInformation" None 导出时添加的各开头原信息 - "CompressionMethod" 的可用设定包括 "GZIP"、"GZIPShuffled"、"Rice"、"HCompress" 和 "PLIO".
范例
打开所有单元 关闭所有单元基本范例 (3)
范围 (7)
Import (2)
Import["ExampleData/sample.fits"]Import["ExampleData/sample.fits", "Image"]Import["ExampleData/sample.fits", "Dimensions"]Import["http://exampledata.wolfram.com/messier61.fits.gz", "Summary"]Dataset[<>]Import["ExampleData/sample.fits", "Summary"]Export (5)
Export["file.fits", RandomImage[]]Import[%]Export["file.fits", {{"a", 1, .5}, {"d", 2, 1.5}}]Import["file.fits"]Export["file.fits", {[image], {{"A", "B"}, {"C", "D"}}}]Import["file.fits"]data = <|1 -> <|"Extension" -> "Image", "Data" -> [image]|>, 2 -> <|"Extension" -> "ASCIITable", "Data" -> {{"A", "B"}, {"C", "D"}}|>|>;Export["file.fits", data]Import["file.fits"]data = {
{1, {1, 2}, {1, 2, 3}},
{10, {10, 20}, {10, 20, 30}}
};Export["test.fits", data]Import[%]导入参数 (44)
可用参数 (2)
数据表示 (17)
"Data" (2)
"Graphics" (2)
将文件中存储的图像数据导入为 Graphics 对象:
Import["ExampleData/sample.fits", "Graphics"]Map[Head, First[%]]Import["ExampleData/sample.fits", {"Graphics", 1, 3, 1 ;; 50}]"Image" (2)
将文件中存储的图像数据导入为 Image 对象:
Import["ExampleData/sample.fits", "Image"]Map[Head, First[%]]Import["ExampleData/sample.fits", {"Image", 1, 3, 1 ;; 50}]"Plaintext" (1)
"Range" (1)
Import["ExampleData/sample.fits", "Range"]Import["ExampleData/sample.fits", {"Range", 1}]Normal[First[Import["ExampleData/sample.fits", "RawData"]]] // MinMaxTextGrid[Import["ExampleData/sample.fits", {"Data", 2}] , Frame -> All, Background -> {{StandardBlue, None}, None}]"RawData" (2)
"TableData" (3)
Import["ExampleData/sample.fits", {"TableData", 2}]Import["ExampleData/sample.fits", "Extension"]Import["ExampleData/sample.fits", "TableData"]//KeysImport["ExampleData/sample.fits", {"TableData", 2, 2, 1 ;; -1 ;; 2}]"TableHeaders" (2)
高级导入参数 (6)
"BitDepth" (1)
"Dimensions" (1)
"Extensions" (1)
"ImageSize" (1)
元数据参数 (19)
"Airmass" (1)
"Comments" (1)
"Declination" (1)
"Device" (1)
"Equinox" (1)
"ExposureTime" (1)
"History" (1)
"HourAngle" (1)
"MetaInformation" (1)
"Object" (1)
"ObservationDate" (1)
"Observer" (1)
"Organization" (1)
"RawMetaInformation" (1)
"Reference" (1)
"RightAscension" (1)
"SiderealTime" (1)
导出参数 (4)
"Data" (2)
"Rules" (2)
Export["file.fits", {"Data" -> RandomImage[]}, "Rules"];
Import[%]metadata = {
"MetaInfo" -> "MyValue",
"MoreInfo" -> {"2", "Comment on MoreInfo"},
"MyValue1" -> {58.90, "Comment on MyValue1"},
"MyValue2" -> {8, "Comment on MyValue2"},
"MyValue3" -> {True}
};
Export["file.fits", {"Data" -> RandomImage[], "MetaInformation" -> metadata}, "Rules"]Import["file.fits", "MetaInformation"]导入选项 (6)
ColorFunction (1)
默认情况下,图像数据导入为未运用色彩函数的 Image 对象:
ImageAdjust /@ Import["http://exampledata.wolfram.com/messier61.fits.gz", "Image"]ImageAdjust /@ Import["http://exampledata.wolfram.com/messier61.fits.gz", "Image", ColorFunction -> "Rainbow"]DataReversed (1)
ImageSize (1)
"Gamma" (1)
Import["http://exampledata.wolfram.com/messier61.fits.gz"]Import["http://exampledata.wolfram.com/messier61.fits.gz", "Gamma" -> 0.5]Import["http://exampledata.wolfram.com/messier61.fits.gz", "Gamma" -> 0.5, ColorFunction -> "Rainbow"]"IncludeExtensions" (1)
在默认情况下,所有出现在 FITS 文件的可用类型 HDU 被导入:
Import["ExampleData/sample.fits", "Dimensions"]Import["ExampleData/sample.fits", "ImageSize"]Import["ExampleData/sample.fits", "Extensions"]Import["ExampleData/sample.fits", "ImageSize", "IncludeExtensions" -> All]Import["ExampleData/sample.fits", "Dimensions", "IncludeExtensions" -> "Image"]Import["ExampleData/sample.fits", "Dimensions", "IncludeExtensions" -> {"Image", "BinaryTable"}]"IncludeHeaders" (1)
Import["ExampleData/sample.fits", {"TableData", 2}];
TextGrid[%, Frame -> All]Import["ExampleData/sample.fits", {"TableData", 2}, "IncludeHeaders" -> True]Import["ExampleData/sample.fits", {"TableData", 2}, "IncludeHeaders" -> True];
TextGrid[%, Frame -> All]导出选项 (3)
Append (1)
DataReversed (1)
"CompressionMethod" (1)
image = RandomImage[];
Export["image.fits", image];
FileSize[%]methods = {None, Automatic, "GZIP", "GZIPShuffled", "Rice", "HCompress"};Table[{m, FileSize[Export["image.fits", image, "CompressionMethod" -> m]]}, {m, methods}]//TextGridPossible Issues (2)
Export["bad(Name.fits", RandomImage[]]Export["file.fits", RandomImage[]];
CopyFile["file.fits", "bad[Name.fits", OverwriteTarget -> True];Import["bad[Name.fits"]Export["file.fits", {{{"1", "2"}, 1}, {{"2", "3"}, 2}}]历史
2002年引入 (4.2) | 在以下年份被更新:2019 (12.0)