ENVI形式のハイパースペクトルイメージ(HSI)をPythonで扱う
はじめに
ハイパースペクトルイメージングで用いられるデータ形式は様々ありますが、ここではENVI形式の画像データを扱います。
サンプルコードでは拡張子が.lanを扱っていますが、ヘッダーファイル(.hdr)があるENVI形式のデータでも.hdrを読み込めば同様に扱えます。
画像データさえ読み込めてしまえば、機械学習にも利用できます。
動作環境
spectral
Pythonでハイパースペクトルを扱うために、ライブラリの「spectral」を利用します。
spectralのインストール(Anaconda)
conda install spectral
HSIのサンプルデータ
spectralのドキュメントで用意されているサンプルデータを扱います。
下記URLにある「92AV3c.lan」を使います。 www.spectralpython.net
サンプルコード
spectralのインポート
import spectral
データの読み込み
img = spectral.open_image('./92AV3C.lan') img
出力
Data Source: './././92AV3C.lan' # Rows: 145 # Samples: 145 # Bands: 220 Interleave: BIL Quantization: 16 bits Data format: int16
HSIのデータが読み込み、メタデータが表示。
画像の幅、高さ、バンド数の取得
img.shape
出力
(145, 145, 220)
HSIの画像の高さ、幅、バンド数を取得。
画像データをNumpyの配列に変換
img_arr = np.array(img.load()) img_arr.shape
出力
(145, 145, 220)
これでRGB画像と同様に扱える。