ricardo h. arteaga bastidas - … · principalmente es un trabajo exploratorio sobre las...

55
REFLEXIONES SOBRE LA APLICACIÓN DE LA TRANSFORMADA DE FOURIER AL PROCESAMIENTO DIGITAL DE IMÁGENES. RICARDO H. ARTEAGA BASTIDAS FUNDACIÓN UNIVERSITARIA KONRAD LORENZ FACULTAD DE MATEMÁTICAS E INGENIERÍAS PROGRAMA DE MATEMÁTICAS BOGOTÁ D.C. NOVIEMBRE DE 2010

Upload: doanlien

Post on 30-Sep-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

REFLEXIONES SOBRE LA APLICACIÓN DE LA TRANSFORMADA DE FOURIER AL PROCESAMIENTO DIGITAL DE IMÁGENES.

RICARDO H. ARTEAGA BASTIDAS

FUNDACIÓN UNIVERSITARIA KONRAD LORENZ FACULTAD DE MATEMÁTICAS E INGENIERÍAS

PROGRAMA DE MATEMÁTICAS BOGOTÁ D.C.

NOVIEMBRE DE 2010

REFLEXIONES SOBRE LA APLICACIÓN DE LA TRANSFORMADA DE FOURIER AL PROCESAMIENTO DIGITAL DE IMÁGENES.

RICARDO H. ARTEAGA BASTIDAS

TRABAJO DE GRADO PRESENTADO COMO REQUISITO PARCIAL PARA OPTAR POR EL TÍTULO DE MATEMÁTICO

DIRECTOR: Mat. LUIS ENRIQUE ROJAS

FUNDACIÓN UNIVERSITARIA KONRAD LORENZ FACULTAD DE MATEMÁTICAS E INGENIERÍAS

PROGRAMA DE MATEMÁTICAS BOGOTÁ D.C.

NOVIEMBRE DE 2010

RESUMEN

Se hace un desarrollo, partiendo de la Serie de Fourier y pasando por la Integral de Fourier,

Integral de Fourier Compleja, y Transformada de Fourier. De donde se deduce la Serie de Fourier

Compleja hasta llegar a la Transformada Discreta de Fourier y Transformada Rápida. Se describen,

de forma concreta y comprensiva, algunas aplicaciones de la transformada de Fourier en el

procesamiento digital de imágenes.

Contents

Introducción v

Part 1. Fundamentos 1

Chapter 1. Transformada de Fourier 31. Historia 32. Series de Fourier 73. Integral de Fourier 114. Integral de Fourier Compleja 145. Transformada de Fourier 15

Chapter 2. Transformada Discreta de Fourier 171. Señales de Tiempo Discreto 172. Serie de Fourier Compleja 183. La Transformada Discreta de Fourier (DFT) 204. La Transformada Rápida de Fourier (FFT) 215. Componentes de frecuencia de Señales 21

Part 2. Aplicaciones 25

Chapter 3. Aplicaciones y usos de la transformada de Fourier 271. Análisis de Datos 272. Comunicaciones 30

Chapter 4. Procesamiento Digital de Imágenes 331. Introducción 332. Procesamiento en el Dominio de Frecuencia 343. Suavizado 354. Per�lado 365. Compresión de Imágenes 38

Chapter 5. Conclusiones 41

Bibliography 43

Appendix A. Listado de Programas 451. DFT 452. Manchas Solares 453. Señal con Ruido 464. Suavizado 465. Per�lado 46

iii

iv CONTENTS

6. Compresión 477. paddedsize 478. hp�lterg 479. lp�lter 4810. dftuv 4811. Onda Rectangular 48

Introducción

Este trabajo hace parte de los requisitos necesarios para optar por el títulode Matemático en la Fundación Universitaria Konrad Lorenz. Fué dirigido por elprofesor Luis Rojas durante el segundo semestre del 2010.

Principalmente es un trabajo exploratorio sobre las aplicaciones de la trans-formada de Fourier en la ingeniería. En especial sobre el procesamiento digital deimágenes. Inicialmente se hace un recuento del origen histórico, las generalidadesde la serie y transformada de Fourier. Posteriormente se describe el algoritmorápido de la transformada de Fourier (FFT) y se termina con un recuento de lasaplicaciones del FFT al procesamiento digital de imágenes.

La invención de la serie de Fourier fué uno de los grandes avances cientí�cosdel 1800. En el campo aplicado permitió resolver problemas de la física en relaciónal calor, el sonido, las ondas y de la atración de los planetas; estos problemas gen-eralmente se planteaban en términos de ecuaciones diferenciales parciales y en esecontexto la serie de Fourier surgió como una técnica para resolver estas ecuaciones.

A raíz de estos avances, surgieron muchas dudas acerca de los conceptos defunción y series in�nitas lo que llevó a que en el campo del análisis estos conceptosse desarrollaran y formalizaran. Es así como gracias a la investigación de las seriesde Fourier, los matemáticos de la época se vieron forzados e inspirados a desarrollary profundizar en la teoria de las funciones, cálculo de variaciones, expansiones enseries, ecuaciones diferenciales ordinarias, álgebra y geometría diferencial.

Para la creación de grá�cas de funciones y para el procesamiento de imágenesse utlizó Matlab. Matlab es un software para computación técnica que provee her-ramientas para analizar, visualizar y procesar información. Es a la vez lenguaje deprogramación y herramienta interactiva. Esta compuesto por toolboxes o libreríasespecializadas por temas. En particular en este trabajo se utilizó el toolbox deprocesamiento de imagenes.

v

Part 1

Fundamentos

CHAPTER 1

Transformada de Fourier

A continuación se describen los principales desarrolllos que dieron origen alas series de Fourier y se continúa con el desarrollo de la teoria hasta llegar a latransformada de Fourier. Se seguirá esta secuencia lógica de los temas:

1. Historia

1.1. Desarrollos entre 1700-1799. El origen de las series de Fourier sepuede encontrar en las series trigonométricas que se utilizaron para resolver prob-lemas de astronomia en la primera mitad del siglo 18. Principalmente el de inter-polación -dada unas pocas observaciones determinar la posición futura de un astro.Dada la naturaleza periódica de estos fenómenos la utilización de estas series pararepresentar funciones periódicas y continuas fué natural. [1]

Las series trigonométricas tienen la forma:

1

2a0 +

1Xn=1

(an cosnx+ bn sinnx)

Con an y bn constantes. En la primera mitad del siglo, L. Euler1 y J. d �Alam-bert2 lograron obtener las fórmulas de estos coe�cientes para representar una fun-ción f(x), estas fueron:

1Léonard Euler (1707-1783) Nacido en Basilea, Suiza. Conocido como el mas prolí�comatemático de todos los tiempos. Hizo aportes importantes a las áreas del análisis.

2Jean le Rond d �Alambert (1717-1783) Nacido en Paris, Francia. hijo ilegítimo, fué abandon-ado en la iglesia de St Jean Le Rond -De ahí viene parte de su nombre. Fué ayudado por su padreunos años después. Conocido por ser uno de los pioneros en el uso de las ecuaciones diferencialesparciales para resolver problemas de la física. Participó en la edición de la Encyclopédie.

3

4 1. TRANSFORMADA DE FOURIER

an =1

2�Z0

f(x) cosnxdx

bn =1

2�Z0

f(x) sinnxdx

Sin embargo no establecieron las condiciones bajo las cuales la serie converge a f(x)y no aceptaron su utilización fuera del ámbito de la astronomía.

En 1750 ambos publican trabajos notables acerca de la solución de la ecuaciónde la cuerda vibrante; En ellos, ambos encuentran que la cuerda vibrante puedesuperponer varios modos simultaneamente (armónicas) . Es decir múltiplos enterosde una frecuencia fundamental.[1]

