進捗のようなもの

やったこと書きます

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画像と同様に扱える。