Está en la página 1de 13

Laboratorio 6: Análisis de Fourier en Matlab

Juan Sebastian Vargas Alfonso Karen Brigitte Medina Reyes


Escuela de Ciencias Exactas e Ingenierı́a Escuela de Ciencias Exactas e Ingenierı́a
Universidad Sergio Arboleda - Bogotá, Colombia Universidad Sergio Arboleda - Bogotá, Colombia
Juans.vargas1@correo.usa.edu.co karen.medina01@correo.usa.edu.co
Resumen
En el siguiente laboratorio se pondrán a prueba los conceptos y propiedades del análisis de Fourier utilizando los
paquetes incluidos en el sofware de Matlab.Se pondran en practica el concepto de análisis espectral. y se realizara un
filtrado de imagenes.
Palabras cláve:
, Matlab, Fourier,DFT,DFTV,FFT,Señal, Imagenes,Winer

1. Marco teórico
1. Transformada de Fourier discreta: Desempeña un papel fundamental en el análisis y diseño de sistemas digi-
tales de procesamiento de señales. Cuando se implementa la DFT mediante diversos algoritmos conocidos como
Transformada Rápida de Fourier (FFT) , la DFT proporciona una excelente técnica de análisis en el dominio de la
frecuencia aplicada a la investigación de sistemas digitales LTI.
Cuando la señal es periodica:
Si una señal x[n] de tiempo discreto es periódica con periodo N se puede representar de forma analı́tica mediante
la serie de Fourier
Representar mediante la composición de una suma de funciones armónicamente relacionadas

Figura 1: Formulas de Fourier

Cuando no es periodica:
En este caso tenemos a x[n] una secuencia no periódica de duración finita, es decir x[n] = 0 para —n— ¿ N1

Propiedades: en la figura 1 se puede encontrar las propiedades que corresponden al sistema de Fourier según
el dominio del tiempo y la frecuencia
Figura 2: Propiedades de Fourier

2D-DFT: La transformada integral de Fourier en dos dimensiones está definida por el siguiente par de
ecuaciones:

Figura 3: Formulas 2D-DFT

2. Espectro de una imagen: A X()/X( ) se le conoce también como la representación en la frecuencia o el espectro
de x(t)/x[n].
En tiempo continuo:
La transformada de Fourier de la secuencia x(t) es de carácter complejo. Forma polar

Figura 4: Formula en tiempo continuo

donde —X()— — espectro de magnitud; () — espectro de fase. Si x(t) entonces el espectro de magnitud es par
y el espectro de fase impar.
En tiempo discreto:
La transformada de Fourier de la secuencia x[n] es de carácter complejo. Forma polar:

Figura 5: Formula en tiempo discreto


3. ¿Fı́sicamente y matemáticamente que representa? El objetivo del análisis de Fourier es imágenes es determinar
su frecuencia, orientación , amplitud y fase que debe tener cada una de sus componentes sinusoidales las cuales
sintetizan la imagen. Con lo anterior se puede decir que cualquier imagen se puede expresar como una combinación
de infinitos componentes sinusoidales, denominados componentes espectrales
4. Ruido Gaussiano a imágenes: Modela el ruido producido por los circuitos electrónicos o ruido de los sensores
por falta de iluminación y/o altas temperaturas. La intensidad de todos los pı́xeles se ve afectada.
Para añadir ruido Gaussiano se necesita de los siguientes codigos

1 I = imread('iamgen'); imshow(I)

Añadir el ruido de sal y pimienta, con una densidad de ruido de 0,02, a la imagen. Muestre el resultado.

1 J = imnoise(I,'tipoderuido',0.02); imshow(J)

Ejemplo :

1 I = imread('imagen.jpg'); imshow(I)
2 J = imnoise(I,'gaussian',0.02); imshow(J)

Figura 6: imagen sin ruido

Figura 7: imagen con ruido Gaussiano

