Está en la página 1de 6

1

Mtodo de Compresin con Prdida SVD


Guillermo Patio Chaves

RESUMEN
Con el presente trabajo se pretende documentar la forma de
desarrollar el mtodo de compresin de informacin SVD, se
explicaran los pasos para realizar dicha tcnica basados en la
descomposicin matricial del valor singular, desarrollando un
ejemplo con una matriz sencilla y se verificaran dichos
clculos con la ayuda del programa matlab, finalmente se
realizar un ejemplo con la matriz de datos que arroja una
imagen, se comprimir la misma aplicando el mtodo con la
ayuda de la misma herramienta matlab, y as poder verificar
los porcentajes de compresin entre la imagen original y la
comprimida.

una informacin, la compresin con prdida de informacin


logra alcanzar una tasa de compresin alta a costa de sufrir
prdida de informacin.
Al aplicar algunas tcnicas de compresin como la SVD la
informacin no se recupera en su totalidad, por ello se
denominan mtodos de compresin con prdidas, pero la
correcta utilizacin de estas tcnicas deben procurar que la
prdida que se produce no sea muy significativa.
Los mtodos de compresin bsicamente utilizan mtodos
matemticos para realizar la compresin de la informacin la
cual se puede representar en una matriz de datos, pero a la vez
estas tcnicas son reversibles para realizar la descompresin
de la informacin.

Palabras Clave: compresin de datos, descomposicin


del valor singular, valores propios, vectores propios.

II. SVD

Abstract

La tcnica de compresin SVD o descomposicin del valor


singular se basa en la descomposicin matricial que recibe el
mismo nombre, en la cual a partir de una matriz se generan
tres matrices, dichas matrices poseen los valores propios y los
vectores propios de la matriz analizada.

With the next work its pretended to document the form to


develop the method of SVD data compression, explaining the
steps to perform this technique based on singular value matrix
decomposition, developing an example with a simple matrix
and verify such calculations with the help of the program
matlab, finally an example will be done with the data matrix
resulting in an image that will compress using the same
method with the help of the same tool matlab, so you can
check the compression ratios between the original and the
compressed image .

Matemticamente se puede expresar la descomposicin SVD


como:
= ()
Donde:
A: Es la matriz analizada.

Keywords: data compression, singular value decomposition,


eigenvalues, eigenvectors.

I. INTRODUCCIN
os datos son la forma de representar la informacin, es
decir esta puede ser representada por una distinta cantidad
de datos, por lo tanto una misma informacin puede
contener datos redundantes.

La compresin de datos se define como el proceso de reducir


la cantidad de datos necesarios para representar eficazmente
Guillermo
Alberto
Patio
Chaves:
82200914252
guilllermopatinoch@gmail.com, estudiante de Ingeniera de sistemas y
Telecomunicaciones, Universidad de Manizales.

U: Es la matriz formada por los vectores propios originados


por los valores propios y el producto de .
S: Es la matriz formada por los valores propios ubicados en la
diagonal principal y los dems trminos son cero.
V: Es la matriz formada por los vectores propios originados
por los valores propios y el producto de .
Aunque el mtodo descompone la matriz original en tres
matrices produciendo a su vez ms datos, su importancia
radica en que la informacin ms relevante se puede recuperar
con tan solo algunos de los datos de las matrices generadas.

Guillermo Patio
III. METODOLOGIA PARA APLICAR LA
DESCOMPOSICN DEL VALOR SINGULAR
La descomposicin del valor singular SVD se puede aplicar a
una matriz de cualquier tamao, como se menciono
anteriormente esta tcnica produce tres matrices originadas
con los valores y los vectores propios de dicha matriz, a
continuacin se explicaran los pasos a seguir para desarrollar
una descomposicin SVD.

1. Realizar el producto de la matriz por su

()

Donde:
A: Es la matriz a la cual se le hallaran los vectores propios
X: es el vector propio buscado
: Son los valores propios.
Para Obtener la matriz U de la descomposicin SVD que
contiene vectores propios se tendr en cuenta que:

transpuesta.

