J'ai un jeu de données bruyant avec trois pics dans MATLAB et je veux y faire un traitement d'image. Les pics ont environ 5-9 pixels de large à la base, dans un tableau de 50 x 50. Comment puis-je localiser les pics? MATLAB est très nouveau pour moi. Voici ce que j'ai jusqu'à présent ...Utiliser MATLAB pour trouver des maxima pour des données avec beaucoup de bruit
Pour mon image, nous allons l'appeler array
, j'ai essayé
J = fspecial('gaussian',[5 5], 1.5);
C = imfilter(array, J)
peaks = imregionalmax(C);
mais il reste encore un peu de bruit le long de la ligne de base entre les pics et je finis par obtenir une tonne de maxima locaux qui ne sont vraiment que des valeurs de bruit. (J'ai essayé de jouer avec la taille du filtre, mais cela n'a pas aidé.) J'ai aussi essayé
peaks = imextendedmax(C,threshold);
où le seuil a été déterminé visuellement ... ce qui fonctionne, mais est certainement pas une bonne façon de le faire puisque ce n'est pas si robuste évidemment. Alors, comment puis-je localiser ces pics de manière robuste?