5. función de dispersión de puntos (point-spread function) de una imagen: Describe la respuesta de un sistema
de imagen a una fuente de punto o punto objeto. Un término más general para la PSF es la respuesta del sistema
al impulso, la PSF siendo la respuesta al impulso de un sistema óptico enfocado (central). La PSF en muchos
contextos se puede considerar como la gota (“blob”) extendida de una imagen que representa un objeto sin resolver.
En términos funcionales, es la versión de dominio espacial de la función de transferencia de la modulación. Es
un concepto útil en la óptica de Fourier, imágenes astronómicas, en el microscopio electrónico y otras técnicas
de imagen como la microscopia en 3D (microscopia de escáner de láser confocal) y la microscopia de fluorescencia.
6. Filtro de Wiener y sus clases:. El filtro de Wiener es uno de los filtros lineales óptimos más importantes. En
su forma más general, consiste en una señal de entrada, x(n), una respuesta deseada, d(n), y un filtro lineal de
respuesta impulsional h(n). Este filtro es alimentado por x(n) y produce a su salida y(n). La diferencia entre la
señal de salida del filtro, y(n), y la señal deseada, d(n), es el error de la estimación, e(n).
El objetivo del filtrado de Wiener es determinar la respuesta impulsional h(n) de forma que el error e(n) sea, en
un sentido estadı́stico, ”lo más pequeño posible”. El criterio elegido es la minimización del valor cuadrático medio
del error

Figura 8: Formula de Wiener

Esta función de coste posee una dependencia de segundo orden con los coeficientes del filtro, y tiene un mı́nimo
que determina los coeficientes óptimos, es decir, el mejor diseño del filtro.
Existen diversas estructuras para el filtro de Wiener. Comenzaremos con el caso en el que el filtro puede ser no
causal y de duración infinita, el filtro IIR no causal. Posteriormente, añadiremos la restricción de causalidad, para
obtener el filtro IIR causal. Por último, la restricción de longitud finita nos conducirá al filtro FIR.
Este filtro tiene dos clases
Filtro de Wiener IIR:Nuestro propósito es diseñar un filtro h(n) que produzca una salida y(n) = x(n) * h(n),
tan cercana como sea posible, en sentido cuadrático-medio, a la respuesta deseada, d(n). El enunciado del
problema es idéntico para filtros FIR y para IIR, pero existe una gran diferencia que cambia la solución.
Para el filtro FIR, existe un número finito de posibles coeficientes del filtro, mientras que con el filtro IIR,
el número de incógnitas, es decir, de valores de h(n) para todo n, es infinito. se considerar dos situaciones:
• Primero el caso en que no aplicamos restricciones a la solución. Obtendremos que el filtro óptimo es,
en general, no causal, y por tanto, irrealizable: Filtro Wiener IIR no causal.
• Posteriormente, aplicaremos la condición de causalidad, y para ello forzaremos h(n) a cero para valores
de ı́ndice n negativos: Filtro Wiener IIR causal.
Filtro FIR:Cuando se tiene una restricci on de longitudfinita se llega a un filtro FIR.

2. Resultados
En el siguiente código se encuentran dos funciones para realizar la transformada discreta de Fourier, las dos funciones
tienen el mismo resultado, la diferencia entre estos es que la segunda función utiliza operaciones vectorizadas, el fin de
esto es optimizar el tiempo en el que el programa es ejecuta. Esta optimización se puede observar en la cantidad de bucles
for usados en las funciones.

Listing 1: Código de funciones para la transformada discreta de Fourier


1 % Transformada discreta de Fourier
2 function[XX]=dft(x)
3 N=length(x);
4 XX=zeros(N,1);
5 for k=0:N-1
6 wk=2*pi*k/N;
7 for n=0:N-1
8 XX(k+1)=XX(k+1)+x(n+1)*exp(-j*n*wk)
9 end
10 end
11 end
12 % Trnasformada discreta de Fourier usando operaciones vectorizadas
13 function[XX]=dftv(x)
14 x=x(:);
15 N=length(x);
16 XX=zeros(N,1);
17 n=[0:N-1]';
18 for k=0:N-1
19 wk=2*pi*k/N;
20 XX(k+1)=sum(x.*exp(-j*n*wk))
21 end
22 end
Con el siguiente código se puede observar como si se aplica la misma función a las dos formas de obtener la Transformada
de Fourier, la respuesta de estas es la misma.

