0

8-neighbourhoodチェックインする方法を知っていますmatlab(つまり、nlfilter)。でも、もっと繰り返される値を中央の値に割り当てたいです。たとえば、8 近傍に次の値があるとします。

2 値 = 56

3 値 = 64

1値 = 70

1 値 = 87

1値 = 65

この場合64、中央のピクセルに割り当てます。

どうすればそれができますか?

ありがとう。

4

1 に答える 1

2

modeまたはhistc関数のいずれかが必要だと思います。

ベクトル X の M=mode(X) は、M をサンプル モード、または X で最も頻繁に発生する値として計算します。

データの例:

x = [56 56 64 64 64 70 87 65];
mode(x)

ans =

64

しかし、これは最も頻繁に発生する値しか得られません。

配列内の一意の各アイテムの数が必要な場合は、次のようにします。

unqx = unique(x);

unqx =

56    64    65    70    87

valueCount = histc(x, unqx)

ans =

 2     3     1     1     1

次に、これを並べ替えて、最初のN値を取ることができます

valueCount = sort(valueCount, 'descend');
% Use unqx(valueCount(1:N))
于 2013-04-27T02:21:09.360 に答える