Максимальная частота, присутствующая на изображении в MATLAB - PullRequest
2 голосов
/ 20 марта 2012

Я полагаю, что здесь есть разные формы этого вопроса в stackoverflow. Но я не мог понять, как я могу решить мою проблему.

У меня есть изображение, и я хочу найти частоту содержания изображения.

img = imread('test.tif');
img = rgb2gray(img);
[N M] = size(img);
%% Compute power spectrum
imgf = fftshift(fft2(img));
imgfp = (abs(imgf)/(N*M)).^2;

Я знаю, что для этой цели мне нужно использовать fft. Но мне было интересно, смогу ли я найти максимальную частоту на изображениях в терминах определенного значения, скажем, «x циклов / мм» или «x циклов / дюйм».

Как лучше всего это сделать?

Спасибо.

1 Ответ

4 голосов
/ 20 марта 2012

БПФ возвращает данные в массиве, где каждый элемент массива несколько связан с циклами на общую ширину данных (или высоту и т. Д.). Таким образом, вы можете разделить каждый номер ячейки БПФ на размер изображения в некоторой размерной единице (скажем, «дюймы»), чтобы получить циклы на единицу измерения (скажем, циклы на дюйм).

Обратите внимание, что за исключением некоторых очень специфических узко определенных типов изображений (скажем, периодических синусоидальных градиентов с постоянной амплитудой и точной апертурой), любое содержимое изображения будет разбрызгиваться по всему частотному спектру и диапазону результата БПФ. Поэтому вам, вероятно, придется установить ненулевое пороговое значение для частотного содержимого, прежде чем вы сможете ограничить свой «максимальный» поиск частоты.

...