Skip to content

Implementación de conceptos aprendidos en Álgebra Lineal para comprimir imágenes usando la Descomposición en Valores Singulares.

Notifications You must be signed in to change notification settings

NeicerVB/Proyecto_AL_SVD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Compresor de Imágenes SVD

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.

Interfaz Gráfica del Compresor SVD

🧠 ¿Cómo funciona?

La aplicación utiliza el algoritmo SVD (Singular Value Decomposition) para descomponer la matriz de información de la imagen en tres matrices: $U$, $\Sigma$ (valores singulares) y $V^T$.

  • 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.

🚀 Inicio Rápido

Ejecuta la aplicación desde la raíz del proyecto:

python main.py

📋 Requisitos

  • 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).

📦 Instalación

  1. Clona el repositorio o descarga el código.
  2. Instala las dependencias necesarias:
pip install pillow numpy

🛠️ Estructura del Proyecto

El 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.

🎯 Características Principales

  • 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.

📄 Licencia

Este proyecto es de código abierto y está disponible para fines educativos y de práctica.

About

Implementación de conceptos aprendidos en Álgebra Lineal para comprimir imágenes usando la Descomposición en Valores Singulares.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages