我知道如何签8-neighbourhood
入matlab
(即 nlfilter)。但是,我想将更多重复的值分配给中心值。因此,例如,假设我在 8 邻域中有以下值:
2 值 = 56
3 值 = 64
1 值 = 70
1 值 = 87
1 值 = 65
在这种情况下,我们将分配64
给中心像素。
我们怎么能做到这一点?
谢谢。
我知道如何签8-neighbourhood
入matlab
(即 nlfilter)。但是,我想将更多重复的值分配给中心值。因此,例如,假设我在 8 邻域中有以下值:
2 值 = 56
3 值 = 64
1 值 = 70
1 值 = 87
1 值 = 65
在这种情况下,我们将分配64
给中心像素。
我们怎么能做到这一点?
谢谢。
向量 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))