D'après ce que je comprends, imextendedmax(A,x)
premier supprime tous les maxima qui sont x ou moins au-dessus de leur environnement, et il appelle imregionalmax
.
Ainsi, vous voulez appeler
imextendedmax(A,1)
ans =
0 0 0 1 0
0 0 1 1 0
1 0 1 0 0
1 0 0 0 1
0 0 0 0 1
Si vous voulez trouver tous les domaines qui sont x ou plus dans une image, vous pouvez aussi simplement appeler (pour x = 8)
x = 8;
A >= x
ans =
0 0 0 1 0
0 0 1 1 0
1 0 1 0 0
1 0 0 0 1
0 0 0 0 1
Ainsi, le seuil de l'image.
En fin de compte, tout se résume à ce que vous voulez faire. Si vous considérez votre image comme ayant des pics et des vallées, voulez-vous trouver l'emplacement des pics? Ensuite, utilisez imdilate
pour la détection maximale locale (voir ci-dessous). Voulez-vous savoir quelles parties des sommets et des vallées resteraient sèches si vous remplissiez tout à un niveau x avec de l'eau? Ensuite, utilisez A>x
etc.
EDIT
Toutes mes excuses sur findpeaks
. J'ai supposé que vous l'avez mentionné parce que cela a fonctionné pour 2D et je n'ai pas vérifié. Pour la détection maximale locale, d'une manière très agréable est d'utiliser imdilate comme ce
locMaxMask = A > imdilate(A,[1,1,1;1,0,1;1,1,1]);
L'appel à imdilate remplace chaque pixel avec le maximum de ses environs. Ainsi, la comparaison donnera tous les pixels qui ont une valeur plus élevée que les 8 pixels environnants. A propos du bruit: Il y a eu une question similaire à la vôtre, donc je vous relie au answer que j'ai donné là.