🍣

HYPERDOC でハイパースペクトル画像分類してみよう(データ確認編)

に公開
2025/12/30

1. 目的

  • 個人的にハイパースペクトル画像分類の復習をするため。
  • HYPERDOC というハイパースペクトル画像データセットが公開されたので内容を確認したいため。

2. ハイパースペクトル画像とは[1]

光を波長ごとに分光して撮影するカメラであるハイパースペクトルカメラで撮影された画像である。数十から数百の波長情報を持つ。工場で扱う部品の材質、植物の糖度、地雷検知等、様々な分析・研究・産業用途に使用される。

分類する方法としては、大まかにいうと、各画素ごとに標本と比較する方法、異常検知、線形分離(スペクトルアンミキシング)、機械学習等が挙げられる。

3. HYPERDOC

3.1. URL[2]

https://colorimaginglab.ugr.es/pages/hyperdoc/database

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 でハイパースペクトル画像分類してみよう(解析、分類編)

参考文献

脚注
  1. ハイパースペクトルカメラとは? ↩︎

  2. 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