Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Transformadas de Fourier 2D

La función fft2 transforma datos 2D en espacio de frecuencia. Por ejemplo, puede transformar una máscara óptica 2D para revelar su patrón de difracción.

Transformada de Fourier bidimensional

La siguiente fórmula define la transformada discreta de Fourier Y de una matriz X de m por n.

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

ωm y ωn son raíces complejas de la unidad definidas por las siguientes ecuaciones.

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

i es la unidad imaginaria, p y j son índices que van de 0 a m–1, y q y k son índices que van de 0 a n–1. Los índices para X e Y se desplazan por 1 en esta fórmula para reflejar los índices de matriz en MATLAB®.

Calcular la transformada de Fourier 2D de X equivale a calcular primero la transformada 1D de cada columna de X y, luego, tomar la transformada 1D de cada fila del resultado. En otras palabras, el comando fft2(X) equivale a Y = fft(fft(X).').'.

Patrón de difracción 2D

En óptica, la transformada de Fourier puede utilizarse para describir el patrón de difracción producido por una onda plana que incide en una máscara óptica con una pequeña apertura [1]. Este ejemplo utiliza la función fft2 en una máscara óptica para calcular su patrón de difracción.

Cree un arreglo lógico que defina una máscara óptica con una pequeña apertura circular.

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 object. The axes object contains an object of type image.

Utilice fft2 para calcular la transformada de Fourier 2D de la máscara y utilice la función fftshift para reorganizar la salida de forma que el componente de frecuencia cero esté en el centro. Represente las frecuencias del patrón de difracción resultante. El azul indica amplitudes pequeñas, y el amarillo indica amplitudes grandes.

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

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

Para realzar los detalles de las regiones con amplitudes pequeñas, represente el logaritmo 2D del patrón de difracción. Las amplitudes muy pequeñas se ven afectadas por el error de redondeo numérico, y la cuadrícula rectangular provoca asimetría radial.

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

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

Referencias

[1] Fowles, G. R. Introduction to Modern Optics. New York: Dover, 1989.

Consulte también

| | | |

Temas relacionados