Использование MATLAB для поиска максимумов для данных с большим количеством шума - PullRequest
4 голосов
/ 06 мая 2010

У меня есть шумные данные с тремя пиками в MATLAB, и я хочу выполнить некоторую обработку изображений на нем. Пики имеют ширину около 5-9 пикселей в основании, в массиве 50 x 50. Как мне найти вершины? MATLAB очень новый для меня. Вот что у меня пока ...

Для моего исходного изображения назовем его array, я пробовал

J = fspecial('gaussian',[5 5], 1.5);
C = imfilter(array, J)
peaks = imregionalmax(C);

но все еще есть некоторый шум вдоль базовой линии между пиками, поэтому я в итоге получаю тонну локальных максимумов, которые на самом деле являются просто значениями шума. (Я пытался играть с размером фильтра, но это не помогло.) Я также попытался

peaks = imextendedmax(C,threshold);

где порог был определен визуально ... который работает, но определенно не является хорошим способом сделать это, поскольку он, очевидно, не такой надежный.

Итак, как мне найти эти пики надежным способом?

1 Ответ

2 голосов
/ 06 мая 2010

Быстрые предложения:

Попробуйте поработать с медианным фильтром в matlab medfilt2 , он эффективнее удаляет шум, чем фильтр Гаусса. Конвективный фильтр Гаусса лучше работает с мелким шумом и лучше сохраняет изображение.

Затем, после того как вы извлечете пики, которые они еще не классифицировали, вы должны классифицировать каждый пик и решить, является ли это шумом или ожидаемым пиком. Я предлагаю вам взглянуть на класс функций двоичное изображение . Особенно посмотрите на bwconncomp .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...