Posteriormente, en 1755, D. Bernoulli3, como resultado de su investigaciónacerca del problema de las cuerdas vibrantes llega a una gran conclusión: Quetodas las posibles curvas iniciales (antes de poner a vibrar la cuerda) se puedenrepresentar como:

f(x) =1Xn=1

an sinn�x

l

Donde l es la longitud de la cuerda. Y que después de estar vibrando la cuerda,esta se puede representar para un tiempo t y una distancia x por:[1]

y(t; x) =1Xn=1

an sinn�x

lcos

n�ct

l

Como se puede observar aqui, es notable el parecido con la serie de Fourier.Euler y d �Alambert no aceptaron los argumentos de Bernoulli, puesto que no

creian que una función arbitraria se pudiera representar por una función impar yperiódica (seno), re�riendose a la función inicial.

Bernoulli no se retractó y declaró en su favor que los coe�cientes an eran in-�nitos y que por lo tanto podría ajustarlos para representar cualquier curva. Estacontroversia duró mas de 60 años hasta que J. Fourier4 en 1811 publicó sus trabajosal respecto y la teoria fué ganando aceptación.[1]

1.2. Desarrollos a partir de 1800. Los trabajos iniciales de Fourier fueroncriticados por su falta de rigor. Por lo tanto Fourier prosiguió perfeccionando susteorías hasta que en 1822 publicó su famoso trabajo: "Théorie analytique de lachaleur". En el Fourier se propone resolver la ecuación del calor en una dimensión:

@2T

@x2= k2

@T

@t

3Daniel Bernoulli (1700-1782) Nacido en Basilea, Suiza. Trabajó en las áreas del: cálculo,ecuaciones diferenciales, probabilidad, hidrodinámica y la teoría de las cuerdas vibrantes. Gano10 veces el premio de la academia francesa.

4Joseph Fourier (1768-1830) Nacido en Auxterre, Francia. Hijo de un sastre. Queda huérfanoa los 10 años. Notable por sus trabajos en matemáticas y física, en especial sobre la conduccióndel calor y las series que llevan su nombre. También se desempeño en cargos públicos y comoegiptólogo.

1. HISTORIA 5

Donde la constante k depende del material del cuerpo. Esta ecuación la ob-tuvo por medio de la experimentación física y corresponde a la distribución de latemperatura (T ), por ejemplo en una varilla de longitud �:

Conducción del calor en una varilla

Con condiciones de frontera:

T (0; t) = 0

T (�; t) = 0

Para t > 0 y la condición inicial:

T (x; 0) = f(x)

Para 0 < x < �:Fourier resuelve la ecuación por el método de separación de variables y ob-

tiene las mismas fórmulas para los coe�cientes que anteriormente había encontradoEuler.[1] Sin embargo Fourier dió un paso más y aseveró que su solución -aunquemuy parecida- si funcionaba con cualquier función, a diferencia de lo expuesto porBernoulli. Y que la función representada por la serie, era igual a la función originalen un intervalo (a; b) y diferente fuera de este. [2] Esta última precisión hacía menosfuertes los argumentos en contra sobre si era posible representar cualquier funcióncon una serie trigonométrica.

Hay que recordar que para esa época una función solo tenía sentido si se repre-sentaba por una sola expresión, por ejemplo: f(x) = x2. Esto implica que existiríangrá�cas que no se podrían expresar como funciones. Un ejemplo de tales grá�cases la siguiente:

6 1. TRANSFORMADA DE FOURIER

­10 ­8 ­6 ­4 ­2 0 2 4 6­10

­5

0

5

10

15

20

25

30

35

x

Una gráfica que no es función en 1700

Obtenida de la unión de la grá�ca de de f(x) = x para x < 1 y f(x) = x2

para x > 1. Como esta grá�ca no se puede expresar como una sola fórmula no seconsideraba como función.

En el caso de Fourier, su seríe si representaría cualquier grá�ca y a raiz de estose empezó el camino para que se perfeccionara la de�nición de función de tal formaque las grá�cas arbitrarias y las funciones fueran una misma entidad.[1, 2]

Fourier también aplicó su teoría de conducción de calor para el caso de unavarilla de longitud in�nita, donde los límites de la integral son in�nitos:

bf(w) = 1p2�

1Z�1

f(x)e�iwxdx

bf(w) es lo que conocemos actualmente como la transformada de Fourier. Tam-bién es de resaltar, que puesto que la longitud de la varilla es in�nita, f no requiereser periódica.

Finalmente, puesto que Fourier no demostró con rigurosidad matemática susa�rmaciones, fué P. Dirichlet5 quien realizó esta tarea. Esto tarea lo obligó primeroa de�nir exactamente que era una función. De�nición que es la que actualmentese usa. También estableció uno de los primeros teoremas acerca de la convergenciade las series. El tema de la convergencia de las series de Fourier ocuparía a losmatemáticos en los siguientes 100 años y en este proceso sentaría las bases delanálisis.[2]

5Peter Gustav Lejeune Dirichlet (1805-1859) Nacido en Düren, Alemania. Fué el sucesor deGauss en la universidad de Göttingen en 1855. Conocido por sus trabajos en teoría de los números,mecánica y la fundamentación de la teoría de las series de Fourier. Su de�nición de función es laque actualmente se utiliza.

2. SERIES DE FOURIER 7

2. Series de Fourier

Definición 1. Sea f una función Riemann integrable en [�L;L], la serie:

1

2a0 +

1Xn=1

han cos(

n�x

L) + bn sin(

n�x

L)i

Se denominará la serie de Fourier de f en [�L;L], con a0, an, bn coe�cientesde Fourier en [�L;L].

2.1. Obtención de los Coe�cientes de Fourier. Para obtener los coe�-cientes de Fourier se utiliza el siguiente lema[5]:

Lemma 1. Sean m;n 2 Z+, entonces:(1)

LR�Lcos(

n�x

L) sin(

m�x

L)dx = 0

(2) Si n 6= m, entonces:LR�Lcos(

n�x

L) cos(

m�x

L)dx =

LR�Lsin(

n�x

L) sin(

m�x

L)dx = 0

(3) Si n 6= 0, entonces:LR�Lcos2(

n�x

L)dx =

LR�Lsin2(

n�x

L)dx = L

Así, sea f(x) de�nida en �L � x � L, suponiendo queLR�Lf(x)dx existe. Se

desean elegir números a0; a1; a2; :::; b1; b2; b3; ::: tales que[5]:

(2.1) f(x) =1

2a0 +

1Xn=1

han cos(

n�x

L) + bn sin(

n�x

L)i

Entonces integrando 2.1 obtenemos:

LR�Lf(x)dx =

1

2a0

LR�Ldx+

1Xn=1

"an

LR�Lcos(

n�x

L)dx+ bn

LR�Lsin(

n�x

L)dx

#Así,

LR�Lf(x)dx =

1

2a0x

����L�L

=1

2a0L+

1

2a0L = La0

a0 =1

L

LR�Lf(x)dx

Para hallar ak, con k > 0, se multipica (2.1) por cos(k�xL ) y se integra cadatérmino para obtener:

LR�Lf(x) cos(

k�x

L)dx =

1

2a0

LR�Lcos(

k�x

L)dx+

1Xn=1

26664an

LR�Lcos(n�xL ) cos(k�xL )dx

+bnLR�Lsin(n�xL ) cos(k�xL )dx

37775

8 1. TRANSFORMADA DE FOURIER

Usando el lema anterior, las integrales a la derecha son cero, excepto: cuandon = k donde la integral

R L�L cos(

n�xL ) cos(k�xL )dx vale L. Entonces:

LR�Lf(x) cos(

k�x

L)dx = akL

ak =1

L

LR�Lf(x) cos(

k�x

L)dx

Para hallar bk, con k > 0, se multipica (2.1) por sin(k�xL ) y se integra cadatérmino para obtener:

LR�Lf(x) sin(

k�x

L)dx =

1

2a0