Listing 2: Código de omparación funciones DFT y DFTV


1 w= 16*pi;
2 t=0:0.01:10;
3 A=5;
4 x=A*sin(w*t);
5 transformada1=dft(x);
6 subplot(1,2,1),plot(transformada1,'black'),title('DFT')
7 transformada2=dftv(x);
8 subplot(1,2,2),plot(transformada2,'blue'),title('DFTV')

En la Figura 9 se observan las gráficas realizadas del código anterior.

Figura 9: Funciones de Transformada discreta de Fourier

En el siguiente código se encuentra el código de la fft realizado en Matlab.

Listing 3: Código de FFT


1 dt=1/100;
2 et=4;
3 t=0:dt:et;
4 y=3*sin(4*2*pi*t)+5*sin(2*2*pi*t); % Funcion principal
5 subplot(2,1,1);
6 plot(t,y); % Se grafica una funcion compuesta por dos senos
7 axis([0 et -8 8]);
8 xlabel('Time(s)');
9 ylabel('Amplitude');
10 Y=fft(y); %Se le aplica la transformada de Fourier a la funcion y
11 n=size(y,2)/2; % La mitad tamano de la f u n c i n y
12 amp_spec=abs(Y)/n; % Al amplitud del espectro de la transformada
13 subplot(2,1,2);
14 freq=(0:79)/(2*n*dt); %Vector de frecuencia
15 plot(freq,amp_spec(1:80)); %Se grafica el espectro de la tranformada
16 xlabel('Frequency(Hz)');
17 ylabel('Amplitude');
Figura 10: Señal original y su transformada de Fourier

Listing 4: Código FFT de una señal ruidosa


1 noise=randn(1,size(y,2)); % Se genera una senal de ruido
2 ey=y+noise; % Se anade el ruido a la funcion original
3 eY=fft(ey); % Se le aplica la transformada a la funcion con ruido
4 n=size(ey,2)/2; % La mitad del tamano de la funcion con ruido
5 amp_spec=abs(eY)/n; % Amplitud del espectro de la transformada
6 figure
7 subplot(2,1,1);
8 plot(t,ey);grid on %Se grafica la funcion con ruido
9 axis([0 et -8 8]);
10 xlabel('Time(s)');
11 ylabel('Amplitude');
12 subplot(2,1,2);
13 freq=(0:79)/(2*n*dt); %Vector de frecuencia
14 plot(freq,amp_spec(1:80)); % Se grafica el espectro de la transformada de la funcion ruidosa
15 xlabel('Frequency(Hz)');
16 ylabel('Amplitude');
Figura 11: Señal ruidosa y su transformada de Fourier

1 figure
2 plot(Y/n,'r+')
3 hold on
4 plot(eY/n,'bx')

Figura 12

Listing 5: Transformada inversa de Fourier


1 fY=fix(eY/100)*100; % Se redondea hacia cero los valores de la transformada de la funcion ruidosa
2 ifY=ifft(fY); % Se aplica la transformada inversa de Fourier
3 cy=real(ifY); % Se asignan los valores reales de la la transformada inversa
4 figure
5 plot(t,cy);grid on % Se grafica los valores reales de la transformada inversa
6 axis([0 et -8 8]);
7 xlabel('Time(s)');
8 ylabel('Amplitude');

Figura 13: Señal original obtenida de la transformada inversa

Con el siguiente código se encontró la magnitud del espectro de la señal:


20
X
f (n) = = (20 − k)sin(2knπ) (1)
k=10

La frecuencia de muestreo debe ser 1, dado que es una función discreta. En el siguiente código se encuentra el procedimiento
realizado y en la Figura 14 la respuesta a este código.

Listing 6: Código para magnitud del espectro de una señal


