Aplicación de escritorio desarrollada en Python para la compresión de imágenes utilizando técnicas de álgebra lineal, específicamente la Descomposición en Valores Singulares (SVD). Esta herramienta permite reducir el tamaño de almacenamiento de las imágenes manteniendo una calidad visual aceptable mediante la aproximación de matrices de bajo rango.
La aplicación utiliza el algoritmo SVD (Singular Value Decomposition) para descomponer la matriz de información de la imagen en tres matrices:
-
Compresión: Se seleccionan los
$k$ valores singulares más importantes (los de mayor magnitud). -
Reconstrucción: Se reconstruye la imagen utilizando solo estos
$k$ valores, descartando la información menos relevante (ruido o detalles finos). -
Canales:
- Escala de Grises: Se procesa una única matriz 2D.
- RGB: Se separan los canales Rojo, Verde y Azul, se aplica SVD a cada uno independientemente y se recombinan para formar la imagen final a color.
Ejecuta la aplicación desde la raíz del proyecto:
python main.py- Python 3.7+
- Librerías:
numpy: Para operaciones matriciales y álgebra lineal.Pillow(PIL): Para manipulación y procesamiento de imágenes.tkinter: Para la interfaz gráfica de usuario (generalmente incluido en Python).
- Clona el repositorio o descarga el código.
- Instala las dependencias necesarias:
pip install pillow numpyEl proyecto sigue una arquitectura modular para separar la lógica de negocio de la interfaz de usuario:
compresion_imagenes/
├── config/ # Configuraciones globales (UI, constantes)
├── docs/ # Documentación adicional
├── src/
│ ├── core/ # Lógica matemática (SVD, procesamiento numpy)
│ └── ui/ # Interfaz gráfica (Ventanas, Paneles, Componentes)
└── main.py # Punto de entrada de la aplicación
Para más detalles sobre la arquitectura, consulta ESTRUCTURA.md.
- Compresión Matemática: Implementación pura de SVD usando NumPy.
- Soporte Multiformato:
- Entrada: Soporta formatos comunes (PNG, JPG).
- Salida: Exportación configurable a PNG o JPG.
- Modos de Procesamiento:
- Escala de Grises (L): Convierte y comprime en blanco y negro.
- Color (RGB): Mantiene el color procesando cada canal por separado.
- Control Preciso: Slider para ajustar el porcentaje de valores singulares a conservar (5% - 100%).
- Interfaz Intuitiva:
- Vista previa "lado a lado" para comparar la imagen original con la comprimida.
- Visualización en tiempo real de los cambios.
Este proyecto es de código abierto y está disponible para fines educativos y de práctica.
