Main Content

removeBands

データ キューブからのスペクトル バンドの削除

R2020a 以降

    説明

    newhcube = removeBands(hcube,'Wavelength',wlrange) は指定した波長範囲内のスペクトル バンドをデータ キューブから削除します。この関数は、元のデータ キューブから、残りの波長、そのメタデータ情報、対応するスペクトル バンドを含む新しい hypercube オブジェクトを返します。

    newhcube = removeBands(hcube,'BandNumber',band) は指定されたスペクトル バンド番号を持つスペクトル バンドをハイパースペクトル データ キューブから削除します。

    メモ

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

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

    すべて折りたたむ

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

    hcube = hypercube('paviaU.dat');

    hypercube オブジェクトのプロパティを調べます。

    hcube
    hcube = 
      hypercube with properties:
    
          DataCube: [610×340×103 double]
        Wavelength: [103×1 double]
          Metadata: [1×1 struct]
    
    

    ハイパースペクトル データ キューブのスペクトル波長範囲を求めます。

    range = [min(hcube.Wavelength) max(hcube.Wavelength)]
    range = 1×2
    
       430   838
    
    

    ハイパースペクトル データ キューブから削除する波長の範囲を指定します。

    wlrange = [410 450; 620 850];

    指定した波長範囲にあるスペクトル バンドを削除します。この関数は、削除されたバンドを含まない、新しい hypercube オブジェクトを返します。

    newhcube = removeBands(hcube,'Wavelength',wlrange)
    newhcube = 
      hypercube with properties:
    
          DataCube: [610×340×42 double]
        Wavelength: [42×1 double]
          Metadata: [1×1 struct]
    
    

    元の波長値と新しい波長値をプロットします。

    figure
    plot(hcube.Wavelength,'o')
    hold on
    plot(newhcube.Wavelength,'or')
    xlabel('Band Number')
    ylabel('Wavelength')
    legend('Original Values','New Values','Location','SouthEast')

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

    hcube = hypercube('paviaU.dat')
    hcube = 
      hypercube with properties:
    
          DataCube: [610×340×103 double]
        Wavelength: [103×1 double]
          Metadata: [1×1 struct]
    
    

    関数 ppi を使用して、ハイパースペクトル データ キューブのスペクトル的に異なる 5 つのエンドメンバーを計算します。

    endmembers = fippi(hcube,5);

    エンドメンバー スペクトルに基づいて、入力データ キューブの最も情報量の多いバンドを 10 個求めます。

    [~,informativeband] = selectBands(hcube,endmembers,'NumberOfBands',10);

    情報量の多いバンドのバンド番号を使用して、データ キューブの情報量のないバンドのバンド番号を求めます。

    band = setdiff(1:size(hcube.DataCube,3),informativeband);

    ハイパースペクトル データ キューブから情報量のないバンドを削除します。この関数は、最も情報量の多いバンドのみを含む、新しい hypercube オブジェクトを返します。

    newhcube = removeBands(hcube,'BandNumber',band)
    newhcube = 
      hypercube with properties:
    
          DataCube: [610×340×10 double]
        Wavelength: [10×1 double]
          Metadata: [1×1 struct]
    
    

    元の波長値と新しい波長値をプロットします。

    figure
    plot(hcube.Wavelength,'o')
    hold on
    plot(newhcube.Wavelength,'or')
    xlabel('Band Number')
    ylabel('Wavelength')
    legend('Original Values','New Values','Location','SouthEast')

    入力引数

    すべて折りたたむ

    入力ハイパースペクトル データ。hypercube オブジェクトとして指定します。hypercube オブジェクトの DataCube プロパティにはハイパースペクトル データ キューブが格納されます。

    削除する波長範囲。K 行 2 列の行列として指定します。K は入力データから削除する波長範囲の数です。各行の形式は [Wmin Wmax] です。Wmin および Wmax は削除する範囲の最小波長と最大波長です。指定された波長範囲の少なくとも 1 つは、入力 hypercube オブジェクト内の少なくとも 1 つのスペクトル バンドの波長値と重なり合っていなければなりません。

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

    削除するスペクトル バンド番号。正の整数または正の整数のベクトルとして指定します。指定したバンド番号はすべて入力ハイパースペクトル データ内にあるスペクトル バンドの数以下でなければなりません。

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

    出力引数

    すべて折りたたむ

    出力ハイパースペクトル データ。hypercube オブジェクトとして返されます。

    バージョン履歴

    R2020a で導入