Bir tane mi yerel maksimum var, yoksa daha çok mu?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
% uniquenessOfLocalExtremum: Bir tane mi yerel maksimum var, yoksa daha çok
% mu?

% ANLATIM
% Elimizde bir M matrisi olsun. Örneğin 3x3'lük komşulukta (pencereler) ile
% matrisin elemanları üzerinde geziyoruz ve bu pencere içindeki en yüksek
% değerleri buluyoruz. O hücreye ait en yüksek tek değer mi vardır, yoksa
% daha çok mu?

% Önce bir matrisimiz olmalı (bu gri bir resim de olabilirdi)

M = [7 24  1  8 15
    23  5  7 14 16
     4  6 13 22 22
    10 12 19 21  3
    11 18 25  2  9];

% Aklımızda bulunsun: imdilate ile 3x3'lük 1 matrisi kullanımı o
% komşuluktaki en yüksek değeri verir, ama biz başka bir yöntem kullanalım. 

highest = imdilate(M, ones(3,3));

% En yüksekten bir tane mi var? sorusuna cevap verebilmek için en
% yüksekleri ve en yüksek ikincileri bulup karşılaştırmak yeterli
% olacaktır. 
% ordfilt2 2 boyutta istatistiksel sıralama yapar
% kullanım: ordfilt2(matris,kaçıncısı,bakılacak alan)

highest = ordfilt2(M, 9, ones(3,3));
secondHighest = ordfilt2(M, 8, ones(3,3));
nonUniqueMaximaMask = (highest == secondHighest);

% Not: Buna benzer olarak minimumlar için olanı da yapılabilirdi.
% ordfilt2'in ikinci parametreleri 1 ve 2 olacaktı.

% Kaynak:
% http://blogs.mathworks.com/steve/2006/04/10/quick-tip-determining-uniquen
% ess-of-neighborhood-maximum/