1. Introducción
El algebra lineal tiene la habilidad de abstraer cualquier objeto que pueda ser considerado un vector y
aplicarle una transformación lineal para conocerlo más a fondo. Estas aciones producen matrices. En este
proyecto se va a utilizar la descomposición en valores singulares para expresar la información de una matriz
de forma compacta y así poder ahorrar espacio en el momento de almacenar la imagen.
2. Compresión de imagen
Cualquier imagen puede ser considerada como una matriz de m × n en la cual cada coordenada es un
pixel; además, las entradas son enteros entre 0 ≤ 255 tales que si aij = 0 entonces el pixel toma el color negro
total y si aij = 255 es blanco. Entonces una imagen de 2000 × 1000 pixeles es una matriz de 2000 × 1000
en la cual cada entrada requiere de 1 byte para ser almacenado; por esto, esta imagen necesitarían 1.91Mb,
en el caso de que se requiera una imagen a color se necesita el triple de capacidad para asignar un color en
RGB a cada pixel para esta imagen de 2 megapixeles.
A = U ΣV ∗
En la ecuación anterior U, V son matrices ortonormales y Σ es una matriz diagonal, además se toma el
conjugado transpuesto de V . Una propiedad fundamental es que A∗ A siempre es una matriz cuadrada que
cumple con la propiedad de que sus eigenvalores siempre son positivos.
En donde p = minm, n son los eigenvalores de AA y AAen orden decreciente. Para encontrar la descompo-
sición de una matriz es necesario conocer los eigenvalores para buscar los eigevectores ortogonales que van a
ser las columnas de U y de V .
1
= V ΣT U T U ΣV T
= V Σ2 V T
Asi se obtiene la descomposición de AT A en la cual los eigenvalores son las entradas en la diagonal de Σ2
y estos van a ser los vectores singulares derechos de la descomposición, es necesario que formen una base
ortonormal.
AT A = V Σ2 V T ∈ Mn×n (R)
De la misma forma para AAT
AAT = U ΣV T (U ΣV T )T
= U ΣV T V ΣT U T
= U Σ2 U T
Resulta que AAT = U Σ2 U T ∈ Mm×m (R) Asi queda planteada la relación entre los eigenvalores y eigenvec-
tores de A, AT con las matrices U, V para que estas sean ortonormales es necesario resolver un sistema.
2.4. Compresión
Sea M ∈ Mm×n (R) una matriz que representa una imagen entonces es posible descomponer a M en
valores singulares.
M = XSY T
La ecuación se puede escribir de la siguiente forma, al tomar en cuenta que los valores singulares distinitos
de 0 son iguales al rank de la matriz M con X ∈ Mm×m (C) y Y ∈ Mn×n (C).
M = x1 σ1 y1T + x2 σ2 y2T + x3 σ3 y3T + ... + xr σr yrT + ... + xn σn ynT +
En los cuales r es el rango de la matriz M , de aquí se aprovecha que como los valores singulares decrecen
(de forma exponencial) entonces la información clave de la imagen está contenida en los primero k valores
singulares de la matriz M , es decir que la ecuación anterior solo se consideran los k primeros sumandos.
M = x1 σ1 y1T + x2 σ2 y2T + x3 σ3 y3T + ... + xk σk ykT
Esto es con k < r para reducir la cantidad de bytes necesarios para almacenar la imagen. Una vez que en
este fomrato se requieren k(m + n + 1) bytes se llega a la cota para k
mn
k<
m+n+1
Esto es porque al tomar un solo valor singular y una sola columna y renglón de X, Y se obtiene el byte del
valor singular y los bytes de los vectores columna. Este procedimiento es conocido en inglés como Principal
component analysis, esto es porque el valor singular más grande suele contener casi toda la información y la
faltante va decreciendo al igual que los valores singulares. Por esto el método de los valores singulares es tan
poderoso; además, de que se puede aplicar a matrices no cuadradas.
2
2.5. Medición
Una razón util para medir el peso de una compresión es:
mn
CR =
k(m + n + 1)
Esto indica en a : b las veces que supera la imagen original en peso a la comprimida una razón de 5 : 1 indica
que la compresión requiere un quinto de la original para ser almacenada. También se utiliza el promedio de
B = np . matrix (A)
f o r i in l i s t S i n g V a l s :
numSVals = i
3
compMatrix =
np . matrix (U [ : , : numSVals ] ) ∗ np . d i a g ( sigma [ : numSVals ] ) ∗ np . matrix (V [ : numSVals , : ] )
Brevemente se explicará el algoritmo. Esta no es una explicación detallada ya esta fuera del alcance de
este trabajo la comprensión del script y las funciones empleadas de Python.
Las primeras lineas importan las librerias necesarias para facilitar el uso de matrices y arreglos python.
A su vez se usa matplotlib para visualizar las imágenes generadas.
Tomando la imagen titulada ’friedberg.jpg’ se saca la matriz que la representa (Figura 2) y se convierte
a grises.
Se define una lista de valores singulares que van a ser usados en el algoritmo. Se emplea un ciclo for para
generar las 11 diferentes imágenes que van a ser comparadas.
Dentro de cada ciclo del for se hace la multiplicación entre matrices que fue previamente explicada. A su
vez se utiliza en cada ciclo el número de valores singulares que van a ser utilizados en dicha imagen.
Por último se guarda muestra la imagen comprimida y generada.
Para concretar el uso de SVD así como sus ventajas a continuación se dan ejemplos del algoritmo en uso.
A su vez se da una tabla con valores comparativos con cuantos valores singulares fueron usados y el peso
final de la imagen resultante.
Cabe mencionar que este ejemplo que se realizo con una imagen en blanco y negro. Esto con la finalidad
concentrarnos en los calculos de SVD con valores entre 0 y 255. En la siguiente figura se puede observar de
que valores contiene la escala de grises, esto con la finalidad de que se observe la amplia gama de pixeles que
son usados en una imagen en escala de grises.
Las siguientes imagenes contienen la imagen original y 11 imágenes comprimidas con diferentes valores
singulares. Estos valores son: 1, 5, 10, 15, 30, 50, 70, 150, 500, 750, 1100. La imagen original tiene una
dimensión de 1463 x 2171.
4
Figura 3: Imagen Original Figura 4: Valor Singular = 1
5
Figura 7: Valores Singulares = 15 Figura 8: Valores Singulares = 30
6
Figura 11: Valores Singulares = 150 Figura 12: Valores Singulares = 500
Figura 13: Valores Singulares = 750 Figura 14: Valores Singulares = 1100
7
Tabla 1: Número de Valores Singulares contra Peso de la imagen (en kilobytes)
8
4. Conclusión de la aplicación
En la tabla 1 se puede observar los pesos resultantes al aplicarle el algoritmo SVD. Se puede observar
algo muy peculiar en los datos que arroja la imagen original, la de 500, 750 y 1100 valores singulares. Lo que
se observa es que a partir de 500 valores singulares la diferencia en el peso de la imagen comprimida contra
la original es muy chico, es una diferencia de 1 kb. A su vez para la de 750 y 1100 kb el peso es exactamente
el mismo que el de la imagen original. Esto se debe a que el rango de dichas matrices que corresponden a las
imágenes fue superado por los valores singulares.
Figura 15: Nótese que el PSNR, peak signal to noise ratio, está en base log10
Otro tipo interesante de compresión es la compresión wavelet ya que puede ser tanto lossy como lossless,
dependiendo de qué wavelet se esté usando. Las transformadas wavelets, parecidas a las transformadas de
Fourier, se definen como funciones que circulan alrededor del eje x y que tienen la misma área bajo el eje x
como por encima:
9
6. Bibliografía
Rabbani, Majid, and Paul W. Jones. Digital image compression techniques. 7th ed. Vol. TT7. Eastman
Kodak Company, 1991.
University, Stanford. "Wavelet Compression on Images."Stanford EDU. April 30, 2002. Accessed Novem-
ber 22, 2017. http://cva.stanford.edu/classes/ee482s/homework/hw1.pdf.
Gonzalez, Rafael, and Richard E. Woods. Digital Image Processing. 2nd ed. Upper Sadle River, NJ:
Prentice Hall, 2002.
Verma, Sunny , and Jakkam Phanindra Krishna. Ïmage Compression and Linear Algebra.ÇMI, November
15, 2013. Accessed November 18, 2017. http://www.cmi.ac.in/ ksutar/NLA2013/imagecompression.pdf.
Kalman, Dan. .A Singularly Valuable Decomposition: The SVD of a Matrix."The American University,
February 13, 2002, 1-27. Accessed November 18, 2017.
Cleary, Frank. "Singular Value Decomposition of an Image."Frank Cleary. Accessed November 22, 2017.
http://www.frankcleary.com/svdimage/.
Meacham, Aidan. Ïmage Compression."Buzzard Edu. April 14, 2014. Accessed November 19, 2017.
http://buzzard.ups.edu/courses/2014spring/420projects/math420-UPS-spring-2014-meacham-image-compression.pdf.
Chen, James. Ïmage Compression with SVD."Fourier Engineering. December 13, 2000. Accessed Novem-
ber 21, 2017. http://fourier.eng.hmc.edu/e161/lectures/svdcompression.html.
10