2010-05-06 3 views
4

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?

Répondre

2

suggestions rapides:

Essayez de travailler avec un filtre médian dans Matlab medfilt2, il est plus efficace pour éliminer le bruit que filtre gauss. Le filtre de conovlution Gauss fonctionne mieux avec un bruit fin et préserve davantage l'image.

Ensuite, après avoir extrait les pics, ils ne sont toujours pas classés, vous devez classer chaque pic et décider s'il s'agit du bruit ou du pic attendu. Je vous suggère de regarder dans la classe binary image des fonctions. Surtout regarder bwconncomp.

Questions connexes