Debido a que el clculo de los valores y los vectores


propios solo se puede realizar a matrices cuadradas, se
hace necesario realizar el producto de la matriz por su
transpuesta para generar as una matriz cuadrada.
=

()

Las variables se definieron en la ecuacin (2)


Para Obtener la matriz V de la descomposicin SVD que
contiene vectores propios se tendr en cuenta que:

()

()

A: matriz cuadrada a la que se le calcularan los valores y


vectores propios.

Las variables se definieron en la ecuacin (1)

: Matriz original, es decir la que contiene los datos que


se van a comprimir.

4. Ordenar los valores propios en la matriz S

: Matriz transpuesta de la matriz original.


Nota: la transpuesta de una matriz se halla al cambiar las
filas por columnas. Ejemplo:
=

1 2 3
2 3 1

1
= 2
3

2
3
1

Los valores propios se ordenan en forma decreciente en la


diagonal principal de la matriz y se les obtiene la raz de
los mismos, as tenemos:

()

2. Hallar los valores propios de la matriz

Donde cada representa un valor propio y se debe


cumplir que > >

Los valores propios () de una matriz cuadrada A son los


nmeros que satisfacen la siguiente ecuacin:

5. Verificacin

()

Donde:
A: Es la matriz a la cual se le hallaran los valores propios.
: Son los diferentes valores propios con que cuenta la
matriz, la cantidad de depende del grado de la matriz A.

El desarrollo correcto de la descomposicin SVD debe


conllevar a generar la matriz original nuevamente, para
ello se debe hallar la transpuesta de V y realizar el
producto. Es decir que se debe cumplir nuevamente con la
formula nmero 1 de la descomposicin SVD:
=
Las variables se definieron en la ecuacin (1)

I: Es la matriz Identidad, la cual cuenta con unos (1) en su


diagonal principal y los dems trminos son cero.

3. Hallar los vectores propios


Para hallar los vectores propios se utilizan los valores
propios de la matriz, expresado matemticamente de la
siguiente forma:

IV. EJEMPLO DE APLICACIN DE SVD A UNA


MATRIZ SENCILLA
La matriz que se tomara como ejemplo para aplicar la
tcnica SVD, es una matriz de 2x2:

3
=
= 1 1 =

1 2
1 3

3 2
2 2
=

5 7

1 0

0 1
7 13

det

5 7
0

7 13
0
5
7
7
13

()

()

El primer vector propio se origina con el valor propio


= 17.0623

5 7
7 13

det

det

1
1
5 7
=
7 13
2
2

1
1
5 7
= 17.0623
7 13
2
2

= 0 ()

51 + 72
17.06231
=
71 + 132
17.0623 2

=0
Obteniendo dos ecuaciones:
=0

51 + 72 = 17.06231
71 + 132 = 17.06232

Desarrollando el determinante se obtiene:


51 17.06231 + 72 = 0
71 + 132 17.06232 = 0

5 13 7 7 = 0
2 18 + 65 49 = 0
2 18 + 16 = 0 Al desarrollar el determinante se
obtiene el polinomio caracterstico de la matriz A, el cual
es un polinomio en potencias de .
Como se obtiene una ecuacin de segundo grado, se
puede resolver fcilmente por la ecuacin cuadrtica que
se expresa de la siguiente manera:
=

b b2 4 a c
2a

12.06231 + 72 = 0
71 4.06232 = 0
= . Para las dos ecuaciones
El segundo vector propio se origina con el valor propio
= 0.9377
1
1
5 7
= 0.9377
7 13
2
2
51 + 72
0.93771
=
71 + 132
0.9377 2

As se obtiene:
Obteniendo dos ecuaciones:

(18) (18)2 4 1 16
=
21
=

18 324 64
2

18 260
2

18 16.1245
2

51 + 72 = 0.93771
71 + 132 = 0.93772
51 0.93771 + 72 = 0
71 + 132 0.93772 = 0
4.06231 + 72 = 0
71 + 12.06232 = 0
= . Para las dos ecuaciones

1 =

18 + 16.1245
2

= .

2 =

18 16.1245
2

