0

我知道如何签8-neighbourhoodmatlab(即 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 回答