如何读取 hdf5 文件。并将它们绘制为图像
How can I read hdf5 files. and plot them as images
我有这个 hdf5 格式的月球陨石坑数据集
https://zenodo.org/record/1133969/files/train_craters.hdf5?download=1
但我不知道如何阅读它们并查看此数据集中的图像
对于 Reading a HDF5 file 部分,我认为这是一个重复的问题,来自 post :
对于绘图部分,我建议您查看 matplotlib pyplot 文档并深入了解其工作原理
文档:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.html
教程:https://matplotlib.org/stable/tutorials/introductory/pyplot.html
HDF5 是组织成组和数据集(也称为数据模式)的任意数据的容器。要有效地处理数据,您需要在开始编码之前了解模式。理想情况下,数据源提供模式。如果没有,您的第一步是推导模式。您可以通过打开文件并使用 HDFView(来自 HDF Group)查看,或编写链接答案中所示的小代码片段来执行此操作。
我看了你的档案。你说你想“看图像”。你不能用这些数据做到这一点。我在这里阅读了文件描述:DeepMoon Supplemental Materials。有 6 个感兴趣的文件:
- name_craters.hdf5 - Pandas 数据集中图像的陨石坑位置和大小的 HDFStore。
- name_images.hdf5 - 数据集的输入 DEM 图像和输出目标,其中:
- name = dev 用于验证数据集
- name = test for the test dataset
- name = train 用于训练数据集
因此,如果您需要训练图像数据,则需要下载 train_images.hdf5
文件。警告:它是 9.9 GB。
关于 train_craters.hdf5
文件的评论:
此文件由 Pandas 创建。该文件有 30_000 个组,每个图像 1 个(名为“img_xxxxx”)。每组有 4 个数据集,分别命名为:“axis_0”、“axis_1”、“block0_items”和“block0_values”。他们有关于每个图像的数据,但没有任何图像数据。例如,“axis_0”和“block0_items”都有以下条目:
Diameter (km)
Lat
Long
x
y
Diameter (pix)
“block0_values”中有数据。这是来自“img_00000/block0_values”的示例:
[[ 5.32341731 -35.10135397 -101.80962272 161.77188631 252.6564721 10.87213217]
[ 5.38713978 -34.86402264 -102.38375512 132.62561605 237.8560143 11.00227398]]
从这里你得到:
Diameter (km)[0] = 5.32341731
Lat[0] = -35.10135397
Long[0] = -101.80962272
x[0] = 161.77188631
y[0] = 252.6564721
Diameter (pix)[0] = 10.87213217
Diameter (km)[1] = 5.38713978
Lat[1] = -34.86402264
Long[1] = -102.38375512
x[1] = 132.62561605
y[1] = 237.8560143
Diameter (pix)[1] = 11.00227398
因此,这提供了关于每个图像的一些基本信息...但不是可以转换为图像的像素值数组。
我有这个 hdf5 格式的月球陨石坑数据集 https://zenodo.org/record/1133969/files/train_craters.hdf5?download=1 但我不知道如何阅读它们并查看此数据集中的图像
对于 Reading a HDF5 file 部分,我认为这是一个重复的问题,来自 post :
对于绘图部分,我建议您查看 matplotlib pyplot 文档并深入了解其工作原理
文档:https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.html
教程:https://matplotlib.org/stable/tutorials/introductory/pyplot.html
HDF5 是组织成组和数据集(也称为数据模式)的任意数据的容器。要有效地处理数据,您需要在开始编码之前了解模式。理想情况下,数据源提供模式。如果没有,您的第一步是推导模式。您可以通过打开文件并使用 HDFView(来自 HDF Group)查看,或编写链接答案中所示的小代码片段来执行此操作。
我看了你的档案。你说你想“看图像”。你不能用这些数据做到这一点。我在这里阅读了文件描述:DeepMoon Supplemental Materials。有 6 个感兴趣的文件:
- name_craters.hdf5 - Pandas 数据集中图像的陨石坑位置和大小的 HDFStore。
- name_images.hdf5 - 数据集的输入 DEM 图像和输出目标,其中:
- name = dev 用于验证数据集
- name = test for the test dataset
- name = train 用于训练数据集
因此,如果您需要训练图像数据,则需要下载 train_images.hdf5
文件。警告:它是 9.9 GB。
关于 train_craters.hdf5
文件的评论:
此文件由 Pandas 创建。该文件有 30_000 个组,每个图像 1 个(名为“img_xxxxx”)。每组有 4 个数据集,分别命名为:“axis_0”、“axis_1”、“block0_items”和“block0_values”。他们有关于每个图像的数据,但没有任何图像数据。例如,“axis_0”和“block0_items”都有以下条目:
Diameter (km)
Lat
Long
x
y
Diameter (pix)
“block0_values”中有数据。这是来自“img_00000/block0_values”的示例:
[[ 5.32341731 -35.10135397 -101.80962272 161.77188631 252.6564721 10.87213217]
[ 5.38713978 -34.86402264 -102.38375512 132.62561605 237.8560143 11.00227398]]
从这里你得到:
Diameter (km)[0] = 5.32341731
Lat[0] = -35.10135397
Long[0] = -101.80962272
x[0] = 161.77188631
y[0] = 252.6564721
Diameter (pix)[0] = 10.87213217
Diameter (km)[1] = 5.38713978
Lat[1] = -34.86402264
Long[1] = -102.38375512
x[1] = 132.62561605
y[1] = 237.8560143
Diameter (pix)[1] = 11.00227398
因此,这提供了关于每个图像的一些基本信息...但不是可以转换为图像的像素值数组。