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

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

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

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

Yp+1,q+1=j=0m1k=0n1ωmjpωnkqXj+1,k+1

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

ωm=e2πi/mωn=e2πi/n

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

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

2-D дифракционного шаблона

В оптике преобразование Фурье может использоваться, чтобы описать дифракционный шаблон, полученный плоской волной, падающей на оптическую маску с небольшой апертурой [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

Figure contains an axes. The axes contains an object of type image.

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

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

Figure contains an axes. The axes contains an object of type image.

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

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

Figure contains an axes. The axes contains an object of type image.

Ссылки

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

См. также

| | | |

Похожие темы