1 dn=1;
2 n=[0:dn:20];
3 f=0;
4 for k=10:20
5 f=f+(20-k)*sin(2*pi*k*n);
6 end
7 F=fft(f);
8 n2=size(f,2)/2;
9 amp_spec=abs(F)/n2;
10 freq=(0:20)/(2*n2*dn);
11 stem(freq,amp_spec),xlabel('Frequency(Hz)'),ylabel('Amplitude');
12 grid on
Figura 14: Magnitud del espectro señal f(n)

En el siguiente código se hace uso de tres técnicas de realce de contraste. La imagen original utilizada se encuentra a
color. En la Figura 15 se encuentran las tres técnicas utilizadas y la imagen original en escala de grises.

Listing 7: Código realce de contraste de una imagen


1 pout=rgb2gray(imread('punto5_1.jpg')); % Se importa la imagen y se pone en escala de grises
2 pout_imadjust=imadjust(pout); % Tecnica imadjust
3 pout_histeq=histeq(pout); % Tecnica histeq
4 pout_adapthisteq=adapthisteq(pout); % Tecnica adapthisteq
5 figure
6 subplot(2,2,1),imshow(pout),title('Imagen original')
7 subplot(2,2,2),imshow(pout_imadjust),title('Imadjust')
8 subplot(2,2,3),imshow(pout_histeq),title('Hisrteq')
9 subplot(2,2,4),imshow(pout_adapthisteq),,title('Adapthsteq')

Figura 15: Técnicas de realce de contraste

Diseño de filtros digitales


