Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

dn2radiance

デジタル値の放射輝度への変換

説明

newhcube = dn2radiance(hcube) は、ハイパースペクトル データ キューブのピクセル値をデジタル値から放射輝度値に変換します。この関数は、新しい hypercube オブジェクトを返します。なお、データ キューブのピクセル値は大気上端 (TOA) の放射輝度です。

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

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

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

メモ

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

メモ

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

すべて折りたたむ

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

hcube = hypercube('EO1H0440342002212110PY_cropped.hdr');

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

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

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

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

関数 dn2radiance を使用して、放射輝度値を計算します。

newhcube = dn2radiance(hcube);

入力放射輝度データと出力放射輝度データのスペクトル バンド イメージを読み取り、表示します。

inputBand = hcube.DataCube;
radianceBand = newhcube.DataCube;
band = 80;
figure
subplot(1,2,1)
imagesc(inputBand(:,:,band))
title('Input Band')
axis off
subplot(1,2,2)
imagesc(radianceBand(:,:,band))
title('Radiance Band')
axis off
colormap gray   

Figure contains 2 axes. Axes 1 with title Input Band contains an object of type image. Axes 2 with title Radiance Band contains an object of type image.

入力引数

すべて折りたたむ

入力ハイパースペクトル データ。hypercube オブジェクトとして指定します。hypercube オブジェクトの DataCube プロパティにはハイパースペクトル データ キューブが格納されます。デジタル値で示されたピクセル値を放射輝度値に変換するには、hypercube オブジェクトの Metadata プロパティに Gain フィールドおよび Offset フィールドを含めなければなりません。

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

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

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

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

出力引数

すべて折りたたむ

出力ハイパースペクトル データ。hypercube オブジェクトとして返されます。出力データ キューブのピクセル値は、描画中の面からの放射量を指定する放射輝度です。放射輝度値は、次の方程式を使用し、デジタル値から計算します。

Radiance Lλ=(DN×Gain)+Bias

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

R2020b で導入