LR�Lsin(

k�x

L)dx+

1Xn=1

26664an

LR�Lcos(n�xL ) sin(k�xL )dx

+bnLR�Lsin(n�xL ) sin(k�xL )dx

37775Igual que el caso anterior, se utiliza el lema y las integrales a la derecha son cero,

excepto: cuando n = k donde la integralR L�L sin(

n�xL ) sin(k�xL )dx vale L. Entonces:

LR�Lf(x) sin(

k�x

L)dx = bkL

bk =1

L

LR�Lf(x) sin(

k�x

L)dx

Definición 2. Sea f una función Riemann integrable en [�L;L], los números:

a0 =1

L

LZ�L

f(x)dx

an =1

L

LZ�L

f(x) cos(n�x

L)dx con n = 1; 2; 3; :::

bn =1

L

LZ�L

f(x) sin(n�x

L)dx con n = 1; 2; 3; :::

Se denominarán los coe�cientes de Fourier de f en [�L;L].

Teorema 1. Convergencia de las series de Fourier. Sea f(x) una funciónperiódica con periodo 2� y continua por partes en el intervalo [��; �]. Adicional,se asume que f(x) tiene derivadas por la izquierda y la derecha en cada punto deese intervalo. Entonces la serie de Fourier de f(x) converge. Su suma es f(x),excepto en los puntos x0 donde f(x) es discontinua. Allí la suma de la serie es elpromedio de los límites izquierdo y derecho de f(x) en x0.

Proof. Integrando por partes tenemos:

an =1

�Z��

f(x) cosnxdx =f(x) sinnx

n�

������� 1

n�

�Z��

f 0(x) sinnxdx

2. SERIES DE FOURIER 9

El primer término es cero, volviendo a integrar por partes:

an =f 0(x) cosnx

n2�

������� 1

n2�

�Z��

f 00(x) cosnxdx

El primer término es cero debido a la periodicidad y continuidad de f 0(x). Dadoque f 00(x) es continua en el intervalo de integración se tiene:

jf 00(x)j �MPara una constante M apropiada. Además, jcosnxj � 1. De esto se sigue que:

janj =1

n2�

�������Z

��

f 00(x) cosnxdx

������ < 1

n2�

�Z��

Mdx =2M

n2

Similarmente jbnj < 2M=n2 para todo n. De aqui que el valor absoluto de cadatérmino de la serie de Fourier de f(x) es como máximo igual al correspondientetérmino de la serie:

ja0j+ 2M(1 + 1 +1

22+1

22+1

32+1

32+ :::)

La cual es convergente. Por lo tanto la serie de Fourier es convergente.[8] �

Ejemplo 1. Si se utilizan las series de Fourier para representar una función,se obtiene una grá�ca que se va pareciendo cada vez mas a la función original amedida que se agregan más términos a la serie. Un ejemplo clásico es el de lafunción onda rectangular con periodo 2�:[8]

f(x) =

��k si �� < x < 0k si 0 < x < �

Cuya grá�ca es:

­2pi ­pi 0 pi 2pi

­k

0

k

Función Onda Rectangular

10 1. TRANSFORMADA DE FOURIER

Puesto que la función es impar, a0 = 0; y an = 0. Calculando bn y la serie deFourier obtenemos:

bn =1

L

LZ�L

f(x) sin(n�x

L)dx

bn =1

24 0Z��

� k sin(nx)dx+�Z0

k sin(nx)dx

35bn =

1

�k

n��k(�1)nn

��+1

�k

n��k(�1)nn

��bn =

2k

�n(1� (�1)n)

f(x) =

1Xn=1

bn sin(nx)

Procedemos a calcular algunas sumas parciales:

f1(x) =4k

�sin(x)

f2(x) =4k

�sin(x) +

1

3sin(3x)

�f3(x) =

4k

�sin(x) +

1

3sin(3x) +

1

5sin(5x)

�Al gra�car f3 sobre la función original vemos que la serie parcial empieza a

converger sobre f::

­2pi ­pi 0 pi 2pi

­k

0

Función f3

3. INTEGRAL DE FOURIER 11

3. Integral de Fourier

La integral de Fourier surgió de la necesidad de tratar funciones no periódicasy que se extienden sobre todo el eje x. Si se supone que f esta de�nida para toda tcon periodo T entonces se hace tender T al in�nito y se busca una función fT conla propiedad:

limT!1

fT (t) = f(t)

En [�T=2; T=2], fT puede ser representada por una serie de Fourier haciendoT !1, entonces se obtiene:

fT (t) = a0 +1Xn=1

[an cos(nw0t) + bn sin(nw0t)]

Donde w0 = 2�=T . Los coe�cientes de Fourier son:

a0 =1

T

T=2Z�T=2

fT (�)d�

an =2

T

T=2Z�T=2

fT (�) cos(nw0�)d� con n = 1; 2; 3; :::

bn =2

T

T=2Z�T=2

f(x) sin(nw0�)d� con n = 1; 2; 3; :::

Sea

wn = nw0 =2n�

T2

T=

nw0n�

=w0�

�wn = wn+1 � wn =2�

T2

T=

�wn�

Entonces

an =w0�

T=2Z�T=2

fT (�) cos(wn�)d�

bn =w0�

T=2Z�T=2

f(x) sin(wn�)d�

12 1. TRANSFORMADA DE FOURIER

Así:

fT (t) =1

T

T=2Z�T=2

fT (�)d� +1

1Xn=1

2666666664

0B@ T=2Z�T=2

fT (�) cos(wn�)d�

1CA cos(wnt)+

0B@ T=2Z�T=2

fT (�) sin(wn�)d�

1CA sin(wnt)

3777777775�wn

Ahora si:

T ! 1fT (t) ! f(t)

Además:

T=2Z�T=2

fT (�)d� !T=2Z

�T=2

f(�)d�

SuponemosR1�1 jf(�)j d� converge, esto implica la convergencia de las integrales

de los coe�cientes conforme T !1. Así si T !1 se tiene �wn ! 0 y a0 = 0.La última integral sugiere una suma de Riemann para una integral impropia y

conforme �wn ! 0 se obtiene:

1

1Xn=1

2666666664

0B@ T=2Z�T=2

fT (�) cos(wn�)d�

1CA cos(wnt)+

0B@ T=2Z�T=2

fT (�) sin(wn�)d�

1CA sin(wnt)

3777777775�wn

=1

1Z0

240@ 1Z�1

f(�) cos(w�)d�

1A cos(wt) +0@ 1Z�1

f(�) sin(w�)d�

1A sin(wt)35 dw

Así la serie de Fourier para fT en [�T=2; T=2] se aproxima a una representaciónintegral de f en toda la recta real conforme T !1. Entonces se llega a la siguientede�nición.

Definición 3. Sea f(x) continua a trozos en cada intervalo �nito y con derivadaa la derecha y a la izquierda en cada punto y absolutamente integrable en todo eleje x, se llamará a la integral[8]:

f(x) =

1Z0

[A(w) coswx+B(w) sinwx]dw

3. INTEGRAL DE FOURIER 13

La integral de Fourier. Con:

A(w) =1

1Z�1

f(v) coswvdv

B(w) =1

1Z�1

f(v) sinwvdv

Ejemplo 2. Dada la función:

f(x) =

�1 si jxj < 10 si jxj > 1

­4 ­3 ­2 ­1 0 1 2 3 4­2

­1.5

­1

­0.5

0

0.5

1

1.5

2

Función de un solo pulsoPuesto que la función no es periódica y se extiende en todo el eje x real se

utiliza la integral de Fourier para representarla:[8]

A(w) =1

1Z�1

f(v) coswvdv =1

1Z�1

coswvdv

=sinwv

�w

����1�1=2 sinw

�w

B(w) =1

1Z�1

f(v) sinwvdv = 0

f(x) =2

1Z0

coswx sinw

wdw

