ハイパースペクトルデータ
ナビゲーションに移動
検索に移動
北海道衛星株式会社製ハイパースペクトルカメラにて取得するハイパースペクトルデータ(HSD)は、BIL(Band Interleaved by Line)形式に則り構築しています。
ハイパースペクトルデータの構造について
BIL形式(標準)
BIL形式とは、1ライン目の1バンド目,2バンド目,...kバンド目,2ライン目の1バンド目,2バンド目,...という順でデータが並んでいることを指します。ただし、ENVI等で読み込む場合は、画像の上下とバンドが逆になっています。
HSDAnalyzer内部において、HSDは幅(Width)×高さ(Height)×バンド数(Band)の3次元配列データとして存在しています。構造のイメージは波長毎の画像がバンド数分重なった、幅×高さ×バンド数の直方体です。バンド数の小さい方が短波長、大きい方が長波長になります。
ヘッダー情報
ハイパースペクトルデータ読み込み
C#にてHSDを読み込む際のコードは以下の通りになります。
this.fileName = fileName; 読み込むファイルのパス
FileStream hsd;
hsd = new FileStream(fileName, FileMode.Open, FileAccess.Read); ファイルのストリームを作成
int width = Form1.HSDSobj.width; HSD幅
int height = Form1.HSDSobj.height; HSD高さ
int band = Form1.HSDSobj.bands; HSDバンド数
int buff;
for (int i = 0; i < height; i++)
{
for (int k = 0; k < bands; k++)
{
for (int j = 0; j < width; j++)
{
buff = hsd.ReadByte(); 1バイト読み込む
if (buff > -1 && buff != 0)
{
HSData[j, i, k] = (short)buff; 配列に格納
}
else if (buff == 0)
{
HSData[j, i, k] = 1;
}
else
{
break;
}
}
}
}