Main Content

radiance2Reflectance

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

説明

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

newhcube = radiance2Reflectance(hcube,'BlockSize',blocksize) は、名前と値のペアの引数 'BlockSize' を使用して、ハイパースペクトル データ キューブのブロック処理用のブロック サイズを指定します。

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

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

メモ

名前と値のペアの引数 'BlockSize' を指定してブロック処理を実行するには、MATLAB® R2021a 以降のリリースが必要です。

メモ

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

すべて折りたたむ

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

input = hypercube('EO1H0440342002212110PY_cropped.hdr');

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

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

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

input = removeBands(input,'BandNumber',bandNumber);

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

hcube = dn2radiance(input);

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

newhcube = radiance2Reflectance(hcube);

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

radianceBand = hcube.DataCube;
reflectanceBand = newhcube.DataCube;
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. Axes object 1 with title Radiance Band contains an object of type image. Axes object 2 with title Reflectance Band contains an object of type image.

入力引数

すべて折りたたむ

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

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

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

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

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

出力引数

すべて折りたたむ

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

詳細

すべて折りたたむ

TOA の反射率

TOA の反射率値は、表面で反射される放射輝度と表面に入射する放射輝度の比を指定します。

Reflectance ρλ=πd2LλESUNλθE

d は地球と太陽の距離を天文単位で表したもので、ESUNλ は各スペクトル バンドの平均太陽放射輝度であり、θE は太陽高度角です。

Lλ は、次のように計算されるスペクトル放射輝度です。

Radiance Lλ=(DN×Gain)+Bias

Gain および Bias はそれぞれ、各スペクトル バンドのゲイン値とオフセット値です。hypercube オブジェクトの Metadata プロパティには、ゲイン値とオフセット値が含まれます。

バージョン履歴

R2020b で導入