Al gra�car después de evaluar la integral y cambiando el límite superior dein�nito a 10, logramos una aproximación de la función:

14 1. TRANSFORMADA DE FOURIER

­6 ­4 ­2 0 2 4 6­0.2

0

0.2

0.4

0.6

0.8

1

1.2

x

Aproximación de f(x)

4. Integral de Fourier Compleja

La integral de Fourier se puede reescribir así:

1Z0

[A(w) coswx+B(w) sinwx]dw =1

1Z0

26666664

0@ 1Z�1

f(�) cos(w�)d�

1A cos(wx)+

0@ 1Z�1

f(�) sin(w�)d�

1A sin(wx)

37777775 dw

=1

1Z0

1Z�1

f(�) cos(w(� � x))d�dw

Se supone f suave a trozos en [�L;L] y queR1�1 jf(x)j dx converge, entonces

8x 2 R ,

1

2[f(x+) + f(x�)] = 1

1Z0

1Z�1

f(�) cos(w(� � x))d�dw

Reemplazando el coseno por su forma exponencial compleja obtenenos:

=1

1Z0

1Z�1

f(�)1

2

heiw(��x) + e�iw(��x)

id�dw

=1

2�

1Z0

1Z�1

f(�)eiw(��x)d�dw +1

2�

1Z0

1Z�1

f(�)e�iw(��x)d�dw

5. TRANSFORMADA DE FOURIER 15

Se realiza el cambio de variable w = �w en la primera integral

=1

2�

0Z�1

1Z�1

f(�)e�iw(��x)d�dw +1

2�

1Z0

1Z�1

f(�)e�iw(��x)d�dw

=1

2�

1Z�1

1Z�1

f(�)e�iw(��x)d�dw

=1

2�

1Z�1

1Z�1

f(�)e�iw�:eiwxd�dw

Si

c(w) =

1Z�1

f(t)e�iwt

c(w) se conoce como el coe�ciente complejo de la integral de Fourier. Entoncesse llega a la representación de f con la integral compleja de Fourier:

1

2�

1Z�1

c(w)eiwxdw

5. Transformada de Fourier

La transformada de Fourier se obtiene a partir de la integral de Fourier pero ensu versión compleja. Suponiendo que f es suave a trozos y que es absolutamenteintegrable en todo x, la representación de f es:

f(x) =1

2�

1Z�1

C!ei!xd!

Donde

C! =

1Z�1

f(t)e�i!tdt

Aqui C! es el coe�ciente complejo de la integral de Fourier. Este coe�ciente esla transformada de Fourier.[5]

Definición 4. Sea f suave a trozos y absolutamente integrable en todo x, latransformada de Fourier de f se de�ne como la función:[5]

bf(!) = 1Z�1

f(t)e�i!tdt

Puesto que entonces la transformada es el coe�ciente que acompaña al seno oal coseno (eix = cosx+ i sinx) en la integral de Fourier compleja, esta representa laamplitud que tendrá cada suma parcial, es decir la amplitud de cada componentesinusoidal de la señal. De aqui que la transformada de Fourier se utiliza paragenerar el espectro de frecuencias de una señal. Entonces la magnitud del coe�cientecomplejo representa la amplitud y el ángulo la fase de cada componente.

CHAPTER 2

Transformada Discreta de Fourier

En este capitulo se describen los conceptos básicos de señales y se desarrollala teoria para llegar a la transformada discreta de Fourier (DFT). Se sigue estasecuencia de temas:

1. Señales de Tiempo Discreto

En ingeniería se de�ne señal como una función x(t) con valor real de la vari-able independiente tiempo.[4] Como ejemplos de señales tenemos: el voltaje, latemperatura, el sonido, los electrocardiogramas, etc. Estas señales se consideran detiempo continuo dado que la variable t puede tomar cualquier valor real. Así mismotambién existen señales de tiempo discreto donde t solo toma valores enteros.

Las señales de tiempo discreto se notan x[n] . Aqui n solo toma valores enterosy su notación se usa para dar la idea de un índice o arreglo, que es precisamente elmodelo utilizado para representrar este tipo de información. Este tipo de señalescobra importancia dado que generalmente las señales de tiempo continuo terminantransformandose en señales de tiempo discreto al querer estudiarlas o manipularlas(procesarlas).

Por ejemplo, supongamos que estamos interesados en la temperatura de uncuarto (señal de tiempo continuo). Lo que haríamos es medir la temperatura cadahora y de esta forma terminamos discretizando la señal. Este proceso se conocecomo muestreo de la señal (sampling). En este caso obtendríamos una secuenciade reales fxng como los siguientes:

n 1 2 3 :::x[n] 25 26 26:5 :::

Otro concepto importante relacionado con el muestreo es el de "Frecuencia deMuestreo". Este se re�ere a cuantas mediciones hacemos por segundo de la señal

17

18 2. TRANSFORMADA DISCRETA DE FOURIER

original. En el ejemplo tendríamos que la frecuencia de muestreo es 13600Hz: Un

caso interesante relacionado, es la frecuencia de muestreo de los archivos de audioMP3. Se recordará que muchas veces se observa en las propiedades de estos archivosel valor 44100 Hz (44.1 KHz) y que este valor es el que produce la mejor calidad delaudio resultante. Esta frecuencia es el doble de 22050 Hz que es casi la frecuenciamáxima que puede escuchar el ser humano[9]; se utiliza el doble de la frecuenciamáxima como frecuencia de muestreo como consecuencia del teorema de shanon-nyquist que indica que para poder reconstruir la señal se requiere que la frecuenciade muestreo sea el doble de la frecuencia observada.

Debido a la existencia de estas señales de tiempo discreto cobra importancia eldesarrollo del análisis de Fourier para datos discretos. En las siguientes secciones sedesarrollará la teroría necesaria para llegar a la transformada discreta de Fourier.

2. Serie de Fourier Compleja

Se puede reformular la serie de Fourier en términos complejos. Para esto seasume que f es una función de variable real con periodo p y se supone que f esintegrable en [�p=2; p=2]. Reemplazando w0 = 2�=p se tiene que la serie de Fourieres:

1

2a0 +

1Xn=1

[an cos(nw0x) + bn sin(nw0x)]

Expresando el coseno y el seno en su forma exponencial compleja tenemos:

=1

2a0 +

1Xn=1

�an1

2

�einw0x + e�inw0x

�+ bn

1

2i

�einw0x � e�inw0x

��

=1

2a0 +

1Xn=1

�1

2(an � ibn) einw0x +

1

2(an + ibn) e

�inw0x�

Ahora se de�ne

d0 =1

2a0

dn =1

2(an � ibn) ,8n 2 Z+

dn =1

2(an + ibn) ,8n 2 Z+

Reemplazando en la serie obtenemos:

(2.1) d0 +1Xn=1

dneinw0x +

1Xn=1

dne�inw0x

Así:

d0 =1

2a0

=1

p

p=2Z�p=2

f(t)dt para n = 1; 2; :::

2. SERIE DE FOURIER COMPLEJA 19

Ahora obtenemos dn :

dn =1

2(an � ibn)

=1

2

2

p

p=2Z�p=2

f(t) cos(nw0t)dt�i

2

2

p

p=2Z�p=2

f(t) sin(nw0t)dt

=1

p

p=2Z�p=2

f(t) [cos(nw0t)� i sin(nw0t)] dt

=1

p

p=2Z�p=2

f(t)e�inw0tdt

Entonces

dn =1

p

p=2Z�p=2

f(t)e�inw0tdt

=1

p

p=2Z�p=2

f(t)einw0tdt

= d�n

Así reemplazando en 2.1 se tiene:

f(x) = d0 +1Xn=1

dneinw0x +

1Xn=1

dne�inw0x

= d0 +1Xn=1

dneinw0x +

1Xn=1

d�ne�inw0x

= d0 +

