- 1

Descomposición de Matrices y Su Aplicación en Machine Learning
01:47 - 2

Transformaciones Lineales con Matrices en Python: Visualización y Análisis
12:56 - 3

Autovalores y autovectores en transformaciones lineales
06:44 - 4

Cálculo de Autovalores y Autovectores con NumPy en Python
06:45 - 5

Descomposición de matrices: valores y vectores propios
08:37 - 6

Descomposición de Matrices en Valores Singulares
05:29 - 7

Transformaciones Lineales con Matrices: Efectos en el Círculo Unitario
10:53 - 8

Descomposición SVD: Transformaciones de Matrices y Círculo Unitario
06:25 - 9

Impacto de los Valores Singulares en Transformaciones Matriciales
09:17
Descomposición de imágenes: reducción de tamaño y reconstrucción eficaz
Clase 11 de 18 • Curso de Álgebra Lineal Aplicada para Machine Learning
Contenido del curso
- 10

Procesamiento de Imágenes: Escala de Grises y Normalización
09:47 - 11

Descomposición de imágenes: reducción de tamaño y reconstrucción eficaz
07:41 - 12

Compresión de Imágenes Usando Descomposición en Valores Singulares
05:04 - 13

Cálculo de la seudo inversa de Moore-Penrose en Python
14:28 - 14

Solución de Sistemas Sobredeterminados con Pseudo-Inversa y Python
07:28
¿Cómo aplicar la descomposición SVD a una imagen?
La descomposición en valores singulares (SVD) es una técnica matemática potente que nos permite reducir la dimensionalidad de una matriz sin perder información esencial. A menudo, se aplica en el procesamiento de imágenes para comprimir archivos manteniendo una buena calidad visual. Pero, ¿cómo aplicamos esta técnica a una imagen concreta? Veamos el proceso completo y cómo esto afecta la reconstrucción de la imagen.
¿Qué librerías son esenciales para el procesamiento de imágenes?
Para comenzar con nuestro análisis, es necesario importar las librerías adecuadas. Utilizaremos principalmente matplotlib para graficar y tratar imágenes, y numpy para manejar números y realizar operaciones matemáticas:
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
Estas librerías nos permitirán cargar, manipular y visualizar nuestra imagen de manera eficiente.
¿Cómo cargar y preparar la imagen?
Primero, cargamos nuestra imagen y la convertimos a escala de grises. Esto simplifica el proceso al reducir la información de color a una sola banda:
img_path = "ruta/a/tu/imagen.jpg"
imagen_color = Image.open(img_path)
imagen_gray = imagen_color.convert('L')
imagen_array = np.array(imagen_gray, dtype=float)
Esta conversión a escala de grises también nos facilita realizar la descomposición SVD, ya que trabajaremos con una matriz más sencilla.
¿Cómo se realiza la descomposición en valores singulares (SVD)?
Utilizamos numpy para calcular la descomposición SVD de la matriz que representa nuestra imagen:
U, S, Vt = np.linalg.svd(imagen_array, full_matrices=False)
Aquí, U y Vt son matrices ortogonales, mientras que S es un vector que contiene los valores singulares. Estos valores singulares están ordenados de mayor a menor, identificando los componentes más significativos de la imagen.
¿Cómo reconstruir la imagen utilizando SVD?
La reconstrucción de la imagen usando una cantidad reducida de valores singulares es clave para la compresión. Utilizamos solo los valores singulares más grandes, ya que representan la mayor parte de la información visual:
k = 50 # número de valores singulares considerados
S_k = np.diag(S[:k])
U_k = U[:, :k]
Vt_k = Vt[:k, :]
imagen_reconstruida = np.dot(U_k, np.dot(S_k, Vt_k))
Al variar k, podemos observar el efecto que tiene en la calidad de la imagen reconstruida. Cuanto mayor sea k, mejor será la calidad visual pero también mayor el tamaño del archivo.
¿Qué tamaño de archivo y calidad de imagen obtenemos al variar k?
La elección de k afecta directamente al tamaño final de nuestro archivo y la claridad de la imagen reconstruida. Aquí algunas consideraciones:
- Con pocos valores singulares: Tendremos un archivo muy comprimido pero con pérdida de detalles. La imagen será menos clara.
- Con muchos valores singulares: Conservamos más detalles finos pero el tamaño del archivo es mayor.
La habilidad para elegir el k óptimo depende del propósito: si se necesita reconocimiento más que calidad visual, menos valores serán suficientes.
Concluyendo, la técnica SVD aplicada a imágenes logra un equilibrio único entre compresión y calidad, permitiendo optimizar recursos de almacenamiento sin sacrificar demasiada información visual. Te invitamos a experimentar y determinar cuál es el valor k ideal para tus necesidades específicas. ¡Explora nuevas formas de eficientizar tus proyectos de imágenes!