= .

Se obtuvieron los dos valores propios de la matriz A


Para generar la matriz U de la descomposicin SVD, se
utiliza la matriz generada por la formula (5)

Los vectores propios que conforman la matriz U, estarn


dados por:
=

Nota: Cada valor de 2 es independiente del vector


propio que se est determinando.

Guillermo Patio
101 + 82
0.93771
=
81 + 82
0.9377 2

Los dos sistemas presentan infinitas soluciones pero


utilizando el programa matlab, podemos conocer que:
=

. .
. .

Obteniendo dos ecuaciones:

Matriz que cumple con las condiciones establecidas en los


clculos anteriores. La matriz est normalizada, es decir
sus valores se encuentran entre -1 y 1.

101 + 82 = 0.93771
81 + 82 = 0.93772
101 0.93771 + 82 = 0
81 + 82 0.93772 = 0

Para generar la matriz V de la descomposicin SVD, se


utiliza la matriz generada por la formula 6

9.06231 + 82 = 0
81 + 7.06232 = 0

1 3
1 2

3 2
2 2

= . Para las dos ecuaciones

10 8
8 8

Los vectores propios que conforman la matriz V, estarn


dados por:

Siendo los valores propios los mismos se utiliza el


concepto para hallar los vectores propios:
1
1
10 8
=
8 8
2
2

()
Nota: Cada valor de 2 es independiente del vector
propio que se est determinando.

El primer vector propio se origina con el valor propio


= 17.0623

Los dos sistemas presentan infinitas soluciones pero


utilizando el programa matlab, podemos conocer que:

1
1
10 8
= 17.0623
8 8
2
2

. .
. .

=
101 + 82
17.06231
=
81 + 82
17.0623 2

Matriz que cumple con las condiciones establecidas en los


clculos anteriores. La matriz est normalizada, es decir
sus valores se encuentran entre -1 y 1.

Obteniendo dos ecuaciones:


101 + 82 = 17.06231
81 + 82 = 17.06232

101 17.06231 + 82 = 0
81 + 82 17.06232 = 0

17.0623
0
=

0
0.9377

()

7.06231 + 82 = 0
81 9.06232 = 0

Los datos concuerdan con los obtenidos utilizando el


programa matlab.

= . Para las dos ecuaciones

Nota: La posicin de los vectores propios de las matrices


U y V deben concordar con la posicin que ocupan sus
respectivos valores propios en la matriz S.

El segundo vector propio se origina con el valor propio


= 0.9377
1
1
10 8
= 0.9377
8 8
2
2

=
()
=

0.5019
0.8649

. .
. .

0.8649
4.1306

0
0.5019

0
0.7497

0.9683
0.6618

0.6618
()
0.7497


=

Obteniendo as la matriz a la cual se le realizo la
descomposicin SVD.

V. COMPRESIN SVD APLICADA A UNA IMAGEN


Para aplicar la tcnica de compresin a una imagen con la
ayuda de la herramienta matlab, se deben realizar los
siguientes pasos:

Convertir la figura a escala de grises

Pasar los datos de la matriz que forma la figura a tipo


doubl

Aplicar la tcnica SVD

Determinar el numero K que ser el coeficiente de


datos a recuperar. K debe ser un nmero entre 1 y el
rango de la matriz. Se recuerda que el rango de la
matriz es el menor nmero de filas o de columnas
que componen dicha matriz.

Sumar tantas veces indique K el producto de

1 1 1

Revertir el proceso realizado en segundo punto, es


decir los datos convertirlos de doubl a unit8 que en
matlab son los que representan una imagen.

Recuperar la figura con los datos del punto anterior,


al ser un mtodo de compresin con prdidas, la
informacin no se recuperara en su totalidad, pero
con algunos de los datos se obtendr una figura muy
cercana a la original.

En la figura 1, se observa la imagen seleccionada para aplicar


la tcnica SVD, convertida en escala de grises.
Con la ayuda de matlab se puede determinar que los datos de
la figura estn contenidos en una matriz de tipo double de
181x279, lo que nos da un total de 50499 datos.
Al aplicar la tcnica SVD se obtienen tres matrices de los
siguientes tamaos:
U de 181x181
S de 181x279
V de 279x279