1Xn=�1;n 6=0

dneinw0x

f(x) =1X

n=�1dne

inw0x

Así llegamos a la de�nición de la serie de Fourier compleja.[5]

Definición 5. Sea f con periodo fundamental p. Sea w0 = 2�=p. Entonces laserie de Fourier compleja de f es:

1Xn=�1

dneinw0x

donde

dn =1

p

p=2Z�p=2

f(t)e�inw0tdt

20 2. TRANSFORMADA DISCRETA DE FOURIER

para n = 0;�1;�2;�3; ::: Los números dn son los coe�cientes de Fourier com-plejos de f .[5]

3. La Transformada Discreta de Fourier (DFT)

Se requiere calcular los coe�cientes complejos o transformada de Fourier de unasecuencia de números reales (señal discreta). Para esto suponemos f con periodop. Entonces su serie compleja de Fourier es:

1Xn=�1

dneinw0x

Con w0 = 2�=p y coe�cientes complejos:

dn =1

p

p=2Z�p=2

f(t)e�inw0tdt

Aqui se cambian los límites de integración, puesto que la función es periódica,y reemplazamos el valor de w0:

dn =1

p

�+pZ�

f(t)e�2�int=pdt

Entonces � puede ser cualquier real, se escoge 0 y tenemos:

dn =1

p

pZ0

f(t)e�2�int=pdt

para n = 0;�1;�2;�3; ::: Ahora se aproxima dn con una suma de Riemann.Para esto se divide el intervalo [0; p] entre N subintervalos de longitud p=N .

dn �1

p

N�1Xj=0

f(tj)e�2�intj=p p

N

Puesto que tj puede ser un punto en cada subintervalo [jp=N; (j + 1)p=N ] seescoge que sea jp=N y se obtiene:

=1

p

N�1Xj=0

f(tj)e�2�injp

pNp

N

=1

N

N�1Xj=0

f(tj)e�2�inj=N

Asi llegamos a la de�nición de la DFT. Se acostumbra a de�nirla sin el factor1=N .[5]

Definición 6. Sea N un número entero positivo. Sea u = fujgN�1j=0 una secuen-cia de números complejos. Entonces la transformada discreta de u es la secuenciaUk de�nida por:

Uk =N�1Xj=0

uje�2�ijk=N

5. COMPONENTES DE FRECUENCIA DE SEÑALES 21

Para k = 0;�1;�2;�3; :::

4. La Transformada Rápida de Fourier (FFT)

En 1965 J.W. Cooley de IBM y J.W. Tukey de la Universidad de Princetonpublicaron un artículo titulado: �An Algorithm for the Machine Computation of theComplex Fourier Series�donde describían en 5 páginas un algoritmo muy e�cientepara calcular la transformada discreta de Fourier.[5] A partir de ese momento ygracias a la aparición de los primeros computadores, el cálculo de la DFT se volvióun proceso práctico y veloz que podía implementarse en sistemas electrónicos pararesolver problemas reales.

Si se considera la transformada discreta desde un punto de vista algorítmico, sepuede observar que por cada coe�ciente se realiza una sumatoria de una operaciónpor cada dato. Es decir por cada dato se realiza una sumatoria de todos los datos, locual es costoso en términos de operaciones. De este tipo de análisis se ha concluidoque la transformada discreta de Fourier de una secuencia de N datos requiere deN2 operaciones mientras que la FFT requiere de solo N log2(N _). [9]Esta diferenciaes la que hizo que el algoritmo se volviera viable en aplicaciones prácticas.

Para considerar un ejemplo de la diferencia en términos prácticos, se calculóla transformada discreta de Fourier a un archivo de audio de 8.9 segundos en elcomputador del autor. Se utilizaron dos algoritmos: DFT y FFT y se obtuvieronestos resultados:

N TiempoDFT 73113 60 MinFFT 73113 0.1 Seg

Para este experimento se utilizó Matlab, el cual ya trae implementada la trans-formada rápida (comando FFT) y se utlizó un computador con un procesador AMDde 64 bits de 2.1 Ghz con 2 núcleos. Para la implementación de la DFT se utilizóel programa que se encuentra en: [9]. El listado del programa de la DFT se puedever en los anexos.

Gracias a la implementación de la FFT en el software o hardware se puedeutilizar la transformada de Fourier para resolver problemas de estadística, comu-nicaciones, ingeniería, etc. Y en particular para realizar procesamiento digital deimágenes (DIP). Se describen algunas de estas aplicaciones en la parte dos de estetrabajo.

5. Componentes de frecuencia de Señales

Como se estableció en la sección anterior, una señal es una función, en dondeel eje x representa el tiempo; frecuentemente en segundos. Entonces una señal x(t)se puede representar en base a sus componentes de frecuencia así:[4]

x(t) =NXk=1

Ak cos(2�!kt+ �)

DondeAk Es la amplitud!k Es la frecuencia en Hz� Es la fase

22 2. TRANSFORMADA DISCRETA DE FOURIER

La amplitud indica el valor máximo que toma el componente sinusoidal, así sigeneramos una señal como x(t) = 3 cos(t) vemos que los máximos ocurren en 3:

­6 ­4 ­2 0 2 4 6

­3

­2

­1

0

1

2

3

t

3 cos(t)

Amplitud 3

La frecuencia indica cuantos ciclos por segundo da la señal (por unidad en eleje x), por ejemplo si es 0.5 signi�ca que en t = 1 la señal ha cumplido medio cicloy que en t = 2 un ciclo completo. Para visualizarlo podemos modi�car el ejemploanterior cambiando la frecuencia para obtener x(t) = 3 cos(2�0:5t):

­6 ­4 ­2 0 2 4 6

­3

­2

­1

0

1

2

3

t

3 cos(2π0.5t)

5. COMPONENTES DE FRECUENCIA DE SEÑALES 23

Frecuencia 0.5 HzLa fase indica un desplazamiento del ángulo del comienzo de la sinusoide. Vi-

