Нахождение 2d импульсных пиков в MATLAB - PullRequest
4 голосов
/ 22 ноября 2010

Каков наилучший метод для нахождения импульсных пиков (дельта Дирака) в 2-мерной матрице.

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

Я думал об использовании findpeaks, но нет2-я версия.Я также видел более ранние посты, касающиеся нахождения обычных пиков с использованием imdlates и / или imextendedmax, но они находят все пики в 2d матрице, тогда как меня интересуют только импульсные пики.Я уверен, что люди DSP имеют общий рецепт для этого ...

Пожалуйста, помогите,

Спасибо

Ответы [ 3 ]

6 голосов
/ 22 ноября 2010

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

Предполагается, что ваш входной сигнал называется signal

%# dilate to find, for every pixel, the maximum of its neighbors
dilationMask = ones(3);
dilationMask(5) = 0;
dilSignal = imdilate(signal, dilationMask);

%# find all peaks
%# peaks = signal > dilSignal;

%# find large peaks peaks by thresholding, i.e. you accept a peak only 
%# if it's more than 'threshold' higher than its neighbors
peaks = (signal - dilSignal) > threshold;

peaks - это логический массив с единицами, где есть хорошийпик.Вы можете использовать его для считывания высоты пика из сигнала с помощью signal(peaks) и для поиска координат с помощью find(peaks).

2 голосов
/ 09 марта 2011

Эта статья, которую я написал содержит исходный код Matlab для быстрого обнаружения локальных пиков в 2D. Он работает аналогично imregionalmax() в Mathworks Image Processing Toolbox, но позволяет указать радиус локальной окрестности: больший радиус -> более редкие пики.

Так как вы ожидаете редких импульсов, вам может подойти функция nonmaxsupp_scanline().

0 голосов
/ 22 ноября 2010

Алгоритм findpeaks довольно тривиален;если элемент больше, чем оба его соседа, то это пик.Написание 2D-версии этого должно быть довольно простым.

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