CONCLUSIONES
Fig.1. Imagen en escala de grises
Fig.2. Imagen recuperada
En la figura 2, se observa la imagen recuperada con 25 filas de
la matriz U, 25 valores propios de la matriz S y 25 columnas
de la matriz V.
Teniendo en cuenta que la matriz U es de 181x181 y que la
matriz V es de 279x279, se tendr que 181*25+25+25*279
para un total de 11525 datos con los que se logro recuperar la
una imagen aunque algo borrosa ofrece una perspectiva
cercana de la imagen original.

CONCLUSIONES
Fig.1. Imagen en escala de grises

Fig.1. Imagen en escala de grises


Fig.3. Imagen recuperada

Fig.1. Imagen en escala de grises

En la figura 3, se observa la imagen recuperada con 50 filas de


la matriz U, 50 valores propios de la matriz S y 50 columnas
de la matriz V.

Guillermo Patio
Teniendo en cuenta que la matriz U es de 181x181 y que la
matriz V es de 279x279, se tendr que 181*50+50+50*279
para un total de 23050 datos con los que se logro recuperar la
imagen contra 50499 datos de la matriz original, es decir que
el mtodo comprimi la imagen al 46% aproximadamente,
cabe destacar que la imagen recuperada es del mismo tamao
de la original 181x279.

cantidad de datos
recuperados

% de
Compresin

10

4610

90,87

25

11525

77,18

50

23050

54,36

100

46100

8,71

Aunque la tcnica de compresin SVD es un mtodo


con prdidas, se pudo comprobar que con una cierta
cantidad de datos inferior a la cantidad original se
puede recuperar la informacin de una forma
satisfactoria.

La utilizacin de una herramienta como matlab es


indispensable para el estudio de los mtodos de
compresin que se basan en complejas operaciones
matemticas.

BIBLIOGRAFIA

Tabla.1. Compresin segn el K elegido

La tabla 1, muestra para diferentes K seleccionados la


cantidad de datos recuperados y el valor de porcentaje de
compresin. A mayor K, mayor cantidad de datos, menor
porcentaje de compresin y viceversa. Pero el K seleccionado
determina la calidad de la imagen recuperada como se observa
en las figuras anteriores.

Valores y vectores propios. [en lnea]. <


http://lc.fie.umich.mx/~jrincon/apuntes%20intro%20
valores%20propios.pdf > [Consulta: 27/08/2010]

SVD descomposicin en valores singulares.


[en
lnea].<http://www.fing.edu.uy/inco/cursos/numerico
/aln/SVD.pdf> [Consulta: 27/08/2010]

a=imread('imagen.jpg');%leer la figura
b=rgb2gray(a);%se pasa la figura a escala de grises
figure(1);%permite observar varias figuras
imshow(b)%se observa la figura en escala de grises
c=double(b);%se convierte la figura a nmeros
[u,s,v]=svd(c);%se originan las tres matrices del SVD de la figura
vt=v';%se halla la transpuesta de la matriz v
ire=0;%se inicia la variable para ciclo
for(x=1:50)
ire=ire+u(:,x)*s(x,x)*vt(x,:);%se recuperan 50 datos de la figura
Fig.2. Imagen recuperada
end
iremost=uint8(ire);%se convierte la figura recuperada a formato para
visualizar
figure(2);
imshow(iremost)%se observa la figura recuperada

El cdigo anterior permite realizar un programa en matlab


para aplicar los pasos antes mencionados al realizar la
compresin SVD, adems permite observar la imagen original
y la recuperada, en el ciclo for se pueden cambiar el nmero K
que determina la cantidad de datos a recuperar.

CONCLUSIONES

La potencia del mtodo SVD radica en utilizar la


informacin ms relevante, ya que la matriz S que
contiene los valores propios se ordena con sus datos
en forma decreciente, los de mayor peso son los que
primero se utilizan a la hora de recuperar la
informacin.

También podría gustarte