2.17.2 HSデータI/O /バンド選択/ROI抽出


目次へのリンク

MATLABによる画像処理・コンピュータービジョン入門目次

概要

MATLABには2020aの途中から、ハイパースペクトル画像処理用のライブラリが追加されています。とてもさりげなく追加されています。私は前職で衛星画像処理をしていましたが、残念ですがハイパースペクトル画像を扱ったことはありませんでした。とってもいい機会だわ!ということで少し触ってみたので、せっかくなので使い方を紹介したいと思います。

動作環境としては、MATLAB2020bのImage Processing Toolboxとなります。その上で、アドオンとして、Image Processing Toolbox Hyperspectral Imaging Library をインストールする必要があります。

対応ファイル:I2_17_2_HyperSpectral_display.m

初期化

Code
clc;clear;close all;imtool close all;

ハイパースペクトル画像の読み込み

データの読み込みです。

Code
hcube = hypercube('paviaU.hdr');

公式ドキュメントを見ると、

The input file can be a national imagery transmission format (NITF) file, Hyperion level 1R (L1R) file stored in hierarchical data format (HDF), ENVI header or image file, or metadata text extension (MTL) file that contains satellite data from earth observing (EO) satellites.

  • EO-1 Hyperion
  • EO-1 Advanced Land Imager (EO-1 ALI)
  • Landsat Multispectral Scanner (Landsat MSS)
  • Landsat Thematic Mapper (Landsat TM)
  • Landsat Enhanced Thematic Mapper Plus (Landsat ETM+)
  • Landsat Operational Land Imager / Thermal Infrared Scanner (Landsat OLI / TIRS)

とか

The hypercube function reads satellite data that are stored in georeferenced tagged image file format (GeoTIFF).

となっていますね。

上のコードの場合は、ENVIのヘッダーファイルを指定しています。これでも同名の.datファイルを自動で読むことができます。

表示用にRGBバンドを抽出

Code
img = colorize(hcube, 'Method','rgb','ContrastStretching',true);
% 可視化
imshow(img);

これ便利じゃないですか?!メタデータからRGBバンドに該当するチャンネルを自動で抽出してくれて、RGB画像を表示しています。ちなみに'Method'プロパティで'falsecolored'とか'cir'を指定することもできて、それぞれ最も情報量の多い3バンド、[NIR,R,G]の3バンドになるようです。詳しくはこちらも公式ドキュメントをご覧ください。

この記事では、とりあえずジャブということで表示だけです。

謝辞

本記事は @eigs さんのlivescript2markdownを使わせていただいてます。

目次へのリンク

MATLABによる画像処理・コンピュータービジョン入門目次