2012-03-19 4 views
2

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

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

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 cycle/mm» или «x cycles/inch».

Что было бы лучшим способом сделать это?

спасибо.

+3

Если вы посмотрите на 'imgfp', вы заметите, что почти все изображения будут иметь ненулевой частотный контент до fs/2 (где fs - частота дискретизации). Поэтому вам нужно будет уточнить, что вы подразумеваете под «максимальной частотой». –

ответ

4

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

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

+0

Спасибо за ваш ответ. Поэтому, я думаю, я должен начать с поиска номера бина для БПФ. – Sista

+0

Не «номер ячейки». БПФ имеет N/2 бункера (независимый, для типичного реального ввода), каждый со сложным значением величины. – hotpaw2

+0

Еще одна вещь, заслуживающая внимания, заключается в том, что вы неявно предполагаете прямоугольные оконные функции, но просто вычисляете FFT напрямую. Почти никто на практике не использовал бы это. Вы должны рассмотреть возможность свертывания вашего изображения с помощью чего-то вроде окон Чебышева, чтобы уменьшить эффект боковых лепестков в вашей частотной оценке. Вероятно, это похоже на кучу тарабарщины, если вы новичок в этом, но это стоит того, чтобы учиться, и у Matlab есть приличные встроенные модули, чтобы упростить процесс окон. – ely

Смежные вопросы