uami13644

55
 Tratamiento de Im´ agenes en Movimiento usando Wavelets de Cuaternios Proyecto de Investigaci´ on Licenciatura en Computaci´ on Jes´ us Barre ra M´ endez 200215071 Leonar do T raver soni Dom ´ ınguez Asesor Al fonso Mart´ ı nez Mart´ ı nez Coordinador de la licenciatura exico D.F. a 1 de febrero del 2007.

Upload: hector-flores

Post on 10-Jul-2015

557 views

Category:

Documents


0 download

TRANSCRIPT

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 1/55

Tratamiento de Imagenes en Movimiento

usando Wavelets de Cuaternios

Proyecto de Investigacion

Licenciatura en Computacion

Jesus Barrera Mendez 200215071

Leonardo Traversoni Domınguez

Asesor

Alfonso Martınez Martınez

Coordinador de la licenciatura

Mexico D.F. a 1 de febrero del 2007.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 2/55

Indice general

1. Curvas de cuaternios

1.1. Cuaternios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. B-splines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3. Interpolacion de cuaternios duales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.1. Interpolacion de la parte rotacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3.2. Metodo TR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.3. Metodo TRT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.4. Implantacion de los metodos de interpolacion . . . . . . . . . . . . . . . . . . . . . . .

1.4. Aplicacion de ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2. Reconstruccion 3D

2.1. Obtencion de las imagenes de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. Algebra geometrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2.1. Geometrıa de las imagenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2. Algebra geometrica de tres dimensiones G3,0,0 . . . . . . . . . . . . . . . . . . . . . . .

2.2.3. Algebra geometrica de cuatro dimensiones G1,3,0 . . . . . . . . . . . . . . . . . . . . . 2.3. Operaciones algebraicas de incidencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.3.1. Bracket y dualidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.3.2. Interseccion de entidades geometricas . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.3. Aspectos de implementacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.4. Funciones elaboradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3. Transformada Wavelet

3.1. Transformada Wavelet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2. Transformada Wavelet Discreta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3. Tipos de wavelets mas conocidos y su aplicacion con Matlab . . . . . . . . . . . . . . . . . . .

3.3.1. Principales funciones de Matlab para trabajar con la transfomada wavelet . . . . . . . 3.3.2. Wavelet de Haar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3. Daubechies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.4. Programas de ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.4. Analisis Multiresolucion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.5. Aplicacion de muestra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6. Codigo de las funciones elaboradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 3/55

Dedicatoria

A mis padres y hermanos.

2

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 4/55

Agradecimientos

Agradezco al profesor Leonardo Traversoni por su paciencia y por todas las facilidades recibidas, pero sotodo por la oportunidad de dedicarme un tiempo a descubrir y estudiar estos temas que tanto me gustarTambien agradezco a mis companeros Salma, Maricela, Andres y Mario por hacer mas agradable la estanen el laboratorio. Por su apoyo y amistad.

3

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 5/55

Capıtulo 1

Curvas de cuaternios

1.1. Cuaternios

Un cuaternio Q es un numero hipercomplejo que depende de cuatro unidades 1, i, j, k:

