HYPERDOC でハイパースペクトル画像分類してみよう(データ確認編)
1. 目的
- 個人的にハイパースペクトル画像分類の復習をするため。
- HYPERDOC というハイパースペクトル画像データセットが公開されたので内容を確認したいため。
2. ハイパースペクトル画像とは[1]
光を波長ごとに分光して撮影するカメラであるハイパースペクトルカメラで撮影された画像である。数十から数百の波長情報を持つ。工場で扱う部品の材質、植物の糖度、地雷検知等、様々な分析・研究・産業用途に使用される。
分類する方法としては、大まかにいうと、各画素ごとに標本と比較する方法、異常検知、線形分離(スペクトルアンミキシング)、機械学習等が挙げられる。
3. HYPERDOC
3.1. URL[2]
3.2. 内容
- グラナダ大学が作成したデータセット
- 様々な合成文書および歴史的文書のハイパースペクトル画像1681枚
- VNIR(可視光・近赤外域、400-1000 nm)とSWIR(短波長赤外域、900-1700 nm)の2つのスペクトル領域で撮影
3.3. ライセンス
- 非商用ライセンス(CC BY-NC-SA 4.0.)である。
- 商用利用する場合は、作成者に連絡が必要である。
3.4. データダウンロード方法
Google フォームに必要事項を記入して、ダウンロードリンクが公開される。
3.5. ディレクトリ構成
- minicubes/ にハイパースペクトル画像が格納されている。
- GT/ に Ground Truth が格納されている。
- RGB/ に RGB 画像が格納されている。
data/
├─ HYPERDOC Database information.ods
├─ HYPERDOC Database information.xlsx
| # 各ハイパースペクトル画像の概要を一行で記載
├─ Materials labels and palette assignation.ods
├─ Materials labels and palette assignation.xlsx
| # GT のクラス番号と色情報(RGB)を記載
├─ Spatially registered minicubes equivalence.ods
├─ Spatially registered minicubes equivalence.xlsx
| # VNIR(可視近赤外線, 430~1050nm) 画像とSWIR(短波赤外線, 1000nm~2500nm)画像の対応付けを記載
└─ samples/
├─ GT/
| # Groud Truth 画像(png)を格納
├─ minicubes/
| # ハイパースペクトル画像(h5)を格納
└─ RGB/
# 疑似RGB画像(png)を格納
3.6. 可視化ツール
公式が作成した可視化ツールもあるが、GTと疑似画像を確認するツールのようである。

図3.6.1. 可視化ツール
4. データ確認
4.1. 環境構築
Windows11, Python 3.12.8 で動作確認済みである。
次のコマンドで Python ライブラリをインストールする。
pip install h5py==3.15.0
pip install numpy==2.3.3
pip install openpyxl==3.1.5
pip install pandas==2.3.3
pip install pillow==11.3.0
pip install scikit-learn==1.7.2
pip install scikit-image==0.25.2
4.2. 画像読み込み
import h5py
import numpy as np
from PIL import Image
# minicube の DataCube キーから HS 画像を取得
hsi_file = "./data/samples/minicubes/00001-VNIR-mock-up.h5"
with h5py.File(hsi_file,"r") as h5file:
hs_image = h5file["DataCube"][:]
print(hs_image.shape)
# (121, 150, 150)
# GT 画像の読み込み
gt_file = "./data/samples/GT/00001-VNIR-mock-up_GT.png"
gt_image = np.array(Image.open(gt_file))
print(gt_image.shape)
# (150, 150)
画像の形状について、次の通りになっている。
- VNIR は波長が 121 バンドで、SWIR は波長が 161 バンドである。
- 画像の幅は、27~872 まで様々である。
- 画像の高さは、16~1208 まで様々である。
4.3. ラベル
ラベル情報は次の通りである。#1~#6 でどういう画材、材質か判別され、#7 の値が、GT画像で記録されている値である。
| # | 項目 | 内容 |
|---|---|---|
| 1 | Category | 画材。Preparation/ornament, Pigment in mock-ups, Substrate, Pencil, Pigment, Ink, または, 空白を記載。 |
| 2 | Materials/binder | Carbon や Linen 等の材質を記載。 |
| 3 | Pure/Mixture | 純物質(pure)か混合物(mixture)かを記載。 |
| 4 | Second component in mixtures | Pure/Mixture が混合物(mixture)の場合、第2成分を記載。 |
| 5 | 空白の列 | 第3成分が含まれる混合物の場合は mixture を記載。 |
| 6 | Third component in mixtures | 第3成分がある場合、第3成分を記載。 |
| 7 | Label in GT | ラベル。0~122, 249~255 までの番号。 |
| 8 | color in GT (RGB) | 各ラベルに対応する疑似RGB値。 |
| 9 | Rendered color | 疑似RGBの色で塗りつぶされた列。 |
4.5. 輝度値
- ハイパースペクトル画像に記録されている値は、0 ~ 10 程度の値のため、おそらく反射板で補正した反射率と思われる。
- 確認したところ、最小値 0、最大値 3878.1337890625 である。
- 01168~01183 の VNIR 画像は、飽和しているためか nan 値が含まれている。使用時には線形補間等の補正が必要と考えられる。
5. 今後の予定
Hyperdoc データセットを使用して色々なハイパースペクトル画像解析手法を試していく。
→ 解析編はこちら: HYPERDOC でハイパースペクトル画像分類してみよう(解析、分類編)
参考文献
-
Hyperspectral dataset of historical documents and mock-ups from 400 to 1700 nm (HYPERDOC), A.B. López-Baldomero, J.L. Nieves, F. Moronta-Montero, M.A. Martínez-Domingo, R. Fernández-Gualda, J. Hernández-Andrés, A.S. Reichert, A. López-Montes, T. Espejo, J. Romero and E.M. Valero, Scientific Data, 12:1248 (2025) https://doi.org/10.1038/s41597-025-05599-0 ↩︎
Discussion