メインコンテンツ

hypermnf

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

    説明

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

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

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

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

    メモ

    この関数には、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 が必要です。

    すべて折りたたむ

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

    hcube = imhypercube("indian_pines.dat");

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

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

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

    datacube = gather(hcube);
    figure
    montage(datacube(:,:,1:10),BorderSize=[10 10],Size=[2 5],DisplayRange=[]);
    title("First 10 Spectral Band Images")

    Figure contains an axes object. The hidden axes object with title First 10 Spectral Band Images contains an object of type image.

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

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

    Figure contains an axes object. The hidden axes object with title Principal Component Bands of Data Cube contains an object of type image.

    入力引数

    すべて折りたたむ

    入力ハイパースペクトル データ。サイズが M x N x C のハイパースペクトル データ キューブを表す 3 次元数値配列または hypercube オブジェクトとして指定します。ハイパースペクトル データ キューブは実数で非スパースでなければなりません。

    データ型: 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 係数。サイズが CnumComponents 列の行列として返されます。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 で導入