1. Un filtro lineal es aquel filtro electrónico que aplica un operador lineal a una señal variable en el tiempo. Una de
sus aplicaciones más frecuentes es la eliminación de frecuencias no deseadas de una determinada señal de entrada
o, al contrario, discriminar una determinada frecuencia de las demás.
El comando fir1 de Matlab permite realizar filtros pasa baja, pasa banda o multibanda, en estos tipos de filtro solo
se permite el paso de frecuencias especificas, por lo cual dice que este comando permite obtener filtros de fase
lineal.
2. Los filtros se normalizan a la frecuencia de Nyquist, esta frecuencia es Fs/2, siendo Fs la frecuencia de muestreo.
3. El filtro fir1 basado en la ventana de Hamming, esta dado por b=fir1(n,wn). La frecuencia angular wn con lesta se
calcula con: (  
2nπ
0,54 ∗ 0,46cos L−1 0n ≤ L − 1
w(n + 1) = (2)
0 otros casos
4. Para asignar una longitud L a la ventana, se puede de la forma:
w = hamming(L)
En el siguiente código se realiza la comparación temporal de 4 ventanas, en la Figura 16 se encuentra esta comparación
gráficamente.

Listing 8: Código para comparación temporal de filtros


1 N=75;
2 h_rect = boxcar(N) ;
3 h_hann = hanning(N) ;
4 h_hamm = hamming(N) ;
5 h_blac = blackman(N) ;
6 n=1:75;
7 plot(n,h_rect,'b',n,h_hann,'g',n,h_hamm,'r',n,h_blac,'m');
8 legend('Rectangular','Hanning','Hamming','Blackman');
9 axis([ 0 80 0 1.2 ]);

Figura 16: Comparación temporal de ventanas

Con el siguiente código se realiza una comparación frecuencial de las mismas 4 ventanas, en la Figura 17 se encuentra esta
comparación gráficamente.

Listing 9: Código para comparación frecuencial de filtros


1 clf
2 [H_rect,w]=freqz(h_rect);
3 [H_hann,w]=freqz(h_hann);
4 [H_hamm,w]=freqz(h_hamm);
5 [H_blac,w]=freqz(h_blac);
6 subplot(4,1,1)
7 semilogy(w,abs(H_rect))
8 axis([0 1 10e-5 10e2]);
9 subplot(4,1,2)
10 semilogy(w,abs(H_hann));
11 axis([0 1 10e-5 10e2]);
12 subplot(4,1,3)
13 semilogy(w,abs(H_hamm));
14 axis([0 1 10e-5 10e2]);
15 subplot(4,1,4)
16 semilogy(w,abs(H_blac));
17 axis([0 1 10e-5 10e2]);

Figura 17: Comparación frecuencial de ventanas

De lo anterior se puede observar un aspecto que todos los filtros es que su máxima magnitud se da cuando la frecuencia
es 0 Hz; En el filtro rectangular es el que presenta una decadencia de magnitud menor en comparación a los demás
filtros; el filtro Hanning presenta un decadencia en su magnitud que se podrı́a describir como uniforme; el filtro Hamming
mantiene una magnitud parcialmente estable desde el punto después del primer lóbulo; El filtro Blackman presente el primer
lóbulo con mayor duración en términos de la frecuencia de los filtros, después de este su comportamiento va decrementando.

En el código siguiente se realiza el enfoque de una imagen haciendo uso del filtro Wiener.

Listing 10: Código Wierner


1 I=im2double(imread('peppers.png'));
2 figure
3 subplot(2,2,[1 2])
4 imshow(I);
5 title('Imagen original');
6 LEN=21;
7 THETA=11;
8 PSF=fspecial('motion',LEN,THETA);
9 blurred=imfilter(I,PSF,'conv','circular');
10 subplot(2,2,3)
11 imshow(blurred);
12 title('Imagen borrosa');
13 wnr1=deconvwnr(blurred,PSF,0);
14 subplot(2,2,4)
15 imshow(wnr1);
16 title('Imagen restaurada');
Figura 18: Filtro Wiener a imagen desenfocada

Listing 11: Código Wiener


1 noise_mean=0;
2 noise_var=0.0001;
3 blurred_noisy=imnoise(blurred,'gaussian',noise_mean,noise_var);
4 figure
5 subplot(2,2,1)
6 imshow(I),title('Imagen original');
7 subplot(2,2,2)
8 imshow(blurred),title('Imagen borrosa');
9 subplot(2,2,3)
10 imshow(blurred_noisy),title('Imagen borrosa con ruido');
11 subplot(2,2,4)
12 signal_var=var(blurred_noisy(:));
13 estimated_nsr=noise_var/signal_var;
14 wnr1=deconvwnr(blurred_noisy,PSF,estimated_nsr);
15 imshow(wnr1),title('Imagen restaurada');
Figura 19: Filtro Wiener a imagen desenfocada y con ruido

Al aplicar el filtro Wiener se aplica a una imagen desenfocada y con ruido, se obtiene una imagen enfocada donde se puede
observar el ruido que la imagen posee de forma clara.

3. Conclusiones
En este proyecto aprendimos como distorsionar una manera desde matlab de una forma no compleja,igualmente amplia-
mos nuestro conocimiento sobre los diseños digitales La. parte que más nos pareció interesante fue como hacer un realce
en una imagen ya que esa configuración es la que usamos diariamente en nuestras imágenes

Referencias
[1] C. J. C. González, “Fundamentos del análisis de fourier,” Universidade de Vigo, 2003.
[2] Y. Tao, V. Muthukkumarasamy, B. Verma, and M. Blumenstein, “A texture extraction technique using 2d-dft and hamming distance,” in Proceedings
Fifth International Conference on Computational Intelligence and Multimedia Applications. ICCIMA 2003. IEEE, 2003, pp. 120–125.
[3] M. d. l. N. L. González, “Influencia del ruido gaussiano correlacionado en la sincronización de sistemas caóticos,” Ph.D. dissertation, Universidade
de Santiago de Compostela, 2000.
[4] B. Zhang, J. Zerubia, and J.-C. Olivo-Marin, “Gaussian approximations of fluorescence microscope point-spread function models,” Applied optics,
vol. 46, no. 10, pp. 1819–1829, 2007.
[5] L. Gross, “Abstract wiener spaces,” CORNELL UNIVERSITY ITHACA United States, Tech. Rep., 1967.

También podría gustarte