メインコンテンツ

radiance2Reflectance

放射輝度から反射率への変換

説明

newspcube = radiance2Reflectance(spcube) は、ハイパースペクトル データまたはマルチスペクトル データのピクセル値を放射輝度から反射率値に変換します。この関数は、新しいスペクトル オブジェクトを返します。なお、データのピクセル値は大気上端 (TOA) の反射率を表します。詳細については、TOA の反射率を参照してください。

newspcube = radiance2Reflectance(spcube,BlockSize=blocksize) は、スペクトル データのブロック処理用のブロック サイズを指定します。 (R2021a 以降)

この関数は、入力イメージを個別ブロックに分割して各ブロックを処理し、各ブロックの処理結果を連結して出力行列を形成します。スペクトル イメージは、大きすぎてそのままではシステム メモリに収まらない場合のある多次元データ セットです。そのため、関数 radiance2Reflectance の実行中にシステムでメモリ不足が発生する場合があります。このような問題に直面した場合は、次の構文を使用してブロック処理を実行します。

たとえば、radiance2Reflectance(spcube,BlockSize=[50 50]) は、入力イメージをオーバーラップのない 50×50 のブロックに分割し、各ブロックのピクセルの反射率値を計算します。

メモ

この関数には、Hyperspectral Imaging Library for Image Processing Toolbox™ が必要です。Hyperspectral Imaging Library for Image Processing Toolbox はアドオン エクスプローラーからインストールできます。アドオンのインストールの詳細については、アドオンの入手と管理を参照してください。

Hyperspectral Imaging Library for Image Processing Toolbox は、MATLAB® Online™ および MATLAB Mobile™ によってサポートされないため、デスクトップの MATLAB が必要です。

すべて折りたたむ

ハイパースペクトル データをワークスペースに読み取ります。

input = imhypercube("EO1H0440342002212110PY_cropped.hdr");

メタデータの BadBands パラメーターを使用し、正しくないスペクトル バンド番号を確認します。

bandNumber = find(~input.Metadata.BadBands);

正しくないスペクトル バンドをデータ キューブから削除します。

input = removeBands(input,BandNumber=bandNumber);

関数dn2radianceを使用して、デジタル値を放射輝度値に変換します。

hcube = dn2radiance(input);

関数radiance2Reflectanceを使用して、放射輝度値を反射率値に変換します。

newhcube = radiance2Reflectance(hcube);

入力の放射輝度データと出力の反射率データの 80 番目のスペクトル バンドを読み取って表示します。

radianceBand = gather(hcube);
reflectanceBand = gather(newhcube);
band = 80;

figure
subplot(1,2,1)
imagesc(radianceBand(:,:,band))
axis off
title("Radiance Band")
subplot(1,2,2)
imagesc(reflectanceBand(:,:,band))
title("Reflectance Band")

colormap(gray)
axis off

Figure contains 2 axes objects. Hidden axes object 1 with title Radiance Band contains an object of type image. Hidden axes object 2 with title Reflectance Band contains an object of type image.

入力引数

すべて折りたたむ

入力スペクトル データ。hypercube オブジェクトまたは multicube オブジェクトとして指定します。データ キューブのピクセル値は、描画される面からの放射量を指定する放射輝度値でなければなりません。関数 dn2radiance を使用して、デジタル値で表されたピクセル値を放射輝度値に変換できます。

spcubemulticube オブジェクトである場合、そのすべてのスペクトル バンドのデータ解像度は同じでなければなりません。multicube オブジェクトのスペクトル バンドの解像度がすべて同じではない場合、resampleBands 関数を使用して帯域を再サンプリングするか、selectBands 関数を使用して均一な解像度の帯域を選択します。

データ ブロックのサイズ。正の整数から成る 2 要素ベクトルとして指定します。ベクトルの各要素は、それぞれ各ブロックの行数と列数に対応します。データ ブロックのサイズは入力イメージのサイズより小さくなければなりません。スペクトル イメージを小さなブロックに分割すれば、大きなデータ セットを処理してもメモリ不足に陥ることはありません。

  • blocksize の値が小さすぎると、関数によるメモリの使用量は減りますが、その分実行時間が長くなります。

  • blocksize の値が大きいか、入力イメージのサイズと等しいと、実行時間は短くなりますが、その分メモリの使用量は高くなります。

例: BlockSize=[20 20] は、各データ ブロックのサイズを 20 行 20 列で指定します。

出力引数

すべて折りたたむ

出力スペクトル データ。hypercube オブジェクトまたは multicube オブジェクトとして返されます。出力データ キューブのピクセル値は、大気上端 (TOA) の反射率値です。

詳細

すべて折りたたむ

バージョン履歴

R2020b で導入

すべて展開する