2013-04-27 3 views
0

8-neighbourhood을 확인하는 방법은 matlab (즉, nlfilter)입니다. 하지만, 중심 값에 반복되는 값을 할당하고 싶습니다. 그래서, 다음의 8 근방의 ​​값이, 예를 들어 말 : 56가장 많이 반복되는 값

-3- 값 =

2 값을 64

값 1 = 70

1- 값 = 87

1 값 = 우리는 중심 화소에 할당 할 64이 경우 65

.

어떻게 할 수 있습니까?

감사합니다.

+0

무엇 충돌에 대한, 즉에게 걸릴 수

당신이 배열의 각 고유 항목의 수를 원한다면, 당신이 할 수있는, 두 값이 가장 반복됩니까? – Oleg

답변

2

mode 또는 histc 기능이 필요하다고 생각합니다. 벡터 X에 대한

M = 모드 (X)의 데이터로 X.

실시 예에서 발생하는 값을 샘플 모드로 M을 계산하거나 자주 :

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)) 
+0

다음을 명심하십시오. * "여러 값이 동등하게 자주 발생하는 경우 모드는 그 값 중 가장 작은 값을 반환합니다."* – Oleg

+0

계산하려면 'histc()'가 더 좋습니다. – Oleg

관련 문제