Q = c0 + c1i + c2 j + c3k (1

donde los ci (i = 1, 2, 3) son numeros reales llamados componentes de Q.El conjunto de cuaternios se representa por H . Otra representacion mas practica de Q es (c0, c1, c2,

La suma y la resta de cuaternios se realizan componente a componente. La multiplicacion de dos cuaternes distributiva con respecto a la suma y se define por las siguientes reglas de multiplicacion de las unidad

i2 = j2 = k2 = −1

 jk = −kj = i

ki = −ik = j

ij = − ji = k

Entonces el producto Q ∗ Q esta dado por:

Q ∗ Q

= (c0 + c1i + c2 j + c3k) ∗ (c

0 + c

1i + c

2 j + c

3k)= (c0c0 − c1c1 − c2c2 − c3c3) + (c0c1 + c1c0 + c2c3 − c3c2)i (1

+(c0c2 + c2c0 + c3c1 − c1c3) j + (c0c3 + c3c0 + c1c2 − c2c1)k

El conjugado de un cuaternio Q = c0 + c1i + c2 j + c3k se representa por Q y se define como Qc0 − c1i − c2 j − c3k. El producto Q ∗ Q es igual a c20 + c21 + c22 + c23 y se conoce como la norma N (Q) cuaternio Q . Cuando la norma de un cuaternio es igual a 1 se dice que es un cuaternio unitario.

Cuando la primera componente de un cuaternio es igual a cero se dice que se tiene un cuaternio vectoro puro Q = (0, c1, c2, c3).

Una propiedad de los cuaternios unitarios es que pueden ser escritos en la forma:

Q = (cos θ, x sin θ, y sin θ, z sin θ) = (cos θ, v sin θ) (1

donde v = (x ,y ,z), esta forma es muy util cuando los cuaternios se usan para representar rotaciones.La rotacion de un punto   p = ( px, py, pz) alrededor del eje v = (vx, vy, vz) por un angulo θ se puede reali

por medio de un producto de cuaternios, dicho producto es:

P  = Q ∗ P  ∗ Q (1

4

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 6/55

CAP ITULO 1. CURVAS DE CUATERNIOS 

donde P  = (0,   p) y P  = (0,   p). El punto   p = ( px, py, pz) es el resultado de la rotacion del puntoAdemas, el cuaternio Q utilizado es unitario y esta dado por:

Q = (cosθ

2, v sin

θ

2) (1

Entonces existe una correspondencia entre un cuaternio unitario Q = (c0, c1, c2, c3) y las matricesrotacion en R3. Esta relacion esta dada por:

(c0, c1, c2, c3) →

c20 + c21 − c22 − c23 2(−c0c3 + c1c2) 2(c0c2 + c1c3)2(c0c3 + c2c1) c20 − c21 + c22 − c23 2(−c0c1 + c2c3)

2(−c0c2 + c1c3) 2(c0c1 + c2c3) c20 − c21 − c22 + c23

(1

Por lo tanto, el punto rotado   p se puede obtener como:

 p = U p (1

donde U  se obtiene de la forma descrita a partir de cuaternio Q utilizado en (1.4).Si lo que se necesita es representar movimientos que incluyan traslacion, se puede recurrir a los cuatern

duales. Un cuaternio dual tiene la forma:

Q = Q

0

+ εQ

ε

(1donde Q0 y Qε son cuaternios normales conocidos como parte real Re(Q) y parte dual Du(Q) de Q, resptivamente, y el sımbolo ε, llamado unidad dual, cumple con:

ε2 = 0 (1

El conjunto de cuaternios duales re representa por H [ε]. Las operaciones de suma y resta de cuaterduales se realiza por componentes, el producto solo tiene que tomar en cuenta la relaci on (1.9), y la conjugacse realiza obteniendo el conjugado de las partes real y dual.

Un cuaternio dual que representa una traslacion tiene la forma:

Q = (2v0, 0) + ε(0, v) (1.

donde v0 = 0. La traslacion correspondiente a este cuaternio esta dada por el vector 1v0

v.Al multiplicar un cuaternio como el anterior con uno normal, en ese orden, se tiene un cuaternio d

que caracteriza completamente un movimiento en el espacio. Es decir, un cuaternio dual Q asociado a utraslacion por 1

v0v y una rotacion dada por el cuaternio R = (cos θ

2,  w sin θ

2 ) tiene la forma:

Q = Q0 + εQε

= ((2v0, 0) + ε(0, v)) ∗ (cosθ

2,  w sin

θ

2)

= (2v0 cosθ

2, 2v0  w sin

θ

2) + ε(−v ·  w sin

θ

2, v cos

θ

2+ v ×  w sin

θ

2) (1.

Este cuaternio dual satisface la relacion de Plucker:

Du(Q ∗ Q) = 0 (1.

Por otro lado, si se tiene un cuaternio dual que cumple con (1.12) y cuya parte real no sea cero, entondicho cuaternio Q describe un movimiento. Las partes traslacional y rotacional de dicho movimiento Q

pueden calcular como:

Trasl(Q) = Q ∗ Q0 y Rot(Q) =Q0

N (Q)(1.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 7/55

CAP ITULO 1. CURVAS DE CUATERNIOS 

1.2. B-splines

Los splines polinomiales son curvas polinomiales a trozos de cierto grado n fijo, que son muy utilesdiversas aplicaciones. Estas funciones pueden ser representadas como combinaciones lineales de la base

polinomios formada por las funciones B-spline de grado n.La definicion de las funciones B-spline de orden p utiliza una secuencia de numeros reales U  = {u0, . . . , u

donde ui ≤ ui+1 para i = 0, . . . , m − 1. Cada elemento de U  se conoce como nudo y U  como vector de nudLa formula que define a los B-spline de grado p es:

N i,0(u) =

1 si ui ≤ u < ui+1

0 en otro caso

N i,p(u) =u − ui

ui+ p − uiN i,p−1(u) +

ui+ p+1 − u

ui+ p+1 − ui+1N i+1,p−1(u) (1.

Como la secuencia de nudos solo tiene que ser no decreciente, puede ocurrir una division entre ceroaplicar directamente la formula interior. Cuando esto ocurre, se toma al cociente x

0 como 0.

A modo de ejemplo, la figura 1.1 muestra las funciones B-spline de grado 3 generadas por el vectornudos U  = {0, 0, 0, 0, 0.1667, 0.3333, 0.5, 0.6667, 0.83333, 1, 1, 1, 1}.

Figura 1.1: En este conjunto de funciones B-spline puede verse que cada una de ellas toma valores distinde cero unicamente en intervalos bien definidos. Tambien se nota que los nudos determinan la terminacio

el inicio de las funciones.

La dependencia de las funciones B-spline del vector de nudos U  se refleja tanto en la forma de las funcioresultantes como en la continuidad de las curvas que pueden representar mediante su combinaci on en for

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 8/55

CAP ITULO 1. CURVAS DE CUATERNIOS 

lineal. Sin embargo, el patron basico del vector U  que permite obtener curvas como las de la figura 1.1decir, con una continuidad C  p−1, con p el grado de los B-splines, es:

U  = {0, . . . , 0

     p+1

, u1, . . . , uk

    k

, 1, . . . , 1

    p+1

} (1.

donde k se encuentra relacionado con el numero de funciones B-spline de grado p obtenidas. La relaces la siguiente:

k = Numero de Funciones − p − 1 (1.

y los nudos ui, 1 ≤ i ≤ k, son mayores que 0, menores que 1, y se encuentran uniformemente espaciados enestos dos valores.

Como puede verse, el numero de funciones B-spline de grado p generadas por un vector de nudosdepende de la cantidad de elementos en este vector. Esta es una ventaja enorme de este tipo de funciocon respecto a los polinomios de Bernstein, a saber, que la cantidad de puntos a interpolar no determinaforma unica el grado de las funciones base utilizadas. Esto tiene como consecuencia que cuando se interpomuchos puntos usando B-splines, se puedan obtener curvas con menos oscilaciones que cuando se utilinterpolacion de Bezier. De esta forma, es comun usar B-splines de grado 3, ya que con estas funcionespueden formar curvas con continuidad C 2.

Una vez que se tiene un conjunto de funciones B-spline con las caracterısticas deseadas, se pueden utilipara representar curvas C (t) de la siguiente manera:

C (t) =ni=0

N i,p(t)C i (1.

Los puntos C i se conocen como puntos de control de C (t) y definen la forma de la curva obtenidalo que se necesita es interpolar un conjunto de n + 1 puntos P i, los puntos de control se pueden obteresolviendo el siguiente sistema de ecuaciones:

nj=0

N j,p(ti)C j = P i (i = 0, 1, . . . , n) (1.

lo que requiere que se tenga un conjunto de n + 1 funciones B-spline de algun grado p, usualmente igual a

1.3. Interpolacion de cuaternios duales

Dado que un desplazamiento espacial, rotacion y traslacion, puede ser representado por un cuaterdual, una funcion de cuaternios duales Q(t) : [0, 1] → H [ε] representa un movimiento continuo con paramet. Podemos contruir una curva de este tipo se tenemos una serie de cuaternios de referencia P i, con respectivos parametros ti, y llevamos a cabo una interpolacion con ellos.

Planteando mejor el problema, se tienen m + 1 desplazamientos, representados por los cuaternios dua

P i = ((2, 0) + ε(0, si)) ∗ (cosθ

2, ri sin

θ

2) (si, ri ∈ R3) (1.

con los parametros de tiempo ti ∈ R, 0 = t0 < t1 < .. . < tm = 1 (i = 0, 1, . . . m).

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 9/55

CAP ITULO 1. CURVAS DE CUATERNIOS 

Entonces, la curva que deseamos obtener debe cumplir con la condicion:

Q(ti) = λiP i (i = 0, . . . , m) (1.

Los factores λi son arbitrarios, ya que la multiplicacion de un cuaternio de la forma (1.19) por u

constante no altera el movimiento que representa, ademas, los metodos que se describen a continuacsiempre resultan en constantes λi=1.

Los metodos siguientes, el TR y el TRT, para la interpolacion de cuaternios duales, se basan enresolucion de un sistema lineal de ecuaciones, lo que los hace muy sencillos de programar usando Matlab. embargo, si se desean curvas con otras caracterısticas, se pueden usar metodos como los descritos en [19[22]. De igual forma, ambos metodos realizan primero una interpolacion de la parte rotacional de los pun(1.19), es decir, de los cuaternios Ri = (cos θ

2, ri sin θ

2).La diferencia radica en la forma en la que esta curva rotacional es combinada con las partes traslacional

1.3.1. Interpolacion de la parte rotacional

En [17] se describen tres metodos para la interpolacion de cuaternios simples, los metodos afın, elıpticproyectivo, sin embargo, el mas intuitivo y con mejores caracterısticas es el elıptico.

El primer paso para la interpolacion de los cuaternios Ri (i = 0, 1, . . . , m) es elegir los signos de foradecuada para cada uno de ellos. Esto se debe a que los cuaternios Q y −Q representan la misma rotacipero sus distancias euclidianas con respecto a algun otro cuaternio por lo general son diferentes, en ecaso elegimos los signos de forma tal que las distancias euclidianas entre dos cuaternios consecutivos seanmenores. En otros terminos, si el cuaternio Ri+1 cumple

(Ri − Ri+1) ∗ ( Ri − Ri+1) ≤ (Ri + Ri+1) ∗ ( Ri + Ri+1) (1.

entonces se mantiene inalterado, si no cumple con esta desigualdad, se cambia por −Ri+1. El signo de R0

arbitrario.Una vez que se tiene la secuencia Ri con los signos correctos, se plantea y resuelve el sistema de ecuacion

m

j=0

N j,p

(ti)C 

j= R

i(i = 0, 1, . . . , m) (1.

que desarrollado quedaN 0,p(t0) N 1,p(t0) . . . N  m,p(t0)N 0,p(t1) N 1,p(t1) . . . N  m,p(t1)

......

. . ....

N 0,p(tm) N 1,p(tm) . . . N  m,p(tm)

C 0C 1

...C m

=

R0

R1

...Rm

(1.

y entonces la curva de cuaternios que describe la parte rotacional queda:

Qrot(t) =m

i=0

N i,p(t)C i (1.

Aunque hay que senalar que esta curva rotacional tiene que ser normalizada antes de poder ser utilizaen alguna aplicacion, ya que en general la norma de Q(tk) para algun tk diferente de los parametros movimiento no tiene norma unitaria, aunque si es muy cercana a 1.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 10/55

CAP ITULO 1. CURVAS DE CUATERNIOS 

1.3.2. Metodo TR

Este metodo construye la curva de cuaternios duales Q(t) componiendo la curva rotacional Qrot(t) cuna traslacional Qtrasl(t) de la siguiente forma:

Q(t) = Qtrasl(t) ∗ Qrot(t) (1.

donde

Qtrasl(t) = (2, 0) + ε

0,

mi=0

N i,p(t)  pi

(1.

entonces, la expresionm

i=0 N i,p(t)  pi tiene que interpolar a las cantidades si de los desplazamientos (1.1es decir, se requiere resolver el sistema de ecuaciones:

mj=0

N j,p(ti)  pj = si (i = 0, 1, . . . , m) (1.

Una caracterıstica de este metodo radica en que las partes rotacional y traslacional son completameindependientes y por lo tanto se evita el uso de las expresiones (1.13).

1.3.3. Metodo TRT

Este metodo es mucho mas elaborado que el anterior ya que realiza la combinacion de Qrot(t) con

segmentos traslacionales Q(1)trasl(t) y Q

(2)trasl(t) de la siguiente forma:

Q(t) = Q(1)trasl(t) ∗ Qrot(t) ∗ Q

(2)trasl(t) (1.

donde

Q(1)trasl(t) = (2, 0) + ε0,

l1j1=0

N j1,p(t)  p(1)j1 (1.

Q(2)trasl(t) = (2, 0) + ε

0,

l2j2=0

N j2,p(t)  p(2)j2

(1.

o simplificando la notacion

Q(1)trasl(t) = 2 + ε

l1j1=0

N j1,p(t)  p(1)j1

(1.

Q(2)trasl(t) = 2 + ε

l2

j2=0

N j2,p(t)  p(2)j2

(1.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 11/55

CAP ITULO 1. CURVAS DE CUATERNIOS 

Entonces, desarrollando el producto (1.28) se tiene

Q(t) =

2 + ε

l1

j1=0

N j1,p(t)  p(1)j1

   X

m

i=0

N i,p(t)C i

   Z

2 + ε

l2

j2=0

N j2,p(t)  p(2)j2

   Y 

= (2 + εX ) ∗ Z  ∗ (2 + εY )

= (2Z  + εXZ ) ∗ (2 + εY )

= 4Z  + 2εZY  + 2εXZ  + ε2XZ Y 

= 4Z  + 2ε(ZY  + XZ ) (1.

y por lo tanto podemos hacer las asociaciones,

Q0(t) = 4Z  (1.

Qε(t) = 2(ZY  + XZ ) (1.

para poder aplicar las formulas (1.13) y poder obtener las partes rotacional y traslacional

Rot(Q(t)) =Q0(t)

N (Q0(t))=

4Z 

N (4Z )(1.

Trasl(Q(t)) = Q(t) ∗ Q0(t)

= (4Z  + 2ε(ZY  + XZ ))(4Z )

= 16Z Z  + 8(ZY  Z  + XZ Z ) (1.

pero como Trasl(Q(t)) debe de ser un cuaternio dual que representa una traslacion, debe de tener la for(1.10) y entonces obtenemos la expresion para los vectores de traslacion correspondientes:

 V (t) =8(ZY 

Z  + XZ 

Z )

8Z Z 

=(ZY  Z  + XZ Z )

Z Z (1.

=ZY  Z 

Z Z + X  (1.

entonces, evaluando en los momentos ti, los parametros del movimiento, se puede formar un sistema linusando los puntos si de (1.19) que indican la traslacion en ti:

X (ti) +Z (ti)Y (ti) Z (ti)

Z (ti)

Z (ti)

= si (i = 0, 1, . . . , m) (1.

pero como Z (ti) Z (ti) es igual a 1, ya que estamos interpolando cuaternios unitarios, podemos reescribisistema como:

X (ti) + Z (ti)Y (ti) Z (ti) = si (i = 0, 1, . . . , m) (1.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 12/55

CAP ITULO 1. CURVAS DE CUATERNIOS 

Antes de sustituir las expresiones para X , Y  y Z  en la ecuacion anterior, hay que notar que como cuaterios Z (ti) = Ri son constantes, podemos reemplazar, de acuerdo con (1.6), el producto de cuatern

Z (ti)Y (ti)

Z (ti) = RiY (ti)

Ri por el producto matricial (U (Ri)Y (ti)

T )T  que despues puede ser expandidoestablecer el sistema lineal antes mencionado.

Entonces, el sistema lineal que nos permite encontrar la parte traslacional quedal1

j1=0

N j1,p(ti)  p(1)j1

+

l2j2=0

N j2,p(ti)U (Ri)  p(2)j2

= si (i = 0, 1, . . . , m) (1.

De este sistema puede notarse que como tenemos l1 + 1 incognitas   p(1) y l2 + 1 incognitas   p(2), debemtener la siguiente igualdad

l1 + l2 + 2 = m + 1 (1.

para que el sistema (1.42) pueda tener solucion unica. Esto nos lleva a establecer que l1 y l2 deben cumla siguiente relacion

l1 + l2 = m − 1 (1.

Entonces, para tener un ejemplo concreto, si se tienen ocho posiciones a interpolar s0, . . . ,s7, se puhacer l1 = l2 = 3 y al escribir el sistema (1.42) en la forma A  p = s usando B-splines de grado 3, se tiene:

A =

N 0,3(t0) N 1,3(t0) N 2,3(t0) N 3,3(t0) N 0,3(t0)U 0 N 1,3(t0)U 0 N 2,3(t0)U 0 N 3,3(t0)U 0N 0,3(t1) N 1,3(t1) N 2,3(t1) N 3,3(t1) N 0,3(t1)U 1 N 1,3(t1)U 1 N 2,3(t1)U 1 N 3,3(t1)U 1N 0,3(t2) N 1,3(t2) N 2,3(t2) N 3,3(t2) N 0,3(t2)U 2 N 1,3(t2)U 2 N 2,3(t2)U 2 N 3,3(t2)U 2N 0,3(t3) N 1,3(t3) N 2,3(t3) N 3,3(t3) N 0,3(t3)U 3 N 1,3(t3)U 3 N 2,3(t3)U 3 N 3,3(t3)U 3N 0,3(t4) N 1,3(t4) N 2,3(t4) N 3,3(t4) N 0,3(t4)U 4 N 1,3(t4)U 4 N 2,3(t4)U 4 N 3,3(t4)U 4N 0,3(t5) N 1,3(t5) N 2,3(t5) N 3,3(t5) N 0,3(t5)U 5 N 1,3(t5)U 5 N 2,3(t5)U 5 N 3,3(t5)U 5N 0,3(t6) N 1,3(t6) N 2,3(t6) N 3,3(t6) N 0,3(t6)U 6 N 1,3(t6)U 6 N 2,3(t6)U 6 N 3,3(t6)U 6N 0,3(t7) N 1,3(t7) N 2,3(t7) N 3,3(t7) N 0,3(t7)U 7 N 1,3(t7)U 7 N 2,3(t7)U 7 N 3,3(t7)U 7

  p =

  p(1)0

  p(1)1

  p(1)2

  p(1)3

  p(2)0

  p(2)1

  p(2)2

  p(2)3

s =

s0s1s2s3s4s5s6s7

donde U i representa a U (Ri) (i = 0, . . . , 7) dada por (1.6).

El sistema (1.42) contiene algunas matrices como coeficientes, sin embargo, si se escribe de la siguie

formal1

j1=0

N j1,p(ti)I 3  p(1)j1

+

l2j2=0

N j2,p(ti)U (Ri)  p(2)j2

= si (i = 0, 1, . . . , m) (1.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 13/55

CAP ITULO 1. CURVAS DE CUATERNIOS 

donde I 3 es la matriz identidad de 3×3, se ve inmediatamente que puede ser expandido de un sistemadimension m + 1 a uno de dimension 3(m + 1).

Una vez que ya se tienen las dos partes traslacionales del movimiento dadas por ( 1.31) y (1.32)combinan con la parte traslacional segun (1.28) y al final se aplican las formulas (1.13) para obtener la pa

traslacional definitiva.

1.3.4. Implantacion de los metodos de interpolacion

Las figuras 1.2-1.3 y 1.8-1.12 son especıficas de los metodos TR y TRT respectivamente. Las figuras 1.4-son usadas en ambos.

Figura 1.2: Esta es la funcion principal del metodo TR. Se encarga de llamar a las funciones que realizaninterpolacion de las partes rotacional y traslacional.

1.4. Aplicacion de ejemplo

Para probar los metodos de interpolacion expuestos se desarrollo una pequena animacion. El codigo danimacion se muestra en la figura 1.13 y los datos de rotacion y traslacion a interpolar en la figura 1.14, usecuencia de cuadros resultantes se muestra en la figura 1.15

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 14/55

CAP ITULO 1. CURVAS DE CUATERNIOS 

Figura 1.3: Esta funcion obtiene la parte traslacional en el metodo TR. Puede observarse que es una cuspline simple.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 15/55

CAP ITULO 1. CURVAS DE CUATERNIOS 

Figura 1.4: Esta funcion obtiene la parte rotacional en los metodos TR y TRT. El mecanismo es el misque para una curva spline de puntos en R3, la unica diferencia es que antes de llevar a cabo el procesointerpolacion se deben elegir los signos adecuados de acuerdo a la expresion (1.21).

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 16/55

CAP ITULO 1. CURVAS DE CUATERNIOS 

Figura 1.5: Esta funcion realiza la eleccion de signos de comparando las distancias euclidianas entre Ri, Ry −Ri+1.

Figura 1.6: Esta funcion es auxiliar. Realiza una interpolacion lineal para aproximar el valor de F(t0) ya el vector F definido sobre t puede no contener exactamente ese valor.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 17/55

CAP ITULO 1. CURVAS DE CUATERNIOS 

Figura 1.7: Esta funcion devuelve un numero especificado de funciones B-spline de grado p evaluadasn puntos y el vector t en el cual fueron evaluadas. El vector U  de nudos no es una entrada a la funccomo podrıa esperarse, en vez de esto, este se construye para obtener funciones con las caracterısticascontinuidad deseadas.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 18/55

CAP ITULO 1. CURVAS DE CUATERNIOS 

Figura 1.8: Esta funcion realiza la interpolacion por el metodo TRT. Primero encuentra la parte rotacioy las dos partes traslacionales, despues las combina como un producto de cuaternios duales (lineas 16 a y obtiene una parte rotacional y una parte traslacional (lineas 25 a 27).

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 19/55

CAP ITULO 1. CURVAS DE CUATERNIOS 

Figura 1.9: En esta funcion se encuentran las dos partes traslacionales requeridas por el metodo TRT. Puocurrir que la matriz A se vuelva singular.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 20/55

CAP ITULO 1. CURVAS DE CUATERNIOS 

Figura 1.10: Esta funcion convierte un cuaternio unitario a una representacion matricial segun la form(1.6).

Figura 1.11: Esta funcion realiza el producto de dos cuaternios duales P  = P 0 + εP ε con Q = Q0 + εQ

Figura 1.12: Esta funcion descompone un cuaternio dual en un vector de traslacion y un cuaternio unitasimple que representa una rotacion.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 21/55

CAP ITULO 1. CURVAS DE CUATERNIOS 

Figura 1.13: Pequena animacion de un bloque de interpolando los datos de la figura 1.14. Se usa el metoTRT.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 22/55

CAP ITULO 1. CURVAS DE CUATERNIOS 

Figura 1.14: Datos para una animacion de prueba.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 23/55

CAP ITULO 1. CURVAS DE CUATERNIOS 

Figura 1.15: Ejemplo de interpolacion de cuaternios duales por el metodo TRT.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 24/55

Capıtulo 2

Reconstruccion 3D

La reconstruccion de cuerpos en 3D a partir de diferentes vistas captadas por imagenes de videfotograficas es un procedimiento que pertenece, entre otros, al campo de la visi on artificial.

Tradicionalmente, la reconstruccion de un solido a partir de dos o mas imagenes se hacıa usando geometproyectiva. Sin embargo, aunque esta geometrıa es muy solida y actualmente se encuentra sumamente desrollada, se tenıa que echar mano de algebra lineal, vectorial e incluso tensorial para realizar el tratamien

completo de los problemas. Un enfoque matematico mas moderno para los problemas de vision artificiael basado en el algebra geometrica.

El algebra geometrica es una forma libre de coordenadas de hacer calculos geometricos. Se basa en algebras de Grassmann y de Clifford y esta definida en un espacio generado por una base de multivecto[4].

Un multivector es una combinacion lineal de objetos geometricos de diferentes grados, por ejemplo, calares, vectores y bivectores. Estos multivectores pueden ser multiplicados por medio de un producto asociavo conocido como producto geometrico o de Clifford, el cual brinda al algebra un gran poder representacion

Hay que mencionar que el algebra geometrica se usa, en este caso, como un vehıculo de expresion degeometrıa proyectiva, es decir, como una forma de realizar calculos de forma mas simple y uniforme. embargo, el algebra geometrica es mas general y se comienza a utilizar cada vez mas en otros campos cola macanica clasica, el electromagnetismo, y otras ramas de la fısica.

2.1. Obtencion de las imagenes de prueba

Las imagenes con las que se experimento fueron tomadas con el proposito especıfico de ser utilizadas peste proyecto. Por lo tanto, la ubicacion de la camara se registro de la manera mas precisa posible usanpapel milimetrico. Si bien en un caso real no se conoce la configuracion de las camaras en el momentoefectuar las tomas, esto se hizo para realizar las primeras pruebas y verificar el correcto funcionamientolas funciones realizadas.

La ubicacion y orientacion de la camara en el momento de tomar las fotos se muestra en la figura 2.el resultado en la figura 2.2. La mejores fotografias aparecen en la figura 2.3

2.2. Algebra geometrica

Un algebra geometrica (AG) es generada por un espacio vectorial, usualmente de dimension finita, yproducto llamado producto geometrico que puede ser visto como la suma de dos productos diferentesproducto interno usual y un producto externo, introducido inicialmente por Grassmmann. La representac

23

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 25/55

CAP ITULO 2. RECONSTRUCCI ON 3D

Figura 2.1: Posiciones de la camara para cada una de las fotos de la figura 2.3. D = 50mm y L = 115m

Figura 2.2: Estas son dos tomas de una misma posicion del dado desde dos posiciones diferentes de la cama

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 26/55

CAP ITULO 2. RECONSTRUCCI ON 3D

Figura 2.3: Aquı se muestran todos los pares de fotografias del dado.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 27/55

CAP ITULO 2. RECONSTRUCCI ON 3D

de un AG de dimension n, generada por un espacio vectorial de dimension n, es G p,q,r, p, q y r se conocen cola firma del AG en cuestion y representan el numero de vectores cuyo cuadrado es +1, −1 y 0 respectivamenademas p + q + r = n.

Un algebra geometrica puede ser generada, a partir de la firma deseada, imponiendo ciertas restriccio

sobre la forma en que se combinaran sus elementos. Sin embargo, una forma menos sofisticada y mas simde comenzar a utilizarla es listando sus axiomas. A continuacion se estos se listaran para el caso de un Ade dimension 3.

Antes que nada hay que mencionar que nuestra AG debe incluir a los elementos de grados 0 a 3, es deelementos 0-vector (escalar), 1-vector (vector), 2-vector (bivector) y 3-vector (trivector) que representalas nociones geometricas de puntos, lineas, planos y espacio respectivamente. Ademas se introducen tres tide producto, el escalar, el interno y el externo para representar relaciones entre los elementos, aunque esultimos pueden ser combinados en un solo producto conocido como producto geometrico. Esto permitira se puedan combinar elementos de diferentes grados. Un elemento cualquiera de nuestra algebra tiene la form

A = A0 + A1 + A2 + A3

A los elementos de la forma A se le conoce como multivectores, los cuales siguen las siguientes reglas

A + B = B + A

(A + B) + C  = A + (B + C )

(AB)C  = A(BC )

A + 0 = A

1A = A

A + (−A) = 0

Ademas, el algebra obtenida se considera cerrada, esto es, la suma o producto de culquier par de muvectores es a su vez un unico multivector.

Estos axiomas son muy parecidos a los del algebra elemental, con excepcion de la conmutatividad

aplican a cualquier multivector. Sin embargo, hay que ser mas especıficos y senalar caracterısticas de elementos de ciertos grados en particular.

La conmutatividad del producto se tiene solo en el caso de la multiplicaci on de cualquier multivecpor un escalar (0-vector) λ

λA = Aλ

El cuadrado de un vector (1-vector) a es un unico escalar positivo |a|2, esto es:

a2 = |a|2 > 0

El producto geometrico de dos vectores puede ser descompuesto en terminos de dos productos m

simples de la siguientes forma: ab = a·b + a∧b

donde el producto interno · es conmutativo y el producto externo ∧ es anticonmutativo. Estos producse generalizan a elementos de grados mas altos de la siguiente manera:

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 28/55

CAP ITULO 2. RECONSTRUCCI ON 3D

Para un vector a y un elemento de grado k, Ak  el producto interno se define como:

a·Ak  =1

2(aAk  − (−1)k Ak a)

y el producto externo como:

a∧Ak  =1

2(aAk  + (−1)k Ak a)

y sumando estas dos ecuaciones se tiene:

aAk  = a·Ak  + a∧Ak 

El resultado de los productos interno y externo de un vector por un elemento de grado k tiene el efede aumentar o disminuir el grado en una unidad respectivamente:

a·Ak  es un vector de grado k − 1

a∧Ak  es un vector de grado k + 1

Pero como nuestra algebra geometrica es de dimension tres, no podemos obtener elementos de gra4 o superior, por lo tanto resulta l ogico establecer la siguiente relacion:

a∧A3 = 0

y de aquı se deduce inmediatamente que:

aA3 = A3a

Con el fin de mostrar a grandes rasgos el uso del algebra geometrica cuyos axiomas se han enunciadoprocedera a deducir algunas identidades partiendo de los hechos fundamentales.

Se tiene que el producto geometrico es asociativo, entonces

a(bc) = (ab)c

ademas se sabe queab = a·b + a∧b

entonces se tienea(b·c + b∧c) = (a·b + a∧b)c

y dado que el producto externo x∧y de dos vectores eleva el grado de y en uno, se tiene que los producb∧c y a∧b son bivectores y se llega al siguiente desarrollo:

a(b·c) + a·(b∧c) + a∧(b∧c) = (a·b)c + (a∧b)·c + (a∧b)∧c

de donde se puede identificar a los terminos a(b·c) y a·(b∧c) como vectores y al termino a∧(b∧c) cotrivector. Por lo tanto se puede establecer la siguiente igualdad intuitiva:

a∧(b∧c) = (a∧b)∧c

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 29/55

CAP ITULO 2. RECONSTRUCCI ON 3D

y la no tan intuitiva:a(b·c) + a·(b∧c) = (a·b)c + (a∧b)·c

Procediendo de la misma forma se puede demostrar la distributividad de los productos interno y exterEn general se tiene:

a·(Br  + Cr ) = a·Br  + a·Cr 

y

a∧(Br  + Cr ) = a∧Br  + a∧Cr 

2.2.1. Geometrıa de las imagenes

Como se habıa mencionado en la introduccion, una de las formas de procesar imagenes que provienenescenas tridimensionales es por medio de la geometrıa proyectiva. En especial, usando el modelo analıticolas coordenadas homogeneas. Es este modelo de la geometrıa proyectiva, el espacio euclidiano tridimensioes embebido en el espacio proyectivo de dimension 3, P 3 o R4, y el espacio euclidiano de dimension 2embebido en el espacio proyectivo de dimension 2, P 2 o R3. Esto trae como ventajas que la transformac

de proyeccion del espacio tridimensional al espacio bidimensional de las imagenes se puede representar couna transformacion lineal y por lo tanto representable por una matriz.

Entonces, como vamos a usar los espacios proyectivos de 2 y 3 dimensiones, o en el modelo homogeneo, espacios euclidianos de 3 y 4 dimensiones, tambien conviene usar el algebra geometrica de 3 y 4 dimensiogenerada por estos espacios euclidianos.

2.2.2. Algebra geometrica de tres dimensiones G3,0,0

El espacio euclidiano de tres dimensiones puede ser generado por tres vectores base {σ1, σ2, σ3}cumplen con la propiedad de que σ2

i = +1 para i = 1, 2, 3. El algebra geometrica generada por estos vectobase tiene los 23 elementos:

1  escalar

, {σ1, σ2, σ3}    vectores

, {σ1σ2, σ2σ3, σ3σ1}    bivectores

, {σ1σ2σ3}    trivector

Cada una de estas categorıas del algebra tiene su propia interpretacion. Un vector se puede ver como ulınea dirigida, un bivector como un area orientada, y un trivector como un volumen orientado. Este ultielemento se conoce como pseudoescalar, su cuadrado es igual a −1, conmuta con cualquier multivectousualmente se representa con la letra I .

Si me multiplica al pseudoescalar unitario con cada uno de los tres vectores base, se obtienen las relaciosiguientes:

Iσ1 = σ2σ3 Iσ2 = σ3σ1 Iσ3 = σ1σ2

estos elementos Iσi pueden servir como una forma de representar a las unidades imaginarias de cuaternio, que puede ahora ser escrito como:

R = q0 + q1(Iσ1) − q2(Iσ2) + q3(Iσ3)

y entonces puede verse que en realidad los cuaternios son un subalgebra de el algebra geometrica de tdimensiones que se esta desarrollando.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 30/55

CAP ITULO 2. RECONSTRUCCI ON 3D

2.2.3. Algebra geometrica de cuatro dimensiones G1,3,0

Esta algebra geometrica tambien se conoce como algebra de Lorentz debido a su uso en la teorıa derelatividad. Tiene 4 elementos base γ 1, γ 2, γ 3, γ 4 los cuales cumplen con γ 21 = γ 22 = γ 23 = −1, γ 24 = +1. Esvectores generan la siguiente base de multivectores:

1  escalar

, γ k  4 vectores

, {γ 2γ 3, γ 3γ 1, γ 1γ 2, γ 4γ 1, γ 4γ 2, γ 4γ 3}   6 bivectores

, Iγ k  4 trivectores

, I    pseudoescalar

El pseudo escalar es I  = γ 1γ 2γ 3γ 4 y su cuadrado tambien es igual a −1.El vector γ 4 juega un papel importante en la asociacion de bivectores del algebra de 4 dimensiones

elementos del algebra de 3 dimensiones.Recordando un poco, las coordenadas homogeneas son en realidad clases de equivalencia de puntos

un espacio Rn. Por ejemplo, en R4, los puntos (2, 3, 4, 1), (4, 6, 8, 2) y (6, 9, 12, 3) representanmisma coordenada homogenea, en otras palabras, todos las coordenadas que sean proporcionales en tosus entradas representan al mismo punto.

En el algebra geometrica esta asociacion se realiza multiplicando por un elemento especial. Partiendoun elemento de nuestra algebra de 4 dimensiones X = X 1γ 1 + X 2γ 2 + X 3γ 3 + X 4γ 4 se puede obtenedivision proyectiva mediante la operacion:

Xγ 4 = X·γ 4 + X∧γ 4 = X 4

1 +

X∧γ 4

X 4

≡ X 4(1 + x)

De esta forma se asocia al vector X en R4 con el vector x en R3.

2.3. Operaciones algebraicas de incidencia

Las operaciones de incidencia en geometrıa proyectiva son sumamente usadas en la vision por compudora. Estas operaciones se conocen como meet (interseccion) y join (union) de entidades geometricas. ejemplo, el meet ∨ de una linea y un plano es un punto, y el join ∧ de dos puntos es una linea. Es

operaciones se pueden describir y calcular en forma muy simple usando algebra geometrica. Pero antesdescribirlas hay que mencionar los conceptos de bracket y de dualidad.

2.3.1. Bracket y dualidad

El bracket es una operacion que se aplica unicamente a los pseudoescalares de cualquier algebra geomeca. Su funcion es extraer la magnitud de dicho pseudoescalar, debido a que todos los pseudoescalares sproporcionales para cualquier algebra en particular. Esto quiere decir que se I  es el pseudo escalar unitade alguna algebra geometrica, cualquier otro pseudoescalar es de la forma P  = αI . En este caso, el bracde P , representado por [P ] toma el valor de α. Analıticamente, esta operacion se puede llevar a cabo siguiendo los siguientes pasos:

P I −1 = αII −1 = α ≡ [P ]

Para un algebra geometrica de n dimensiones, el bracket de n vectores {xi} es:[x1x2x3 . . . xn] = [x1 ∧ x2 ∧ x3 ∧ . . . ∧ xn]

= (x1 ∧ x2 ∧ x3 ∧ . . . ∧ xn)I −1

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 31/55

CAP ITULO 2. RECONSTRUCCI ON 3D

Desarrollando el producto se puede mostra que esto es equivalente a la definicion del determinante de umatriz que tiene a los vectores xi como filas.

Usando la division proyectiva mencionada anteriormente y se puede demostrar que [11]:

[X1X2X3X4] = (X1 ∧ X2 ∧ X3 ∧ X4)I −14

= {(x2 − x1) ∧ (x3 − x1) ∧ (x4 − x1)}I −13

Ademas del bracket, otra operacion importante es la obtencion de dual de un r-vector. El dual der-vector A se representa por A∗ y se obtiene por medio de la siguiente operacion:

A∗ = AI −1

En un algebra de n dimensiones, el grado del dual de un elemento de grado r es n − r. Por ejemplo, enalgebra de tres dimensiones, el dual de un vector (grado = 1) es un plano o bivector (grado = 2).

Usando los conceptos de bracket y dualidad, en [11] se demuestra la siguiente relacion:

(A ∨ B)∗ = A∗ ∧ B∗

que en palabras puede establecerse como: el dual de una intersecci on (meet) esta dada por la union (jode sus duales. Ademas se puede obtener el siguiente resultado:

A ∨ B = ((A ∨ B)∗)∗ = (A∗ ∧ B∗)I  = (A∗ ∧ B∗)(I −1I )I  = (A∗ · B)

2.3.2. Interseccion de entidades geometricas

Con las operaciones anteriormente definidas se pueden realizar las operaciones geometricas necesapara la reconstruccion de un solido a partir de dos vistas de forma sencilla. Sin embargo no esta de mrecordar que la operacion de join representa la union de dos elementos geometricos. Para los puntos X  yX ∧Y  representa la linea que los une. Y que la operacion meet (interseccion) representa la entidad geometrcomun a sus operandos, por ejemplo, si X  es una linea y Y  es un plano, X ∨ Y  representa al punto que amtienen en comun.

interseccion de una linea y un plano

En el espacio R4 o P 3 consideremos la linea A = X1∧X2 que se intersecta con el plano Φ = Y1∧Y2∧YEl punto de interseccion se puede calcular por medio de la operacion A ∨ Φ:

A ∨ Φ = (X1 ∧ X2) ∨ (Y1 ∧ Y2 ∧ Y3) = A∗ · Φ

Desarrollando esta expresion con operaciones antes introducidas se llega a la siguiente expresion:

A ∨ Φ = [X1X2Y2Y3]Y1 + [X1X2Y3Y1]Y2 + [X1X2Y1Y2]Y3

Interseccion de dos planos

Esta operacion es un poco mas robusta que la primera ya que el resultado es una linea completa en de un solo punto.

Si se tienen dos planos Φ1 = X1 ∧ X2 ∧ X3 y Φ2 = Y1 ∧ Y2 ∧ Y3, su interseccion se puede calcular com

Φ1 ∨ Φ2 = (X1 ∧ X2 ∧ X3) ∨ (Y1 ∧ Y2 ∧ Y3)

Poniendo en terminos de operaciones mas simples se tiene que:

Φ1 ∨ Φ2 = [X1X2X3Y1](Y2 ∧ Y3) + [X1X2X3Y2](Y3 ∧ Y1) + [X1X2X3Y3](Y1 ∧ Y2)

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 32/55

CAP ITULO 2. RECONSTRUCCI ON 3D

function a = bracket4(X1,X2,X3,X4)

X1 = X1/X1(4); X1 = X1(1:3);

X2 = X2/X2(4); X2 = X2(1:3);

X3 = X3/X3(4); X3 = X3(1:3);

X4 = X4/X4(4); X4 = X4(1:3);

a = bracket3( X2-X1, X3-X1, X4-X1 );

Figura 2.4: Bracket de 4 dimensiones.

function a = bracket3(x1, x2, x3)

  m = zeros(3);

  m(1, :) = x1;

  m(2, :) = x2;

  m(3, :) = x3;

a = det(m);

Figura 2.5: Bracket de 3 dimensiones.

Interseccion de dos lineas

La interseccion de dos lıneas no se implementa de forma directa debido a que es una operacion demasiasensible a errores de computo, solo basta notar que para que dos lıneas se intersecten deben de estar contenien el mismo plano y esta situacion es difıcil de lograr con datos los experimentales provenientes de fotografıas. Sin embargo hay una forma de aproximar la interseccion de dos lıneas mediante dos intersecciolinea-plano. Aunque de esta forma lo que se obtiene en realidad es el punto a la mitad de la linea que unlos puntos mas cercanos entre las dos lineas.

2.3.3. Aspectos de implementacion

Debido a que la operacion mas importante para nuestros propositos es la interseccion de dos entidageometricas, estas son las unicas que se llevan a cado explıcitamente. La union de dos entidades, por ejem

puntos, solo se usa en la expresion Φ1 ∨ Φ2 anterior de forma auxiliar, ya que por razones pr acticas conviene mas obtener dos puntos que definan la lınea resultante. Por lo tanto la funcion de union de masdos puntos no se implementa. La union de dos y tres puntos que definen lineas y planos, que es la queocupa en las formulas, se maneja por medio de una estructura que contiene a los puntos, ya que estos punse ocuparan despues en las expresiones y no conviene realizar dicha operacion.

Por otro lado, el bracket en el algebra de cuatro dimensiones que se usa en las formulas se puede redua un bracket de tres dimensiones y este a su vez puede ser calculado, como se habia mencionado, por medde un determinante.

2.4. Funciones elaboradas

En las figuras 2.4 a 2.12 se muestra el codigo que implementa las operaciones mencionadas. Hay q

destacar que las operaciones se realizan en forma muy eficiente y el c odigo resultante es muy breve.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 33/55

CAP ITULO 2. RECONSTRUCCI ON 3D

function p = Linea(X1, X2)

%Se reserva espacio para el resultado

p = cell(1, 2);

%Se guardan los puntos

p{1} = X1;

p{2} = X2;

Figura 2.6: Esta funcion agrupa en un dato tipo cell los dos puntos que definen una linea.

function p = Plano(Y1, Y2, Y3)

%Se reserva espacio para el resultado

p = cell(1, 3);

%Se guardan los puntos

p{1} = Y1;

p{2} = Y2;p{3} = Y3;

Figura 2.7: Esta funcion agrupa en un dato tipo cell los tres puntos que definen un plano.

function punto = meetLineaPlano(L, P)

%Se obtiene el resultado

punto = ...

bracket4(L{1}, L{2}, P{2}, P{3})*P{1} + ...

bracket4(L{1}, L{2}, P{3}, P{1})*P{2} + ...

bracket4(L{1}, L{2}, P{1}, P{2})*P{3};

Figura 2.8: Encuentra el punto de interseccion de una linea L y un plano P.

function linea = meetPlanoPlano(P1, P2)

%Se calcula cada una de las componentes

A = joinPuntoPunto(P2{2}, P2{3});

B = joinPuntoPunto(P2{3}, P2{1});

C = joinPuntoPunto(P2{1}, P2{2});

%Se encuentran los coeficientes de cada componente

%y se obtiene el resultado final

linea = ...

bracket4(P1{1}, P1{2}, P1{3}, P2{1})*A + ...

bracket4(P1{1}, P1{2}, P1{3}, P2{2})*B + ...

bracket4(P1{1}, P1{2}, P1{3}, P2{3})*C;

Figura 2.9: Encuentra la linea de interseccion de los planos P1 y P2.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 34/55

CAP ITULO 2. RECONSTRUCCI ON 3D

function l = joinPuntoPunto(A, B)

%Los puntos A y B se convierten a su representacion 3D

A = A/A(4);

B = B/B(4);

%Se reserva espacio para el resultado

l = zeros(1, 6);

%Se encuentra la direccion de la linea

l(1:3) = A(1:3)-B(1:3);

%Se encuentra el momento de la linea

l(4:6) = cross(A(1:3), B(1:3));

Figura 2.10: Encuentra la expresion en coordenadas de Plucker de la linea definida por los puntos A y B

function linea2 = descomposicionLinea(linea1)

%Componente de direccion de la linea

u1 = linea1(1:3);

%Momento de la linea

u2 = linea1(4:6);

%Encontramos un punto en la linea

Pperp = cross(u2(1:3), u1(1:3));

Pperp = Pperp/dot(u1(1:3), u1(1:3));

%Encontramos otro punto en la linea

p2 = Pperp+u1;

%Reservamos espacio para el resultado

linea2 = Linea([Pperp 1], [p2 1]);

Figura 2.11: Obtiene dos puntos distintos que se encuentren sobre linea1 dada en coordenadas de Pluck

function pr = interseccionLineas(p1, p2, o1, o2)

%creamos el plano1 y la linea2

plano1 = Plano(o1, p1, p1+p1.*[0,1,0,0]);

linea2 = Linea(o2, p2);

pr1 = meetLineaPlano(linea2, plano1);

pr1 = homogeneas2cartesianas(pr1);

%creamos el plano2 y la linea1

plano2 = Plano(o2, p2, p2+p2.*[0,1,0,0]);

linea1 = Linea(o1, p1);

pr2 = meetLineaPlano(linea1, plano2);

pr2 = homogeneas2cartesianas(pr2);

%promediamos las aproximacionespr = (pr1+pr2)/2;

Figura 2.12: Aproxima una interseccion de dos lineas por medio de dos intersecciones linea-plano.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 35/55

Capıtulo 3

Transformada Wavelet

Las senales electricas y las imagenes son representaciones de fenomenos reales que son de interes diversos motivos. Un electrocardiograma puede ser determinante en la obtencion de un diagnostico medası como una imagen puede ayudar a hacer una prediccion del clima. Entonces, la existencia de estas repsentaciones se justifica porque tienen la capacidad de almacenar informacion. Informacion que al adherirsalguna representacion particular tiene que ser recuperada utilizando alguna tecnica de procesamiento. E

es lo que hace al analisis de senales tan complejo: la representaci´ on de la informaci´ on siempre favorece alaspecto muy especıfico de la se˜ nal, y por lo tanto tenemos que elegir la representaci´ on que nos brinde la mevista .

Sin embargo, las transformaciones que nos permiten obtener otras perspectivas de la senal involucprocesos que pueden ser muy complejos, y por lo tanto, computacionalmente costosos. El ejemplo mas portante es el analisis de Fourier. No fue hasta que se desarroll o un algoritmo rapido, la transformada rapde Fourier, que su uso se extendio considerablemente.

El hecho que hace posible el analisis de Fourier es que una funcion puede ser aproximada, tanto comoquiera, por una suma de funciones senoidales de frecuencias y amplitudas diferentes. Con esta aproximacio descomposici´ on , se puede observar el contenido de frecuencia de una senal. Las variaciones rapidas cresponden a frecuencias altas, mientras que las componentes de frecuencias menores se encuentran mevisibles en la senal, entonces, cada componente de frecuencia corresponde a la aportaci on, grande o pequede una funcion senoidal.

3.1. Transformada Wavelet

Como ya se menciono, la transformada de Fourier es una herramienta muy importante dentro deingenierıa debido a que permite apreciar las caracterısticas de frecuencia de una senal no visibles endominio del tiempo. Sin embargo, al utilizar esta transformacion, se pierde de vista el comportamiento defuncion en el tiempo, ya que las frecuencias observadas corresponden a toda la senal, cuando en realidad epuede tener caracterısticas variantes en el tiempo, es decir, puede ser una senal no estacionaria.

Esta desventaja de la transformada de Fourier proviene del hecho de que utiliza a las funciones sin y como base para la representacion de la senal, ya que aunque estas funciones tienen una sola frecuencia,son localizadas en el tiempo (se extienden periodicamente sobre todo el eje real). Para resolver este problemDenis Gabor agrego un factor a la transformada de Fourier, conocido comunmente como ventana, que perm

observar el contenido de frecuencia de una senal en distintos intervalos de tiempo. Esta modificacion atransformada de Fourier es conocida como transformada de Fourier de tiempo corto (STFT) y ha sido aplicacon exito al procesamiento de senales de radar o de voz.

34

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 36/55

CAP ITULO 3. TRANSFORMADA WAVELET 

En la STFT, dos impulsos deben tener una separacion mayor que ∆t para poder ser reconocidos coeventos separados, y a su vez, el ventaneado de la transformada reduce la resoluci on con que puede obsvarse la frecuencia de la senal y se puede hablar entonces de un intervalo ∆f  que es la separacion mınien frecuencia de dos senales senoidales puras para que puedan ser consideradas como diferentes por e

transformada. La parte importante es que los intervalos ∆t y ∆f  quedan fijos una vez elegida la funcde ventana. Esto no es una muy buena caracterıstica ya que usualmente las senales de alta frecuencia esasociadas a tiempos cortos y las senales de baja frecuencia a periodos largos.

Se requiere entonces de una transformada que permita tener un cierto control sobre el tama no de intervalos ∆t y ∆f  pero siempre ajustandose a la relacion ∆t∆f  ≥ 1

4π .La transformada que cumple con el requisito anterior es la Transformada Wavelet Continua (CWT). E

transformada descompone una senal en una base formada por los corrimientos y dilataciones de una funcconocida como wavelet madre h(t). La expresion que define a esta transfomacion es:

CW T x(τ, α) =1 |α|

 x(t)h∗

t − τ 

α

dt (3

Debido a que τ  y α son reales, la base que se obtiene es redundante y no es de mucha utilidad practSin embargo, al restringir τ  y α a los enteros y elegir una funcion wavelet madre adecuada, se puede obteuna base ortonormal, es decir, que no presenta redundancia. La expresi on para obtener cada wavelet a pade la wavelet madre es:

ψj,k = 2j/2ψ(2jt − k) (3

Bajo estas condiciones, se habla entonces de la Transformada Wavelet Discreta (DWT). Que es la usen el procesamiento de senales y tratamiento de imagenes.

3.2. Transformada Wavelet Discreta

La transformada wavelet discreta descompone una senal discreta en dos senales de la mitad de la longioriginal. Una senal es una aproximacion a la senal original y la otra contiene las diferencias de la aproximac

con respecto a la senal original. Una parte interesante de la transformacion es que la energıa de la senaconserva en las dos subsenales, pero ademas, la mayor cantidad de la energıa se concentra en la senalaproximacion. Esto habla de cierta compactacion de la energıa.

La figura 3.1 muestra las graficas de una funcion y su descomposicion por medio de la transformawavelet. En la grafica de la derecha se muestran la aproximaci on y los detalles unidos como una sola grafiLa senal de aproximacion tiene el 99.5980 % de la energıa de la senal original mientras que la senal de detatiene solo el 0.4020 %.

3.3. Tipos de wavelets mas conocidos y su aplicacion con Matlab

3.3.1. Principales funciones de Matlab para trabajar con la transfomada wavelet

Existen varias familias de wavelets que son utiles en aplicaciones, muchas han sido desarrolladas en

ultimos anos. Desde Matlab se puede obtener informacion basica de cada uno de estos tipos con el comanwaveinfo(tipo) donde tipo puede ser uno de los siguientes:

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 37/55

CAP ITULO 3. TRANSFORMADA WAVELET 

Figura 3.1: La grafica de la izquierda muestra la transformada de la senal de la izquierda. Puede veclaramente que la aproximacion es una version compacta de la senal original. Se utilizo la transformadaHaar.

’haar’ : Wavelet de Haar.’db’ : Wavelets de Daubechies.’sym’ : Symlets.’coif ’ : Coiflets.’bior’ : Wavelets Biortogonales.’rbio’ : Wavelets Reversas biortogonales.

’meyr’ : Wavelet de Meyer.’dmey’ : Wavelet Discreta de Meyer.’gaus’ : Wavelet Gaussiana.’mexh’ : Wavelet de sombrero Mexicano.’morl’ : Wavelet de Morlet.’cgau’ : Wavelet Compleja Gaussiana.’cmor’ : Wavelet Compleja de Morlet.’shan’ : Wavelet Compleja de Shannon.’fbsp’ : Wavelet B-spline de Frecuencia Compleja.

De estas wavelets, las mas conocidas son la de Haar y las de Daubechies. Para poder observar la apariende cada una de estas familias de wavelets se puede utilizar el comando wavemenu de Matlab, que desplila imagen mostrada en la figura 3.2, y despues elegir Wavelet Display. Al elegir una familia y un t

especıfico, se muestra la apariencia de cada wavelet ψ, de la funcion de escalamiento φ y los coeficienteslos filtros de descomposicion y de reconstruccion. Ademas se pueden realizar varias operaciones con waveldesde este menu, como eliminacion de ruido en imagenes y regresion de datos.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 38/55

CAP ITULO 3. TRANSFORMADA WAVELET 

Matlab tambien tiene muchos comandos que pueden ser aplicados en los programas que el usuario desrolle. Los mas importantes son:

coefs = cwt(s, esc, ’modo’) Obtiene los coeficientes resultantes de aplicar la transformada wavelet c

tinuaa la senal s un numero de escalas esc conel tipo de wavelet ’modo’.

[Aprox, Det] = dwt(s, ’modo’) Realiza la transformada discreta wavelet de un nivel a la senal s usanlas wavelets especificadas por ’modo’.

s = idwt(A, D, ’modo’) Realiza la transformada wavelet discreta usando la aproximacion A y los detaD usando las wavelets ’modo’.

wavedec, waverec Realizan la descomposicion y la recontruccion multinivel de una senal utilizando la traformada wavelet discreta.

[L, H, Lprim, Hprim] = wfilters(’modo’) Devuelve los coeficientes de los filtros de descomposiciony H) y de recontruccion (Lprim y Hprim) correspondientes al tipo ’modo’.

[phi, psi, t]=wavefun(’modo’, iter) Devuelve los valores de las funciones wavelet madre y de calamiento para el tipo de wavelet especificado y utilizando el numero de iteraciones especificado.

3.3.2. Wavelet de Haar

Este tipo de wavelet es el mas simple y el que fue conocido primero. Usualmente se usa por su simplicicomputacional y en aplicaciones en que se trabaja con funciones muy irregulares como las series de tiemp

3.3.3. Daubechies

Son de las wavelets mas conocidas ya que fueron las primeras contınuas y con soporte compacto.wavelet de Haar es un caso especial de esta familia. No existe una forma cerrada que describa a estas wave

o a las correspodientes funciones de escalamiento, sin embargo, la forma de la funci on se puede aproximutilizando el comando wavefun o con el programa de ejemplo de la figura 3.3.

3.3.4. Programas de ejemplo

A continuacion se muestran tres programas hechos en Matlab que sirvieron como practica en la utilizacde las funciones relacionadas con wavelets.

3.4. Analisis Multiresolucion

Las funciones wavelets, por su construccion por medio del analisis multiresolucion, forman una bortonormal del espacio de funciones L2(R) que se define a continuacion. Resulta util conocer las principa

definiciones de conceptos matematicos que son encontrados frecuentemente al trabajar con wavelets.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 39/55

CAP ITULO 3. TRANSFORMADA WAVELET 

Figura 3.2: Menu de Matlab para explorar las capacidades de las wavelets

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 40/55

CAP ITULO 3. TRANSFORMADA WAVELET 

function [R, T] = miDB(w)

% filtros para w

[L, H, Lp, Hp] = wfilters(w);

%convolucion de Lp con Hp sobremuestreado

for i=1:15

Hp = upsample(Hp);

Hp = conv(Lp, Hp);

end

R = Hp;

T = linspace(0, length(L)-1, length(R));

%sobremuestrea el arreglo

function R = upsample(A)

R = zeros(1, 2*length(A)-1);

R(1:2:end) = A;

Figura 3.3: Programa que aproxima la funcion wavelet especificada realizando una iteracion de los coeficiendel filtro Hprim sobremuestreados filtrandolos (con la funcion conv) con el filtro Lprim de la forma en qse describe en [3].

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 41/55

CAP ITULO 3. TRANSFORMADA WAVELET 

Figura 3.4: Graficacion del resultado de ejecutar el programa de la figura 3.3 con el argumento ’db2’

function wav2d(w)

%muestra la descomposicion de una imagen en 2 niveles

Im = double(rgb2gray(imread(’purple-cat.jpg’)));

[cA1, cH1, cV1, cD1] = dwt2(Im, w);

[cA2, cH2, cV2, cD2] = dwt2(cA1, w);

Im2 = [cA2, cH2; cV2, cD2];

imshow(uint8([Im2(:,1:end-1), cH1; cV1, cD1]));

end

Figura 3.5: Programa que realiza la descomposicion en dos niveles de una imagen.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 42/55

CAP ITULO 3. TRANSFORMADA WAVELET 

Figura 3.6: Resultado de la ejecucion de programa de la figura 3.5 con el argumento ’db2’ que especifica u

wavelet de Daubechies.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 43/55

CAP ITULO 3. TRANSFORMADA WAVELET 

function Im2 = comp

%intenta quitar el ruido a una imagen...[L, H, Lp, Hp] = wfilters(’coif3’);

%lee la imagen y la muestra

Im = double(rgb2gray(imread(’purple-cat.jpg’)));

subplot(131); imshow(uint8(Im))

title(’Imagen original’)

Im = Im + 30*round(rand(size(Im))); %agrega ruido

t = size(Im);

for i=1:t(1)

for j=1:t(2)

if Im(i, j)>255

Im(i, j)=255;

end

endend

subplot(132); imshow(uint8(Im))

title(’Imagen con ruido’)

%se aplica la transformada discreta

[cA1, cH1, cV1, cD1] = dwt2(Im, ’coif3’);

cH1 = umbral(cH1, 1*std(Im(:)));

cV1 = umbral(cV1, 1*std(Im(:)));

cD1 = umbral(cD1, 1*std(Im(:)));

A0 = idwt2(cA1, cH1, cV1, cD1, ’coif3’);

%se muestra la aproximacion

subplot(133); imshow(uint8(A0));

title(’???’)

end

function R = umbral(M, mul)

t = size(M);

for i = 1:t(1)

for j = 1:t(2)

if abs(M(i, j))<mul

M(i, j)=0;

end

end

end

R = M ;

end

Figura 3.7: Programa que intenta realizar la eliminacion de ruido de una imagen usando la wavelet coifle

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 44/55

CAP ITULO 3. TRANSFORMADA WAVELET 

Figura 3.8: Resultado de la ejecucion del programa de la figura 3.7

La norma de una secuencia α = α1, α2, . . . es una medida del tamano o magnitud de la secuencia

define por la formula

αl2 =

n

αn

1/2

El espacio l2 consiste de todas las secuencias α con norma finita.

La norma de una funcion f (R) → R se define por

f L2 =

 R

f (x)2dx

1/2

De forma semejante al inciso anterior, el espacio L2 consiste de todas las funcionesf  con norma finUsualmente se usa solo el sımbolo • al representar la norma de una secuencia o funci on, la norm

utilizar se entiende por el contexto.

Una secuencia de funciones f 1, f 2, . . . converge a la funcion f  si la diferencia f n − f  se puede haarbitrariamente pequena haciendo crecer a n, esto se representa como f n − f  → 0 cuando n → ∞

Una serie de funciones converge a f  si la secuencia S n de sumas parciales converge a f . Una suparcial se define como S n(x) =

nj=1 f i(x)

La base de wavelets de Haar fue por mucho tiempo la unica conocida con la propiedad de ser ortogonsin embargo, se requeria de otras bases de wavelets que adem as fueran continuas y diferenciables. En 19Meyer y Mallat desarrollaron el analisis multiresolucion, que ayudo a crear y entender estas nuevas basEl analisis multiresolucion es la formalizacion de las ideas intuitivas de los terminos aproximacion y detausados en la seccion 3.2. Formalmente, un analisis multiresolucion es una secuencia de subespacios cerraV n, n ∈ Z , subconjuntos de L2(R), tales que

cumplen con la jerarquıa de contenciones

· · · ⊂ V 2 ⊂ V 1 ⊂ V 0 ⊂ V −1 ⊂ V −2 · · · (3

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 45/55

CAP ITULO 3. TRANSFORMADA WAVELET 

su interseccion es trivial y la cerradura de su union es L2(R)n

V n = {0},n

V n = L2(Z ) (3

esto quiere decir que la unica funcion que pertenece a cada V n es la funcion 0 (ninguna funcion constaaparte de 0 pertenece a L2(R)), y que el espacio L2(R) es generado por las combinaciones linealeslos conjuntos V n.

cada uno de estos subconjuntos es una contraccion del otro

f (x) ∈ V n ⇔ f (2nx) ∈ V 0, n ∈ Z  (3

por ejemplo, si una funcion f (x) esta en V 1, entonces la funcion f (2x) (una contraccion de f (x) amitad) esta en V 0.

existe una funcion de escalamiento φ ∈ V 0 cuyas translaciones enteras generan a V 0,

V 0 = { f  ∈ L2

(R) | f (x) = αkφ(x − k), k ∈ Z } (3

Entonces, como cada elemento del espacio V n es la contraccion de un elemento de V 0, puede decirse qtodos estos conjuntos son iguales cuando se ignora su escala, y que conforme subimos en la jerarquıacontencion nos encontramos con espacios con mas detalles (o con frecuencias mayores).

El analisis multiresolucion conduce a una descomposicion ortogonal del espacio L2(R). Como V n ⊂ V nse puede obtener el complemento ortogonal de V n en V n−1 representado por W n, entonces

W n ⊕ V n = V n−1 (3

a su vez, V n puede ser descompuesto como

W n+1 ⊕ V n+1 = V n (3

siguiendo este procedimiento se tiene quem

k=n

W k

V m = V n−1, m ≥ n (3

y si se toma la suma sobre todos los enteros se puede generar a todos los conjuntos V nn

W n =n

V n = L2(R) (3.

Esto nos indica que el espacio L2(R) puede ser descompuesto como una suma directa de espacios W nentonces cualquier funcion en L2(R) se puede representar como una combinacion lineal de elementos de W

que contienen elementos de frecuancias diferentes.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 46/55

CAP ITULO 3. TRANSFORMADA WAVELET 

3.5. Aplicacion de muestra

Usando la funciones de Matlab antes mencionadas, se elaboro una pequena aplicacion de filtradoimagenes. En particular se implementaron un filtro pasabajas y un pasaaltas.

A grandes rasgos, estos filtros funcionan del siguiente modo. Primero se obtienes los coeficientes detransformacion wavelet a varios niveles, despues se podan (se hacen cero) algunos de los coeficientes obtenien la transformacion, se borran los coeficientes de detalles si se desea un filtro pasabajas, o se borran coeficientes de aproximacion si se desea un filtro pasa altas, por ultimo, se reconstruye la imagen con coeficientes modificados. La imagen de prueba se muestra en la figura 3.9, los resultados de los filtrosmuestran en las figuras 3.10 y 3.11.

Figura 3.9: Imagen de prueba para los filtros.

3.6. Codigo de las funciones elaboradas

En las figuras 3.12 a 3.18 se muestra el codigo fuente de las funciones que implementan la aplicacionfiltrado.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 47/55

CAP ITULO 3. TRANSFORMADA WAVELET 

Figura 3.10: Resultado de la aplicacion del filtro pasa bajas con diferentes umbrales para la poda de coeficientes de detalle.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 48/55

CAP ITULO 3. TRANSFORMADA WAVELET 

Figura 3.11: Resultado de la aplicacion del filtro pasa altas con diferentes umbrales para la poda de coeficientes de aproximacion.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 49/55

CAP ITULO 3. TRANSFORMADA WAVELET 

function prueba

im = abreImagen(’dado.jpg’, ’c’);

r = descomposicion(im, 0, ’db9’);

r = filtra(r, ’h’, 0.8);

imshow(reconstruccion(r));

Figura 3.12: Funcion que ejecuta la aplicacion de prueba.

function im = abreImagen(nombre, modo)

im = imread(nombre);

if modo = ’c’

im = rgb2gray(im);

end

im = double(im);

Figura 3.13: Esta funcion abre la imagen con el nombre especificado y la convierte a escala de grises si asindica.

function datos = descomposicion(imagen, niveles, wavelet)

%Obtiene el numero de capas de la imagen. Una para escala de grises y

%3 para imagenes con colores

if length(size(imagen)) == 3

capas = 3; %imagen a colores

else

capas = 1; %escala de grises

end

%Crea la estructura que almacenara los datos

datos = cell(capas, 1);

%Si niveles == 0, se realiza la maxima descomposicion posible

if niveles == 0

t = size(imagen);

  maximo = max(t(1:2)); %Encuentra la dimension mayor en la imagen

niveles = log(maximo)/log(2); %obtiene el logaritmo base 2

end

%Realiza la descomposicion wavelet

for i = 1:capas

[C, S] = wavedec2(imagen(:,:,i), niveles, wavelet);

datos{i} = desempaca(C, S, wavelet);

end

end

Figura 3.14: Esta funcion realiza la descomposicion wavelet de una imagen usando la funcion wavedec2matlab. Regresa una estructura con los datos mejor organizados. Si el numero de niveles de descomposices igual a 0, se realiza el numero maximo de descomposiciones posibles.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 50/55

CAP ITULO 3. TRANSFORMADA WAVELET 

function datos = filtra(datos, tipo, atenuacion)%Ajustamos el modo en que se manejan los bordes de la imagen en%el proceso de filtrado. Usamos el modo ’per’ (periodizacion).

%Esto produce como resultado que los vectores de aproximaciones%y detalles sean siempre de la mitad del tama~no del original)  m = dwtmode;

if m ~= ’per’dwtmode(’per’);

end

%El filtrado se puede realizar a 100 niveles.

%Calcula el numero de pasos por cada nivel de descomposiciontam = size(datos1);

niveles = tam(1)-1;pasosPorNivel = round(100/niveles);tamanoDePaso = 1 / pasosPorNivel;

%Encuentra que niveles de la descomposicion%se atenuan y en que cantidadatenuacion = atenuacion * 100;porAtenuar = [];

conElValor = [];capasAAtenuar = ceil(atenuacion/pasosPorNivel);if tipo == ’h’

i = 1;for k = 1:capasAAtenuarporAtenuar = [porAtenuar, i];i = i+1;

end

elsei = niveles+1;for k = 1:capasAAtenuar

porAtenuar = [porAtenuar, i];i = i-1;

endend

if capasAAtenuar >0restante = atenuacion-(capasAAtenuar-1)*pasosPorNivel;conElValor = porAtenuar;conElValor(1:end) = 0;

for i = 1:restanteconElValor(end) = conElValor(end)+tamanoDePaso;

endconElValor(end) = 1-conElValor(end);

end

%Encuentra el numero de capas de la imagen

capas = length(datos);

%Aqui se filtra cada capa de la imagen...for i = 1:capas

temp = datos{i}; %Guarda una capa de la descomposicionfor k = 1:length(porAtenuar)

for j = 1:3temp{porAtenuar(k), j} = conElValor(k)*temp{porAtenuar(k), j};

porAtenuar(k);if porAtenuar(k)==1%Esta es la aproximacion

break;end

endenddatos{i} = temp;

endend

Figura 3.15: Esta funcion realiza un filtrado. Recibe la descomposicion wavelet de una imagen, el tipofiltrado y la atenuacion de los coeficientes. Regresa un estructura similar a la recibida.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 51/55

CAP ITULO 3. TRANSFORMADA WAVELET 

function im = reconstruccion(datos)

%Se obtiene el numero de capas de la imagen representada por los datos

capas = length(datos);

%Se lee la primera capa de datos

[C, S] = empaca(datos{1});

%Se lee el nombre de la wavelet usada en la descomposicionwavelet = datos{1};

wavelet = wavelet{1, 3};

temp = waverec2(C, S, wavelet);

%Se crea la variable que almacenara la imagen reconstruida

[f, c] = size(temp);

im = zeros(f, c, capas);

%Se guarda la primera capa

im(:,:,1) = temp;

for i = 2:capas

[C, S] = empaca(datos{i}); %obtiene los datos de la estructura CELL

im(:,:,i) = waverec2(C, S, wavelet);%Guarda los datos en la imagen

end

%Se convierte a tipo byteim = uint8(im);

end

Figura 3.16: Esta funcion realiza la reconstruccion de una imagen a partir de su descomposicion wavelet. Ula funcion waverec2 de matlab.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 52/55

CAP ITULO 3. TRANSFORMADA WAVELET 

function datos = desempaca(C, S, wavelet)

%Encontramos el numero de niveles de la descomposicion

[f, c] = size(S);

niveles = f-2;

%Creamos una estructura CELL que contenga a las matrices resultantes

%de la descomposicion realizada (C) y los datos de las dimensiones (S)

datos = cell(niveles+1, 3);

%Guardamos primero la aproximacion

temp = zeros(S(1,:)); %se crea la matriz para la aproximacion

temp(:) = C(1:prod(S(1,:))); %se guarda la aproximacion

datos{1, 1} = temp; %se guarda en la estructura CELL

%Quitamos del arreglo C los datos guardados

C = C(prod(S(1,:))+1 : end);

%Guardamos los datos de las dimensiones (S)

datos{1, 2} = S;

%Guardamos el nombre de la wavelet usada en la descomposiciondatos{1, 3} = wavelet;

%Guardamos los detalles de los diferentes niveles

for i = 1:niveles

L = prod(S(i+1,:));%encuentra la cantidad de datos a guardar

for j = 1:3%para los detalles H, V y D

temp = zeros(S(i+1,:)); %crea la matriz para guardar los datos

temp(:) = C(1:L); %guarda los datos en la matriz

datos{i+1, j} = temp; %guarda los datos en el cell

C = C(L+1 : end); %quita los datos que ya se leyeron

end

end

end

Figura 3.17: Funcion que acomoda los datos de la descomposicion generada por la funcion wavedec de mat

en una estructura de datos tipo cell junto del nombre de la wavelet usada en la descomposicion.

function [C, S] = empaca(R)

C = [];

S = R{1, 2};

[f, c] = size(R);

temp = R{1, 1}; %guarda la aproximacion

C = temp(:)’;

for i=2:f %guarda los detalles

for j=1:c

temp = R{i, j};

C = [C, temp(:)’];

end

endend

Figura 3.18: Regresa al formato original manejado por wavedec2 y waverec2.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 53/55

Bibliografıa

[1] Charles K. Chui, An Introduction to Wavelets, (Academic Press, EE.UU.AA., 1992).

[2] Leonardo Traversoni, On how to do wavelets of movements and its meaning ,

[3] Marius Mitrea, Clifford Wavelets, Singular Integrals, and Hardy Spaces, (Springer-Verlag, Aleman1994).

[4] David Hestenes, New Foundations for Classical Mechanics, (Kluwer Academic Publishers, ...)

[5] Yves Meyer,Wavelets: Algorithms & Applications, (SIAM, EE.UU., 1994).

[6] Richard Courant, Herbert Robbins, ¿Que son las Matem´ aticas?: Conceptos Metodos y Fundamen(Fondo de Cultura Economica, Mexico, 2002).

[7] Patrick Du Val, Homographies, Quaternions and Rotations, (Oxford University Press, Gran Breta1964).

[8] Lars Kadison y Matthias T. Kromann, Projective Geometry and Modern Algebra , (Birkhauser, EE.U1996).

[9] Richard Murray y Shankar Sastry, A Mathematical Introduction to Robotic Manipulation , (CRC-PrEE.UU., 1994).

[10] William Rowan Hamilton, On quaternions, or on a new system of imaginaries in algebra , Traducido David R. Wilkins, Irlanda 2000. Disponible en internet.

[11] Eduardo Bayro Corrochano y Joan Lasenby, The Geometry Algebra of Computer Vision, en: GeomeAlgebra with Applications in Science and Engineering , eds. Eduardo Bayro Corrochano y Garret Sobcz(Birkhauser, EE.UU.AA. 2001.) capıtulo 7.

[12] Shawn G. Ahlers y John Michael McCarthy, The Clifford Algebra and the Optimization of Robot Desien: Geometric Algebra with Applications in Science and Engineering , eds. Eduardo Bayro CorrochanGarret Sobczyk (Birkhauser, EE.UU.AA. 2001.) capıtulo 12.

[13] Leonardo Traversoni, Image Analysis Using Quaternion Wavelets, en: Geometric Algebra with Apcations in Science and Engineering , eds. Eduardo Bayro Corrochano y Garret Sobczyk (BirkhauEE.UU.AA. 2001.) capıtulo 16.

[14] Ljudmila Meister, Quaternion Optimization Problems in Engineering, en: Geometric Algebra with Aplications in Science and Engineering , eds. Eduardo Bayro Corrochano y Garret Sobczyk (BirkhauEE.UU.AA. 2001.) capıtulo 19.

52

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 54/55

BIBLIOGRAF IA

[15] Eduardo Bayro Corrochano, Multi-resolution Image Analysis Using the Quaternion Wavelet Transfoen: Numerical Algorithms 39 , eds. (Springer, 2005.) Disponible en internet.

[16] Joan Lasenby, Geometric Algebra: Applications in Engineering:

[17] Bert Juttler, Visualization of Moving Objects Using Dual Quaternion Curves, en: Computer & Graph(Elsevier, 1994.) Disponible en internet.

[18] Ken Shoemake, Animating Rotations with Quaternion Curves, en: Computer Graphics (Proc. of SGRAPH ’85), (1985). Disponible en internet.

[19] Myoung-Jun Kim, Myoung-Soo Kim y Sung Yong Shin A General Construction Scheme for Unit Quanion Curves with Simple High Order Derivatives, en: , (1995). Disponible en internet.

[20] Oene Bottema, Bernard Roth, Theoretical Kinematics, Dover Publications, EE.UU. 1979.

[21] Les Piegl, The NURBS Book , Springer-Verlag, Berlin. 1995.

[22] Gregory Nielson, ν -Quaternion Splines for the Smooth Interpolation of Orientations, en: IEEE Tra

actions on visualization and computer graphics Vol. 10. No. 2 , (2004).[23] Walker, James S., A Primer on Wavelets and their Scientific Applications, Chapman & Hall/CR

EE.UU. 1999.

[24] Alpert, Bradley K., Wavelets and Other Bases for Fast Numerical Linear Algebra , publicadoWavelets–A Tutorial in Theory and Applications editado por Charles Chui, Academic Press Inc., EE.U1992.

[25] Olivier Rioul, Martin Vetterli, Wavelets and Signal Processing , 1991.

[26] Alan V. Oppenheim, Ronald W. Schafer, Tratamiento de Se˜ nales en Tiempo Discreto, segunda edici

Prentice Hall, Espana 2000.

[27] Michael Misiti, Yves Misiti Georges Oppenheim, Jean-Michel Poggi, Wavelet Toolbox for use with Mat

[28] Gilbert Strang, Truong Nguyen, Wavelets and Filter Banks, Cambridge Press, EE.UU. 1996.

5/11/2018 UAMI13644 - slidepdf.com

http://slidepdf.com/reader/full/uami13644 55/55