2D преобразования Фурье

Функция fft2 преобразовывает 2D данные в пробел частоты. Например, можно преобразовать 2D оптическую маску, чтобы показать ее дифракционный шаблон.

Двумерное преобразование Фурье

Следующая формула задает дискретное преобразование Фурье Y матрицы X m на n.

Yp+1, q+1 =  j=0m−1∑k=0n−1ωmjpωnkqXj+1, k+1

ωm и ωn являются комплексными корнями из единицы, заданными следующими уравнениями.

ωm=e−2πi/mωn=e−2πi/n

i - мнимая единица, p, и j являются индексами, которые запускаются от 0 до m–1, и q и k являются индексами, которые запускаются от 0 до n–1. Индексы для X и y переключены 1 в этой формуле, чтобы отразить матричные индексы в MATLAB®.

Вычисление 2D преобразования Фурье X эквивалентно первому вычислению 1D преобразования каждого столбца X, и затем взятие 1D преобразования каждой строки результата. Другими словами, команда fft2(X) эквивалентна Y = fft(fft(X).').'.

2D дифракционный шаблон

В оптике преобразование Фурье может использоваться, чтобы описать дифракционный шаблон, произведенный инцидентом плоской волны на оптической маске с маленькой апертурой [1]. Этот пример использует функцию fft2 на оптической маске, чтобы вычислить ее дифракционный шаблон.

Создайте логический массив, который задает оптическую маску с маленькой, круговой апертурой.

n = 2^10;                 % size of mask
M = zeros(n);
I = 1:n; 
x = I-n/2;                % mask x-coordinates 
y = n/2-I;                % mask y-coordinates
[X,Y] = meshgrid(x,y);    % create 2-D mask grid
R = 10;                   % aperture radius
A = (X.^2 + Y.^2 <= R^2); % circular aperture of radius R
M(A) = 1;                 % set mask elements inside aperture to 1
imagesc(M)                % plot mask
axis image

Используйте fft2, чтобы вычислить 2D преобразование Фурье маски и использовать функцию fftshift, чтобы перестроить вывод так, чтобы нулевая частотная составляющая была в центре. Постройте график получившихся дифракционных частот шаблона. Синий указывает, что маленькие амплитуды и желтый указывают на большие амплитуды.

DP = fftshift(fft2(M));
imagesc(abs(DP))
axis image

Чтобы улучшить детали областей с маленькими амплитудами, постройте график 2D логарифма дифракционного шаблона. Очень маленькие амплитуды затронуты числовой ошибкой округления, и прямоугольная сетка вызывает радиальную асимметрию.

imagesc(abs(log2(DP)))
axis image

Ссылки

[1] Фаулз, G. R. Введение в современную оптику. Нью-Йорк: Дувр, 1989.

Смотрите также

| | | |

Похожие темы

Была ли эта тема полезной?