Mostrando entradas con la etiqueta FFT. Mostrar todas las entradas
Mostrando entradas con la etiqueta FFT. Mostrar todas las entradas

10 junio 2009

Cómo mostrar una imagen transformada con fft2 en GUIDE usando MATLAB7

Este ejemplo es para complementar el ejemplo anterior de “Un ejemplo simple de una interfaz gráfica usando GUIDE en MATLAB para Procesamiento Digital de Imágenes”. En esa ocasión el énfasis que puse fue en mostrar como se crea la interfaz gráfica y como se muestra una imagen en pantalla. Ahora se muestra como agregar el código para mostrar la transformada de Fourier usando la función fft2 que viene incluida en MATLAB.

Si se sigue el ejemplo anterior solamente tendremos que agregar el siguiente código al callback del botón relacionado al procesamiento de la imagen.

% --- Executes on button press in ProcesarImagen.
function ProcesarImagen_Callback(hObject, eventdata, handles)
% hObject handle to ProcesarImagen (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)


guidata(hObject, handles);

% Carga la imagen de la variable global a una local.
mImage = handles.myImage;

% Calcula la transformada de fourier
mImage2 = fft2(double(mImage));
% Acondiciona la imagen para mostrar las magnitudes centradas
s = fftshift(log(abs(mImage2)));
limites = [(min(s(:))) (max(s(:)))];
set(handles.axes2, 'CLim', limites);
image( s, 'Parent', handles.axes2, 'CDataMapping', 'scaled');
axis(handles.axes2, 'off');
guidata(hObject, handles);

No tengo manera de subir los archivos todavia, y no quiero ponerlos en un servidor externo así que si alguien le interesa alguno de los ejemplos que aqui se ponen, simplemente manden un email y se los mando

18 febrero 2009

La temible Transformada de Fourier Discreta (aka: DFT)

¿Por qué nos puede llegar a importar la transformada de Fourier Discreta?

Voy a empezar hablando de las aplicaciones dadas a la DFT, como lo dice Gonzalez en su libro de procesamiento de imagenes, aparte de ser la piedra angular en los filtros lineales, ofrece una considerable flexibilidad  en el diseño e implementación de soluciones de filtrado para compresión de imágenes, restauración de imágenes, mejora de imágenes, así como otras aplicaciones de igual interés. Ahora si, esto es suficiente para darnos ánimos y conocer la DFT a fondo. (Si, ajá)

Por definición, la DFT se representa de la siguiente manera:

DFT Ecuation 1

Mmmm, y como se puede observar claramente en la ecuación anterior, (jeje, no!, ya en serio) tenemos que:

  • X(k) = Es la transformada de fourier discreta de nuestra señal, es decir su representación en el dominio de la frecuencia.
  • x(n) = Es nuestra señal en el dominio espacial, por ejemplo una señal de audio

Así es que si vemos detenidamente, cada muestra X(k) será la sumatoria de la multiplicación de todos los valores de la señal de entrada por los componentes de frecuencia de la señal. Si, es esa e elevada a la dos pi sobre N multiplicada por menos i multiplicada por k multiplicada por n.

Sin meternos en tanto rollo de medición de eficiencia de algoritmos podemos ver (tal vez no tan claramente) que mientras más muestras tenga nuestra señal, pues la cantidad de multiplicaciones y sumas se eleva exponencialmente, esto es un problema que se resolvió con la FFT, pero eso es harina de otro costal por ahorita.

Aquí le dejo con esta pequeña explicación de la DFT, pero continuaré con un ejemplo de ésta, codificada en MATLAB en un post futuro.

(Hasta ahorita sigo sin entenderle).

PD: Feliz cumpleaños Tris!!!

This is I

Blog dedicado a escribir sobre Sistemas Embebidos y el Internet de las Cosas o IoT que le llaman.