sualmente se observa por que el coseno no inicia en (0; 1) sino donde correspondaen (0; cos(�). En el ejemplo si gra�camos la señal con una fase de �

2 obtenemos estaseñal: x(t) = 3 cos(2�0:5t+ �

2 ):

­6 ­4 ­2 0 2 4 6

­3

­2

­1

0

1

2

3

t

3 cos(2π0.5 t+(π/2))

Fase �2

Así, conociendo las componentes de frecuencia de una señal (amplitud, frecuen-cia, fase), esta se puede generar exactamente.Y sumando varias sinusoides se puederepresentar todo tipo de señales.

Part 2

Aplicaciones

CHAPTER 3

Aplicaciones y usos de la transformada de Fourier

Adicional a la aplicación de las series de Fourier para resolver ecuaciones difer-enciales parciales, existen otras aplicaciones de igual interés e importancia. A con-tinuación describiremos algunas dignas de resaltar.

1. Análisis de Datos

La transformada de Fourier se puede utilizar para extraer la información clavesubyacente en un conjunto de datos. En especial es util en estadística para analizarlas series de tiempo. Las series de tiempo son mediciones realizadas secuencialmenteen el tiempo. Por ejemplo la lluvia que cae cada dia, el número de nacimientos cadadía, etc.

En este contexto el análisis de Fourier se utiliza para detectar ciclos o peri-odicidad en los datos. Por ejemplo que cada 4 meses cae la máxima cantidad delluvia. Es importante tener en cuenta que para que el análisis sea exitoso se debemuestrear una cantidad de datos su�ciente de tal forma que en el conjunto de datosesté presente al menos un ciclo completo.[4]

1.1. Análisis de manchas solares. Las manchas solares son fenómenos tem-porales que ocurren sobre la super�cie del sol (fotósfera) y son visibles desde la tierracomo manchas oscuras que se mueven. Alteraciones magnéticas ocasionan un cam-bio de temperatura en ciertas zonas que al ser observadas se identi�can por ser masoscuras. Desde la edad media se inició el registro del número de manchas por mesy su estudio se convirtió en una necesidad para la vida moderna dado que existeuna relación directa entre el número de manchas solares y la aparición de tormentassolares que afectan las comunicaciones en la tierra.[12]

27

28 3. APLICACIONES Y USOS DE LA TRANSFORMADA DE FOURIER

Manchas solares de Oct 26/2010[10]

Realizando un análisis de Fourier de los datos es posible encontrar cada cuantosaños se presenta un máximo del número de manchas y de esta forma predecirlas épocas de mayores tormentas solares. Con este �n utilizamos Matlab, el cualcomo se comentó anteriormente ya tiene implementado el algoritmo de la FFT yademás nos brinda herramientas para gra�car y analizar información.[11] Entoncesal gra�car el número de manchas promedio por año obtenemos esta imagen:

1700 1750 1800 1850 1900 1950 20000

20

40

60

80

100

120

140

160

180

200Manchas Solares

1. ANÁLISIS DE DATOS 29

Realizando un acercamiento podemos ver el número de manchas por año:

1950 1955 1960 1965 1970 1975 1980 1985 19900

20

40

60

80

100

120

140

160

180

200

Años

No.

Man

chas

Manchas Solares

Puesto que gra�camos el número de manchas por año la frecuencia de muestreoes 1 Hz. Es decir 1 muestra por unidad de tiempo. Lo primero que se hace es calcularla FFT de los datos. Esto se logra con la función FFT en Matlab:

y=fft(manchas);

Después calculamos las amplitudes, es decir la magnitud de los coe�cientescomplejos:

y1=abs(y);

El eje x es la frecuencia y se construye con un intervalo desde Fm=N hastaFm con incrementos de Fm=N . Donde Fm es la frecuencia de muestreo y N es elnúmero de datos.

xf=1/n:1/n:1;

Y �nalmente se genera la grá�ca seleccionando un subconjunto de datos y conel periodo (1=f) en lugar de la frecuencia para facilitar el análisis.

plot(1./xf(10:100),y1(10:100));

30 3. APLICACIONES Y USOS DE LA TRANSFORMADA DE FOURIER

1 3 5 7 9 11 13 15 17 19 21 23 25 27 290

500

1000

1500

2000

2500

3000

3500

4000

4500Espectro Manchas Solares

Años

Entonces se puede observar claramente que el principal ciclo ocurre cada 11años. Si se revisan las anteriores grá�cas se puede veri�car que efectivamente esteciclo se cumple.

2. Comunicaciones

2.1. Extracción de una componente sinusoidal incrustada en ruido.Es muy común en ingeniería, particularmente en aplicaciones de comunicaciones,obtener los datos de un sensor junto con ruido, y requerir aislar la señal originalpara extraer la información importante. Es decir dada una señal eliminar el ruidode esta. Esta tarea se puede realizar muy fácilmente con la transformada discretade Fourier (DFT) puesto que se pueden obtener las frecuencias dominantes y deesta forma �ltrar el ruido que puede estar inmerso en los datos.

El sensor lo que generalmente hace es muestrear la información cada ciertointervalo de tiempo, y por lo tanto terminamos con n mediciones de la señal. Paraeste ejemplo supongamos que la señal original es:

y = 0:2 sin(2�20t) + 0:4 sin(2�30t)

Es decir una señal con dos frecuencias: 20 Hz, y 30 Hz con 0.2 y 0.4 de amplitudrespectivamente. Supongamos que muestreamos la señal con una frecuencia demuestreo de 500 Hz. Si genereramos la señal por dos segundos entonces obtenemos1000 muestras. Entonces el eje x lo generamos así:

t=(0:1/500:2-(1/500));

Y al gra�car obtenemos:

2. COMUNICACIONES 31

0 0.1 0.2 0.3 0.4 0.5­0.8

­0.6

­0.4

­0.2

0

0.2

0.4

0.6Señal Original

Tiempo (s)

Para simular que la señal es transmitida por algún medio, agregamos ruidousando números aleatorios normalmente distribuidos:

y=0.2*sin(2*pi*20*t)+0.4*sin(2*pi*30*t)+randn(1,1000);

Y Generamos la grá�ca:

0 0.05 0.1 0.15 0.2 0.25­3

­2

­1

0

1

2

3Señal Original con Ruido

Tiempo (s)

Como se observa, el ruido distorsiona la señal y ya no es posible determinarsu forma original. Sin embargo con la transformada de Fourier podemos volver aobtener la señal. Se crea el eje x con las frecuencias (Frecuencia de muestreo) y se

32 3. APLICACIONES Y USOS DE LA TRANSFORMADA DE FOURIER

utiliza nuevamente el comando FFT.

f=0:0.5:(500-0.5);

y1=abs(fft(y));

Así, obtenemos el espectro de frecuencia.

0 10 20 30 40 50 60 700

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

0.45Espectro de Amplitud

Frecuencia (Hz)

Y Aqui se puede observar que en la señal original existen 2 frecuencias importantes:20 y 30 Hz con una amplitud de aproximadamente 0.2 y 0.4 y de esta forma se puede�reconstruir�la señal sin ruido.[11]

y=0.2*sin(2*pi*20*t)+0.4*sin(2*pi*30*t);

CHAPTER 4

Procesamiento Digital de Imágenes

El procesamiento digital de imágenes es una actividad que se realiza por mediode un computador y se de�ne como un proceso que recibe como entrada una imageny cuya salida es otra imagen. Existen otras áreas relacionadas que frecuentementese solapan con esta como: �Computer Vision�y Análisis de imágenes. En el caso de�Computer Vision�el énfasis se encuentra en emular la visión humana, incluyendoaprender y realizar acciones basadas en lo que se percibe visualmente. Análisisde imágenes se re�ere al proceso de �entender� una imágen, esto incluye extraeratributos de una imagen y su reconomiento.[13]

Como se explicó anteriormente del procesamiento digital de imágenes (DIP) serealiza por medio de un computador, y esto implica el uso de software para estastareas. Entonces con este �n se utilizará para este capítulo Matlab junto con eltoolbox de procesamiento de imágenes.

1. Introducción

Para representar una imagen en un computador se utilizan matrices. Así cadaelemento de una matriz (determinado por su ubicación en términos de �las y colum-nas) representa la intensidad del color (pixel) en esa posición. Entonces podemosver una imagen como una función f(x; y) de dos variables enteras x,y y cuya imagenes un número real.

Si se tiene una matrix 5x5 como la siguiente:

1 1 1 1 11 0 0 0 11 0 1 0 11 0 0 0 11 1 1 1 1

Al ser visualizada como imagen se obtiene:

33

34 4. PROCESAMIENTO DIGITAL DE IMÁGENES

0

0.5

1

Donde los unos representan el blanco y los ceros el negro. Si se evalúa la funciónen (3; 3) es decir: f(3; 3) se obtiene 1. Estas imágenes se conocen como digitalespuesto que sus valores están discretizados.

En este trabajo se tratan principalmente imágenes monocromáticas, por lotanto el valor f(x; y) representa el nivel de gris para una �la x y columna y. Sinembargo los procedimientos aqui descritos también aplican para imágenes en color,puesto que estas solo se diferencian en que la intensidad de cada color se especi�caen matrices independientes. En el caso del modelo RGB existirán 3 matrices: unapara el color rojo, otra para el verde y otra para el azul; entonces los procesos seaplican a cada una de las matrices independientemente.

2. Procesamiento en el Dominio de Frecuencia

Una imagen determinada por una función f(x; y) como se explicó en la secciónanterior se dice que esta representada en el dominio espacial (puesto que x y yrepresentan posiciones en el espacio). Si se transforma la imagen por medio de latransformada de Fourier entonces la imagen queda representada en el dominio defrecuencia. Una vez representada en el dominio de frecuencia se puede manipularesta representación y esto es lo que se conoce como procesamiento en el dominio defrecuencia.

Estas manipulaciones en el dominio de frecuencia permitirán aplicaciones prác-ticas como: mejoramiento de imágenes, restauración de imágenes, compresión deimágenes y reconocimiento de patrones. Con este �n, se de�ne la TransformadaDiscreta de Fourier en 2D:[13]

Definición 7. Sea f(x; y) una función de variables discretas espaciales conx = 0; 1; 2; 3; :::;M � 1 y y = 0; 1; 2; 3; :::; N � 1 la Transformadad Discreta deFourier 2D, esta dada por:

F (u; v) =M�1Xx=0

N�1Xy=0

f(x; y)e�i2�(ux=M+vy=N)

Para u = 0; 1; 2; 3; :::;M � 1 y v = 0; 1; 2; 3; :::; N � 1.Así mismo de�nimos la Transformada Inversa Discreta de Fourier en 2D:

Definición 8. La transformada inversa discreta de Fourier esta dada por:

f(x; y) =1

MN

M�1Xu=0

N�1Xv=0

F (u; v)ei2�(ux=M+vy=N)

3. SUAVIZADO 35

Para x = 0; 1; 2; 3; :::;M � 1 y y = 0; 1; 2; 3; :::; N � 1.

Así dado F (u; v) es posible obtener de vuelta f(x; y) por intermedio de lainversa de la DFT.[13]

En las dos secciones siguientes se hará uso de la DFT y de su inversa pararealizar procesamiento en el dominio de frecuencia. Básicamente el �ujo de trabajoconsiste en calcular la DFT, modi�car F (x; y) y luego aplicar la inversa de DFTpara volver a obtener f (x; y).

3. Suavizado

La idea básica es aplicar un �ltro pasa-baja al dominio de la frecuencia paraeliminar las frecuencias altas de la imagen. El resultado de la operación es unaimagen suavizada, con bordes menos de�nidos. El proceso se esquematiza así:

La Transformada Discreta de Fourier 2D en Matlab se aplica con la función¤t2 y su inversa con i¤t2.

Ejemplo 3. Se inicia con la imagen de entrada, construida con una matriz256x256:

a=ones(256,256);

a(129:256,:)=0;

De esta forma de la mitad para abajo es negro y la mitad superior blanco:

Se calcula la DFT 2D:F=fft2(a);

Se obtiene la función de �ltro y se aplica:

H=lpfilter(�gaussian�,M,N,sig);

G=H.*F;

36 4. PROCESAMIENTO DIGITAL DE IMÁGENES

Se obtiene la transformada inversa, devolviendo solo reales:

g=real(ifft2(G));

Y se visualiza g, donde se observa que los bordes se han suavizado:

4. Per�lado

Es la operación contraria al suavizado. En esta operación se busca de�nir losbordes. Igualmente se aplica un �ltro pero en este caso es uno pasa-alta. La idea eseliminar las frecuencias bajas y adicionalmente enfatizar las altas. Para enfatizarlas altas frecuencias se utiliza la función de transferencia:[13]

H2(u; v) = a+ bH1(u; v)

Ejemplo 4. Se inicia con la imagen de entrada:

4. PERFILADO 37

Se observa que la imagen esta un poco desenfocada. Entonces con un �ltro pasaalta se pueden mejorar los detalles. Se genera la función de transferencia con laoperación de énfasis:

HBW=hpfilterg(�btw�,PQ(1),PQ(2),D0,2);

H=0.5+2*HBW;

Ahora se aplica transformada, �ltro e inversa.

F=fft2(f,size(H,1),size(H,2));

g=real(ifft2(H.*F));

Entonces se obtiene la imagen:

38 4. PROCESAMIENTO DIGITAL DE IMÁGENES

5. Compresión de Imágenes

La tranformada discreta coseno (DCT) se utiliza para compresión dado quetiene la propiedad de que para una imagen típica, unos pocos coe�cientes contienenla información visualmente importante. Por ejemplo para la compresión de losarchivos JPG se utiliza ampliamente.

La DCT esta dada por:

Bpq = �p�q

M�1Xm=0

N�1Xn=0

Amn cos�(2m+ 1)p

2Mcos

�(2n+ 1)q

2N

Para una matriz A con MxN, con 0 � p �M � 1; 0 � q � N � 1.Para el caso de JPG la imagen de entrada es dividida en bloques de 8x8 o

16x16 y luego la DCT 2D se calcula para cada bloque y de esa forma se almacena.Cuando se lee, se obtienen estos coe�cientes y se aplica la DCT inversa a cadabloque y luego se unen todos los bloques en una imagen. Ademas dado que muchoscoe�cientes en una imagen tienen valores cercanos a cero, estos se pueden descartarsin afectar la imagen reconstruida.[11]

Ejemplo 5. Para visualizar el comportamiento del algoritmo de compresión deJPG se inicia con una imagen:

5. COMPRESIÓN DE IMÁGENES 39

En Matlab para calcular la DCT se obtiene primero una matrix de transforma-ción calculada con la fórmula:

Tpq =

( 1pM

p = 0; 0 � q �M � 1q2M cos �(2q+1)p2M 1 � p �M � 1; 0 � q �M � 1

Esta matrix se obtiene con el comando: dctmtx. Y luego se calcula B =T �A � T 0. En B queda la DCT 2D:

T=dctmtx(8);

dct=@(x)T*x*T�;

Se realiza esta operación en bloques de 8x8 sobre la imagen de entrada I:

B=blkproc(I,[8 8],dct);

Ahora se eliminan 54 coe�cientes de 64, recordando que la matriz es 8x8. Esdecir el 84% de los coe�cientes. La eliminación se logra poniéndolos en cero pormedio de una multiplicación. (Se mantienen los coe�cientes del extremo superiorizquierdo de la matriz):

Esta eliminación se hace en bloques de 8x8:

B2=blkproc(B,[8 8],@(x)mask.*x);

Ahora se hace el proceso inverso -descomprimir- para observar como queda laimagen. Para obtener la DCT inversa se calcula: A = T 0 � B � T en todos losbloques 8x8:

invdct=@(x)T�*x*T;

I2=blkproc(B2,[8 8],invdct);

Y se visualiza la imagen resultante:

40 4. PROCESAMIENTO DIGITAL DE IMÁGENES

Como se observa la imagen se ve degradada, pero si se tiene en cuenta que seeliminó el 84% de la información el resultado es notable.[11]

CHAPTER 5

Conclusiones

Conclusión 1. La invención de las series de Fourier y su posterior desarrollofué uno de los grandes hitos del siglo XIX. También es uno de los grandes avancescientí�cos de la era moderna, dado que sus aplicaciones se han extendido hastanuestros días y afectan muchos aspectos de nuestra vida diaria como por ejemploel caso de las imágenes jpg.

Conclusión 2. A pesar que las series de Fourier surgieron del mundo aplicado,su in�uencia fué tal que propició avances importantísimos en el mundo puro. Comofué el caso del análisis, teoría de las funciones, etc. Entonces se puede concluir queel conocimiento matemático tiene como una de sus principales inspiraciones a lasaplicaciones concretas y por lo tanto estas no se deben desligar del estudio de lasmatemáticas.

Conclusión 3. Las series de Fourier permiten aproximar funciones y este esuno de sus principales usos. Puesto que facilita la solución de ecuaciones diferen-ciales parciales.

Conclusión 4. La importancia de la transformada de Fourier radica en queexpresa la magnitud de cada coe�ciente, lo que se puede interpretar como la �rele-vancia�de cada componente sinusoidal (o de cada frecuencia).

Conclusión 5. Existen diferentes expresiones para la serie de Fourier: Com-pleja, Ángulo fase, real, etc. Sin embargo todas representan el mismo concepto, solose reescribe para facilitar ciertos cálculos o para enfatizar conceptos. Este últimoaplica por ejemplo a la tranformada, puesto que es solo la reescritura del coe�cientede la integral de Fourier compleja.

Conclusión 6. El utilizar números complejos para la transformada tiene laventaja de economia de expresión. Puesto que con un solo número se representa laamplitud y la fase de cada componente sinusoidal.

Conclusión 7. El análisis de Fourier es indicado para situaciones donde existaperiodicidad de la información. Por ejemplo muchos fenómenos naturales siguenpatrones regulares y en estos casos el análisis de Fourier ha resultado ventajosopara procesamiento de las series de tiempo.

Conclusión 8. Para campos como la ingeniería de sistemas es importanteconocer los temas del análisis de Fourier puesto que como se vió el formato JPGdepende de la transformada. Y si en un futuro se quiere que el país logre avancestécnicos, entonces los ingenieros deben estar en capacidad de dominar estas her-ramientas.

Conclusión 9. En este trabajo se ha observado como la transformada deFourier esta inmersa en muchos de las tecnologías que usamos en la vida diaria. Por

41

42 5. CONCLUSIONES

ejemplo se puede encontrar en: comunicaciones, la compresión de video, compresiónde sonido, radares, las imágenes jpg, al marcar los tonos de un teléfono, cuando unmédico realiza una tomografía axial computarizada (TAC), en el reconocimiento devoz, etc. Entonces este es un buen ejemplo del por que las matemáticas posterioresal álgebra elemental si se deben seguir estudiando y por que son importantes parala ingeniería.

Bibliography

[1] Kline, M., Mathematical.Thought from Ancient to Modern Times, Cap: 20, 22, 28. OxfordUniversity Press, 1990

[2] Bhatia, R. Fourier Series. Cap 1. The Mathematical Association of America, 2005[3] Bell, E. T. Los Grandes Matemáticos[4] Kamen, E. Heck, B. Fundamentos de señales y sistemas. Pearson Educación. 2008[5] o�Neil. Matemáticas Avanzadas para ingeniería. Thomson. 2006[6] J J O�Connor and E F Robertson. The MacTutor History of Mathematics archive.

http://www-history.mcs.st-andrews.ac.uk/ JOC/EFR. May 2000[7] Bloom�eld, P. Fourier Analisys of Time Series: An Introduction. John Wiley & Sons, Inc.

2000[8] Kreyszig, E. Advanced Engineering Mathematics. John Wiley & Sons, Inc. 2006.[9] Weeks, M. Digital signal processing. In�nity Science Press LLC. 2007[10] Solar In�uences Data Analysis Center. http://sidc.oma.be/. 2010[11] The MathWorks, Inc. Documentación de Matlab. 2008[12] Hathaway, D. Solar Physics, MSFC Nasa. 2007. http://solarscience.msfc.nasa.gov/feature1.shtml[13] Gonzalez R., Woods, R. Digital Image Processing. Pearson/Prentice Hall. 2008[14] Moler, C. Numerical Computing with Matlab. The Mathworks, Inc.2008

43

APPENDIX A

Listado de Programas

A continuación se listan los programas creados o utilizados en Matlab.

1. DFT

function X = dft(x)

tam=length(x);X=zeros(1,tam);for m=0:tam-1

suma=0;for n=0:tam-1

suma = suma + x(n+1)*(cos(2*pi*n*m/tam)-i*sin(2*pi*n*m/tam));endX(m+1)=suma;

end

2. Manchas Solares

clear;clc;load sunspot.datanios=sunspot(:,1);manchas=sunspot(:,2);

%Calculamos la FFTy=fft(manchas);y(1)=[];

%La amplitud es la magnitud de la secuencia de complejosy1=abs(y);

%Puesto que la frecuencia de muestreo es 1. Existen 1/n frecuencias en el%eje xn=length(y);xf=1/n:1/n:1;

%Graficamos el inverso de las frecuencias para ver los periodos.figure;plot(1./xf(10:100),y1(10:100));set(gca,�xtick�,1:2:30)

45

46 A. LISTADO DE PROGRAMAS

grid;title(�Espectro Manchas Solares�);xlabel(�A\U{f1}os�);

3. Señal con Ruido

clccleart=(0:1/500:2-(1/500));y=0.2*sin(2*pi*20*t)+0.4*sin(2*pi*30*t)+randn(1,1000);plot(t(1:125),y(1:125))f=0:0.5:(500-0.5);y1=abs(fft(y));figure;plot(f(1:125),y1(1:125)/1000*2)title(�Espectro de Amplitud�);xlabel(�Frecuencia (Hz)�)

4. Suavizado

clear;clc;a=ones(256,256);a(129:256,:)=0;[M N]=size(a);F=fft2(a);sig=10;H=lpfilter(�gaussian�,M,N,sig);G=H.*F;g=real(ifft2(G));figure, imshow(a,[]);figure, imshow(g,[]);

5. Per�lado

clc;clear;f = imread(�moon.tif�);PQ=paddedsize(size(f)); %Ajusta el tama\U{f1}oD0=0.05*PQ(1);HBW=hpfilterg(�btw�,PQ(1), PQ(2), D0,2);H=0.5+2*HBW;

F=fft2(f,size(H,1),size(H,2));g=real(ifft2(H.*F));ghf=g(1:size(f,1),1:size(f,2)); % Recorta la imagen a su tamano original

ghf=gscale(ghf); % Convierte la imagen a tonos grisesb=imadjust(ghf); % Mejorar el constrastefigure,imshow(f);figure,imshow(b);

8. HPFILTERG 47

6. Compresión

clcclearI=imread(�logo.bmp�);I=I(:,:,1); % Solo imagen monoI(93:433,:)=0; % Para tener una matriz cuadradaI = im2double(I);T = dctmtx(8);dct = @(x)T * x * T�;B = blkproc(I,[8 8],dct);mask = [1 1 1 1 0 0 0 0

1 1 1 0 0 0 0 01 1 0 0 0 0 0 01 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0];

B2 = blkproc(B,[8 8],@(x)mask.* x);invdct = @(x)T� * x * T;I2 = blkproc(B2,[8 8],invdct);figure,imshow(I), figure, imshow(I2)

7. paddedsize

function PQ=paddedsize(AB, CD, PARAM)if nargin==1

PQ=2*AB;elseif nargin == 2 & ~ischar(CD)

PQ=AB+CD-1PQ=2*ceil(PQ/2);

elseif nargin == 2n=max(AB);P=2^nextpow2(2*m);PQ=[P P];

elseerror(�No. de inputs mal�);

end

8. hp�lterg

function H=hpfilterg(type, M, N, D0, n)if nargin==4

n=1;endHlp=lpfilter(type, M, N, D0, n);H=1-Hlp;

48 A. LISTADO DE PROGRAMAS

9. lp�lter

function [H,D]=lpfilter(type, M, N, D0, n)[U,V]=dftuv(M,N);D=sqrt(U.^2+V.^2);switch type

case �ideal�H=double(D<=D0);

case �btw�if nargin==4

n=1;endH=1./(1+(D./D0).^(2*n));

case �gaussian�H=exp(-(D.^2)./(2*(D0^2)));

otherwiseerror(�Filtro desconocido�);

end

10. dftuv

function [U,V]=dftuv(M,N)u=0:(M-1);v=0:(N-1);idx=find(u>M/2);u(idx)=u(idx)-M;idy=find(v>N/2);v(idy)=v(idy)-N;[V,U]=meshgrid(v,u);

11. Onda Rectangular

t=-4*pi:pi/256:4*pi;x=square(t);plot(t,x)gridaxis([-2*pi-1 2*pi+1 -2 2])set(gca, �xtick�, -2*pi:pi:2*pi)set(gca,�xticklabel�,�-2pi|-pi|0|pi|2pi�)set(gca,�yticklabel�,�||-k||0||k||�)