Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

hypermnf

ハイパースペクトル データの最大ノイズ フラクション変換

R2020a 以降

    説明

    outputDataCube = hypermnf(inputData,numComponents) は、最大ノイズ フラクション (MNF) 変換を使用して、numComponents に指定された数の主成分バンドを計算します。スペクトル次元削減を実現するには、指定した主成分の数が入力データ キューブ内のスペクトル バンドの数未満でなければなりません。

    MNF 変換を使用して導出された成分は未調整の主成分とも呼ばれています。MNF 変換は主成分 (PC) 画質の降順で主成分を配置します。

    また、[outputDataCube,coeff] = hypermnf(inputData,numComponents) は入力データ キューブのスペクトル バンドをまたがって推定された MNF 係数も返します。

    [___] = hypermnf(inputData,numComponents,'MeanCentered',flag) は平均センタリングされたスペクトル バンドから MNF 変換を計算します。入力データ キューブ内の各スペクトル バンドを平均センタリングするためのオプションは flag で指定します。

    メモ

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

    Image Processing Toolbox Hyperspectral Imaging LibraryMATLAB® Online™ または MATLAB Mobile™ ではサポートされないため、デスクトップの MATLAB が必要となります。

    すべて折りたたむ

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

    hcube = hypercube('indian_pines.dat');

    ハイパースペクトル データの 10 個の主成分バンドとそれに関連する変換係数を計算します。

    [outputDataCube,coeff] = hypermnf(hcube,10);

    入力データ キューブの最初の 10 個のスペクトル バンドを表示します。

    figure
    montage(hcube.DataCube(:,:,1:10),'BorderSize',[10 10],'Size',[2 5],'DisplayRange',[]);
    title('First 10 Spectral Band Images')

    可視化のため、主成分の値を [0, 1] の範囲に入るよう再スケーリングします。データ キューブから抽出された主成分バンドをすべて表示します。主成分バンドが画質の降順 (またはノイズ レベルの昇順) で配置されます。

    figure
    rescalePC = rescale(outputDataCube,0,1);
    montage(rescalePC,'BorderSize',[10 10],'Size',[2 5]);
    title('Principal Component Bands of Data Cube')

    入力引数

    すべて折りたたむ

    入力ハイパースペクトル データ。サイズが M x N x C のハイパースペクトル データ キューブを表す 3 次元数値配列または hypercube オブジェクトとして指定します。入力が hypercube オブジェクトの場合、関数はそのオブジェクトの DataCube プロパティに格納されたデータ キューブを読み取ります。ハイパースペクトル データ キューブは実数で非スパースでなければなりません。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    データ キューブから抽出する主成分バンドの数。正の整数スカラーとして指定します。この値は入力データ キューブ内にあるスペクトル バンドの数以下でなければなりません。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    スペクトル バンドを平均センタリングするためのインジケーター。次のいずれかの値として指定します。

    • true または 1 — MNF 変換を計算する前にスペクトル バンドの平均を減算することで入力データ キューブ内の各スペクトル バンドを平均センタリングします。

    • false または 0 — 入力データ キューブ内のスペクトル バンドを平均センタリングすることなく主成分バンドを計算します。

    データ型: logical

    出力引数

    すべて折りたたむ

    MNF 変換されたデータ キューブ。サイズが M x N x numComponents の 3 次元数値配列として返されます。出力データ キューブの空間次元は、入力データ キューブの空間次元と同じです。出力データ キューブのスペクトル次元は、入力時に指定された主成分の数と等しくなります。

    入力データ型が double の場合、出力データ型も double です。それ以外の場合、出力データ型は single です。

    データ型: single | double

    MNF 係数。サイズが C 行 numComponents 列の行列として返されます。C は入力データ キューブ内のスペクトル バンドの数です。coeff の各列には、1 つの主成分の係数が格納されます。列は主成分の画質の順です。

    入力データ型が double の場合、coeff のデータ型も double です。それ以外の場合、データ型は single です。

    データ型: single | double

    参照

    [1] Green, A.A., M. Berman, P. Switzer, and M.D. Craig. “A Transformation for Ordering Multispectral Data in Terms of Image Quality with Implications for Noise Removal.” IEEE Transactions on Geoscience and Remote Sensing 26, no. 1 (January 1988): 65–74. https://doi.org/10.1109/36.3001.

    バージョン履歴

    R2020a で導入