2017-02-02 4 views
0

私は、ハイパースペクトル画像を表す3次元マトリックスを持っています.2次元は異なるピクセルを表し、1次元は異なるスペクトルバンドを表します。MATLABで3次元マトリックスを分割する

この画像を次のようにセグメント化する必要があります。 1.画像をピクセル単位で2つのセグメントに分割します。 2. 2つのセグメントの平均スペクトル値を計算します。 3. 2つのセグメントのそれぞれのすべてのピクセルを前記平均と等しく設定します。

最後に、2つのセグメントに分割された画像が必要です。同じセグメント内のすべてのピクセルは、そのセグメントのスペクトル平均と等しくなります。

私はkmeansを使用しようとしましたが、それまでのところ成功していません。

どのようにすればいいですか?

答えて

0

kmeans()はあなたのために働いていないことについて詳述すると役に立ちます。私はkmeansにあなたの呼び出しで画像の大きさ(m x nピクセル)を保存しようとしていると思います。

rows/colsをまたいで崩壊すると、kmeansは各ピクセルをそのスペクトルバンドベクトルで分類できなければなりません。

[m,n,sps] size(data); %pixel row, pixel col, spectral band 
numGroups = 2; 
[idx,centers] = kmeans(reshape(data,[m*n,sps]),numGroups); 
関連する問題