pkg://kfourier-1.1c.tar.gz:155851/
kfourier-1.1/
kfourier/
help/kfourier_es.html
downloads
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="GENERATOR" CONTENT="Mozilla/4.03 [en] (X11; I; Linux 2.0.29 i586) [Netscape]">
</HEAD>
<BODY>
<CENTER>
<H1>
<B><U><FONT SIZE=+2>TRANSFORMADA DE FOURIER</FONT></U></B></H1></CENTER>
<CENTER><FONT SIZE=+2>Por <B>Antonio Larrosa Jimenez</B></FONT></CENTER>
<CENTER><FONT SIZE=+1>alumno de 2o de Matematicas, para la asignatura de
Libre Configuracion : "Procesamiento de Imagenes"</FONT></CENTER>
<CENTER><FONT SIZE=+1></FONT></CENTER>
<B><FONT SIZE=+2>Indice</FONT></B>
<OL>
<UL>
<LI>
<A HREF="#0. Como instalar el programa y donde conseguirlo">0. Como instalar
el programa y donde conseguirlo</A></LI>
<LI>
<A HREF="#1. Como cargar imagenes">1. Como cargar imagenes</A></LI>
<UL>
<LI>
<A HREF="#1.1 Como grabar una imagen">1.1 Como grabar una imagen</A></LI>
</UL>
<LI>
<A HREF="#2. Hacer la transformada de Fourier de una imagen">2. Hacer la
transformada de Fourier de una imagen</A></LI>
<UL>
<LI>
<A HREF="#2.1. Transformada original">2.1. Transformada original</A></LI>
<LI>
<A HREF="#2.2. Transformada rapida">2.2. Transformada rapida</A></LI>
</UL>
<LI>
<A HREF="#3. Distintos tipos de filtros">3. Distintos tipos de filtros</A></LI>
</UL>
<UL>
<UL>
<LI>
<A HREF="#3.1. Filtros de paso baja">3.1. Filtros de paso baja</A></LI>
<LI>
<A HREF="#3.2. Filtros de paso alta">3.2. Filtros de paso alta</A></LI>
<LI>
<A HREF="#3.3. Filtros de paso de banda">3.3. Filtros de paso de banda</A></LI>
<LI>
<A HREF="#3.4. Filtros de detencion de banda">3.4. Filtros de detencion de banda</A></LI>
<LI>
<A HREF="#3.5. Filtros de interpolacion lineal">3.5. Filtros de Interpolacion lineal</A></LI>
</UL>
<LI>
<A HREF="#4. Opciones de los filtros">4. Opciones de los filtros</A></LI>
<UL>
<LI>
<A HREF="#4.1. Cambio de los valores de paso y de detencion">4.1. Cambio de
los valores de paso y de detencion</A></LI>
<LI>
<A HREF="#4.2. Activacion/Desactivacion de cuadrantes">4.2. Activacion/Desactivacion
de cuadrantes</A></LI>
<LI>
<A HREF="#4.3. Cambio del centro de los filtros">4.3. Cambio del centro
de los filtros</A></LI>
</UL>
<LI>
<A HREF="#5. Opciones de color">5. Opciones de color</A></LI>
<UL>
<LI>
<A HREF="#5.1. RGB">5.1 RGB</A></LI>
<LI>
<A HREF="#5.2. HSV">5.2 HSV</A></LI>
</UL>
<LI>
<A HREF="#6. Dos ejemplos">6. Dos ejemplos</A></LI>
</UL>
</OL>
<A NAME="0. Como instalar el programa y donde conseguirlo"></A><B><FONT SIZE=+2>0.
Como instalar el programa y donde conseguirlo</FONT></B>
<P>Para instalar el programa, necesita haber instalado antes el entorno
KDE, que puede conseguir de <A HREF="http://www.kde.org">www.kde.org</A>
.
<BR>Una vez instaladas las librerias de KDE, basta con descomprimir el fichero tfourier-1.0.tgz y ejecutar (entrando en el directorio creado) :
<BR>"configure", "make" y "make install" (este ultimo, como root)
<BR>Una vez hecho esto, ya se puede ejecutar tfourier !
<BR>Tfourier estara en internet a finales de Febrero, en principio en <A HREF="http://www.arrakis.es/~rlarrosa/index.html"> mi
pagina personal</A> y poco despues en cualquier mirror de <A HREF="ftp://ftp.kde.org">ftp.kde.org</A>
<P><A NAME="1. Como cargar imagenes"></A><B><FONT SIZE=+2>1. Como cargar
imagenes</FONT></B>
<P>Para cargar una imagen puede usar 3 metodos:
<BR> 1. Pulsar 'Abrir ...' en el menu 'Archivo'
<BR> 2. Pulsar en el boton de 'Abrir archivo' de la barra
de tareas (<IMG SRC="fileopen.xpm" ALIGN=TEXTTOP>)
<BR> 3. Coger un fichero de una ventana del gestor de
ficheros y arrastrarlo con el raton hasta que este
<BR> sobre la ventana del programa. (haciendo Drag&Drop)
<P>Se pueden abrir imagenes en formato xpm (estandard de XWindows/Linux)
, gif (estandard de Internet, propietario de Compuserve) y bmp (estandard
de Windows).
<BR>Al cargar una imagen, esta debe aparecer en la ventana , en una columna
con 4 imagenes, la primera (superior ) es la imagen cargada, y las otras
tres son la descomposicion de esa imagen en <A HREF="#5.1. RGB">RGB</A>
o <A HREF="#5.2. HSV">HSV</A> segun la <A HREF="#5. Opciones de color">opcion
de color</A> elegida
<BR>
<P><A NAME="1.1 Como grabar una imagen"></A><B><FONT SIZE=+2>1.1 Como grabar
una imagen</FONT></B>
<P>Para grabar una imagen en disco, basta con elegir la opcion "Guardar
..." del menu "Archivo", y una vez hecho esto, pulsar
<BR>con el boton izquierdo del raton sobre la imagen que se quiera guardar,
entonces aparecera un dialogo donde escribir el nombre
<BR>del archivo y (si se desea), cambiar el directorio actual.
<P>Si antes de pulsar sobre una imagen se decide que no se desea grabarla
en disco, se puede volver a seleccionar "Guardar ..." para volver al estado
inicial.
<P>Para guardar una imagen se puede utilizar el formato xpm (si se elige
"Guardar (XPM) ...") o el formato bmp (si se elige "Guardar (BMP)
..."). No es posible guardar una imagen en formato gif pues Compuserve
tiene la patente de este formato y solo esta en el dominio publico la posibilidad
de leerlo, para grabarlo hace falta una licencia.
<P><A NAME="2. Hacer la transformada de Fourier de una imagen"></A><B><FONT SIZE=+2>2.
Hacer la transformada de Fourier de una imagen</FONT></B>
<P>Al hacer la transformada de Fourier, el resultado debe aparecer en una
segunda columna justo al lado de la primera. La transformada de Fourier
se hace a los tres planos descompuestos de la imagen original, y despues
estos se unen para formar la transformada de Fourier general (superior
)
<P>Despues de realizar la transformada de Fourier, se puede realizar la
transformada de Fourier inversa, que, genera imagenes nuevas que aparecen
en una tercera columna, en la que vuelven a aparecer una imagen general
y sus tres descomposiciones ( o quizas seria mas adecuado decir que aparecen
tres imagenes que se unen para formar una imagen general )
<P>Hay dos metodos para hacer la transformada de Fourier :
<P><A NAME="2.1. Transformada original"></A><B><FONT SIZE=+2>2.1. Transformada
original</FONT></B>
<P>Este metodo usa la funcion que dimos en clase para calcular la transformada.
Debido a que hay muchas sumas, senos y cosenos a realizar en cada punto,
este metodo puede resultar sumamente lento.
<BR>Se puede elegir la opcion del menu "Transformada | T.F. Directa" o
la barra de tareas, en el boton <IMG SRC="forward.xpm" ALIGN=TEXTTOP>
<P>Para realizar la inversa, solo hay que elegir "Transformada | T.F. Inversa"
o en la barra de tareas, el boton <IMG SRC="back.xpm" ALIGN=TEXTTOP>
<BR>
<P><A NAME="2.2. Transformada rapida"></A><B><FONT SIZE=+2>2.2. Transformada
rapida</FONT></B>
<P>El metodo que mas se usa es el de la transformada rapida de Fourier
( o FFT ).
<BR>Es millones de veces mas rapido que el original, y de igual precision.
<BR>Encontre el algoritmo de la FFT unidimensional en la revista
Dr Dobbs Journal de Febrero de 1995 y despues lo cambie un poco para que
usara el tipo de datos que me convenia por el programa y para aumentar
un poco la claridad y la velocidad del codigo fuente. Ademas, el algoritmo
es unidimensional, con lo que tuve que dividir una transformada de Fourier
bidimensional en varias unidimensionales en distintas direcciones.
<BR>Se puede elegir la opcion del menu "Transformada | FFT Directa" o en
la barra de tareas, el boton <IMG SRC="finish.xpm" ALIGN=TEXTTOP> asi como la tecla "Espacio" para hacer la FFT de la imagen original
<BR>Para la inversa, estan el menu "Transformada | FFT Inversa", el boton <IMG SRC="start.xpm" ALIGN=TEXTTOP> de la barra de tareas o la tecla de borrado atras (backspace)
<BR>Para realizar una FFT, hace falta que las dimensiones de la imagen
sean potencias de 2 (32, 64, 128 , etc.) por lo que si se carga una imagen
con otras dimensiones (por ejemplo 55x81) en vez de negarse a hacer una
FFT como otros programas, tfourier primero expande la imagen (en el ejemplo,
hasta 64x128), haciendo negro todo el marco creado y despues realiza la
FFT. Para hacer la inversa, la imagen que se muestra en pantalla, se recorta,
para que no muestre el marco negro.
<P><A NAME="3. Distintos tipos de filtros"></A><B><FONT SIZE=+2>3. Distintos
tipos de filtros</FONT></B>
<P>El filtro que se quiere usar se debe elegir del menu Filtros
<BR>Una vez elegido, se puede usar pulsando el boton izquierdo del raton
sobre una imagen de la columna central (transformadas de Fourier). Algunos
filtros requieren dos parametros, para lo que se pulsa el boton derecho.
<BR>Los filtros se pueden pasar a los tres canales de la descomposicion
o solo a uno de ellos, segun se pulse en la imagen superior
<BR>o en las tres inferiores.
<P><A NAME="3.1. Filtros de paso baja"></A><B><FONT SIZE=+2>3.1. Filtros
de paso baja</FONT></B>
<P>Los filtros de paso baja eliminan las altas frecuencias de la imagen,
resultando una imagen mas difuminada.
<BR>Pulsando el boton izquierdo sobre un punto de la imagen se especifica
el radio limite a partir del cual, se eliminan las frecuencias.
<BR>Ejemplo:
<BR><IMG SRC="pasobaja.xpm" >
<P><A NAME="3.2. Filtros de paso alta"></A><B><FONT SIZE=+2>3.2. Filtros
de paso alta</FONT></B>
<P>Los filtros de paso alta eliminan las bajas frecuencias, lo que da una
imagen en la que se aumenta el contraste en los bordes.
<BR>El modo de uso es igual que el del filtro de paso baja
<BR>Ejemplo:
<BR> <IMG SRC="pasoalta.xpm" >
<P>Aqui solo le he quitado un pequeño rango de bajas frecuencias,
con lo que en las baldosas se nota que ya no son de color
<BR>constante como antes, sino que en el centro han cambiado de color.
<P><A NAME="3.3. Filtros de paso de banda"></A><B><FONT SIZE=+2>3.3. Filtros
de paso de banda</FONT></B>
<P>Los filtros de paso de banda, eliminan las frecuencias mas bajas que
una dada y las mas altas que otra frecuencia dada.
<BR>Para ello, necesita definir una corona circular, esto se hace pulsando
con el boton derecho del raton en el radio mayor, y con el boton izquierdo
en el menor.
<BR>Ejemplo:
<BR> <IMG SRC="pasobanda.xpm" >
<P><A NAME="3.4. Filtros de detencion de banda"></A><B><FONT SIZE=+2>3.4. Filtros
de detencion de banda</FONT></B>
<P>Los filtros de detencion de banda (band-stop) eliminan una franja de frecuencias.
El funcionamiento es igual que el de los filtros de paso de banda.
<BR>Ejemplo:
<BR><IMG SRC="parobanda.xpm" >
<P><A NAME="3.5. Filtros de interpolacion lineal"></A><B><FONT SIZE=+2>3.5. Filtros
de interpolacion lineal</FONT></B>
<P>Este filtro es parecido al de Butterworth, pero mientras que un filtro
de Butterworth usa una funcion del estilo :
<BR><IMG SRC="grafbutter.xpm" >
<BR>La interpolacion lineal usa una asi :
<BR><IMG SRC="graflin.xpm" >
<BR>Esto lo he hecho asi porque me parece mas util si se pudiese definir
el rango de frecuencias donde actua propiamente el
<BR>filtro, y para esto necesita dos parametros (por lo que se usa
como el filtro de paso de banda o detencion de banda)
<P>Ejemplo:
<BR><IMG SRC="interplin.xpm" >
<BR>
<P><A NAME="4. Opciones de los filtros"></A><B><FONT SIZE=+2>4. Opciones
de los filtros</FONT></B>
<P>Los filtros son altamente configurables, para lo que tienen varias opciones
que cambian el funcionamiento de cualquiera de los anteriormente descritos.
<P><A NAME="4.1. Cambio de los valores de paso y de detencion"></A><B><FONT SIZE=+2>4.1.
Cambio de los valores de paso y de detencion</FONT></B>
<P>Cuando un valor de la transformada puede pasar o no, en realidad, se
multiplica por un valor de paso o por uno de detencion.
<BR>Por defecto el valor de paso es 1 (dejar el valor como esta) y el valor
de detencion es 0 (al multiplicar por 0 se anula el valor)
<BR>Pero estos son configurables, asi por ejemplo es posible que un filtro
de paso baja, multiplique las frecuencias bajas por 2 y
<BR>haga 0 las altas, o las atenue multiplicandolas por 0.3
<BR>Tambien es posible que un filtro de paso alta, en realidad sea de paso
baja, simplemente haciendo 0 el valor de paso y 1 el de detencion; esto no es
muy util, pero es posible hacerlo.
<BR>Ejemplo:
<BR>Haciendo los valores de paso y de detencion -1 el resultado de cualquier
filtro es :
<BR><IMG SRC="negativo.xpm" >
<P>Esto es logico, pues en la transformada de Fourier es lineal y por tanto, se puede sacar el signo negativo introducido como factor comun y lo que queda es el negativo de la imagen original
<P><A NAME="4.2. Activacion/Desactivacion de cuadrantes"></A><B><FONT SIZE=+2>4.2.
Activacion/Desactivacion de cuadrantes</FONT></B>
<P>Para comprender mejor el funcionamiento de la transformada de Fourier,
es posible ver que pasa si los filtros, en vez de actuar sobre toda la
transformada, lo hacen sobre uno o varios de los cuadrantes de la images.
<BR>En el menu Filtros, submenu Cuadrantes, se pueden activar y desactivar
los 4 cuadrantes.
<BR>Este son los resultados de eliminar 3 cuadrantes y dejar solo ...
<BR>...el primer cuadrante , el segundo :
<BR><IMG SRC="cuad1.xpm" ><IMG SRC="cuad2.xpm" >
<P>... el tercer cuadrante, y el cuarto:
<BR><IMG SRC="cuad3.xpm" ><IMG SRC="cuad4.xpm" >
<P><A NAME="4.3. Cambio del centro de los filtros"></A><B><FONT SIZE=+2>4.3.
Cambio del centro de los filtros</FONT></B>
<P>Por defecto, el centro de los filtros coincide con el centro de la imagen
(valor nulo de la frecuencia), pero, ¿Que pasa si en una transformada
como la siguiente se quiere eliminar una de esas "estrellas" ?
<BR><IMG SRC="joelmag.xpm" >
<P>Esto es posible cambiando el centro de los filtros, si despues se elige
un filtro de paso alta, se podra eliminar ese punto de
<BR>acumulacion de las frecuencias.
<BR>Una vez elegida la opcion, el centro de los filtros se fijara en el
punto donde se pulse el boton izquierdo del raton. Si una vez elegida la
opcion se decide no cambiar el centro, se puede desactivar, eligiendo de
nuevo "Cambiar Centro" del menu "Filtros"
<P><A NAME="5. Opciones de color"></A><B><FONT SIZE=+2>5. Opciones de color</FONT></B>
<P>En el menu Opciones, se puede cambiar el metodo de descomposicion de
las imagenes :
<P><A NAME="5.1. RGB"></A><B><FONT SIZE=+2>5.1. RGB</FONT></B>
<P>Si se elige RGB, las imagenes se descompondran en sus planos Rojo (Red),
Verde (Green), y Azul (Blue) :
<BR><IMG SRC="r.xpm" ><IMG SRC="g.xpm" ><IMG SRC="b.xpm" >
<BR>
<BR>
<P><A NAME="5.2. HSV"></A><B><FONT SIZE=+2>5.2. HSV</FONT></B>
<BR>
<BR>Si se elige HSV, las imagenes se descompondran en planos de Tonalidad
(Hue) , Saturacion (Saturation) y Valor (Value)
<BR><IMG SRC="h.xpm" ><IMG SRC="s.xpm" ><IMG SRC="v.xpm" >
<P><A NAME="6. Dos ejemplos"></A><B><FONT SIZE=+2>6. Dos ejemplos</FONT></B>
<P>Para terminar voy a poner dos ejemplos:
<BR><A HREF="#4.3. Cambio del centro de los filtros">Poniendo el centro</A>
de los filtros en medio del segundo cuadrante y pasando un <A HREF="#3.5. Filtros de interpolacion lineal">filtro
lineal</A> cada vez mas cerrado , queda la siguiente secuencia de transformadas
de Fourier e imagenes :
<P><IMG SRC="bordef1.xpm" ><IMG SRC="bordef2.xpm" ><IMG SRC="bordef3.xpm" ><IMG SRC="bordef4.xpm" >
<BR><IMG SRC="bordet1.xpm" ><IMG SRC="bordet2.xpm" ><IMG SRC="bordet3.xpm" ><IMG SRC="bordet4.xpm" >
<BR>
</P>
<P>
Y un ejemplo de como usar la transformada de Fourier para eliminar ruidos en una imagen, la imagen original y su transformada son :
<P><IMG SRC="moose1_orig.xpm" ><IMG SRC="moose2_fourier.xpm" >
</P>
<P>
Si le pasamos un filtro de detencion de banda, la transformada y la imagen quedan asi :
<P><IMG SRC="moose3_fourier.xpm" ><IMG SRC="moose4_final.xpm" >
</P>
<P>
y en la imagen original ha desaparecido el ruido !
</P>
<P>
He dejado algunas imagenes para probar el programa en el directorio "ejemplos"</P>
</BODY>
</HTML>