Oyarzabal Ivan
Que onda, como es que esto es tan genial? osea es simplemente genial jajaja
Eli Yiram Sánchez
Por si deseas saber un poco más a fondo como funciona JPG
Como funciona JPEG
Juan R. Vergara M.
Correcto 👍
La compresión de imágenes es un campo vital en la era digital, sobre todo en aplicaciones como reconocimiento visual y optimización del almacenamiento. Un método fascinante para comprimir imágenes es la descomposición en valores singulares, un enfoque que resalta la importancia de entender cómo ciertas operaciones matriciales pueden ser fundamentales para la representación efectiva de las imágenes digitales.
¿Qué es la compresión de imágenes mediante descomposición en valores singulares?
La descomposición en valores singulares, o SVD por sus siglas en inglés, es una técnica matemática que transforma una matriz en tres matrices distintas. En el contexto de la compresión de imágenes, esta técnica es relevante porque permite identificar qué valores singulares de una matriz (que representa una imagen) son realmente importantes para capturar la mayor cantidad de información visual de la imagen.
¿Por qué algunos valores singulares son más importantes que otros?
La clave de la SVD como técnica de compresión radica en el hecho de que los primeros valores singulares tienen la mayor parte de la varianza de los datos de la imagen. Esto significa que:
¿Cómo se puede reconocer una imagen a partir de sus valores singulares?
Partiendo de un ejemplo donde la reconstrucción de una imagen se inicia con solo cinco valores singulares, se puede ir incrementando este número para mejorar la calidad de la imagen reconstruida. Aquí está el proceso:
¿Qué factores influyen en la elección del número de valores singulares a utilizar?
La decisión sobre cuántos valores singulares usar para comprimir una imagen depende del propósito de la compresión. Consideraciones clave incluyen:
¿Cómo progresa la claridad de la imagen con más valores singulares?
El avance en la claridad de la imagen con el incremento en el número de valores singulares es gradual:
¿Cuándo se considera que la cantidad de valores singulares es suficiente?
La cantidad de valores singulares necesarios para una buena representación de la imagen varía, pero en muchos casos, una cifra mucho menor a la totalidad de valores singulares posibles es suficiente. Por ejemplo, una imagen que originalmente contiene alrededor de 3600 valores singulares puede ser adecuadamente representada con solo 50, si lo que se busca es reconocimiento básico.
Esperamos que esta introducción a la compresión de imágenes mediante la descomposición en valores singulares te motive para explorar más a fondo este fascinante área de la ciencia de datos y el procesamiento de imágenes. La continua experimentación y práctica te llevarán a descubrir la potencia de estas técnicas y cómo se pueden aplicar para optimizar el almacenamiento y procesamiento de imágenes digitales. ¡No te detengas aquí y sigue explorando las posibilidades!
Oyarzabal Ivan
Que onda, como es que esto es tan genial? osea es simplemente genial jajaja
Eli Yiram Sánchez
Por si deseas saber un poco más a fondo como funciona JPG
Como funciona JPEG
Juan R. Vergara M.
Correcto 👍
Para generar una "animación" y ver la imagen con diferente número de valores singulares:
from IPython.display import clear_output plt.figure() for n in range(50): plt.imshow(U[:,:n]@np.diag(D[:n])@V[:n,:], cmap='gray') plt.title(f"SV's = {n}") plt.show() clear_output(wait=True)
Wilson Fernando Antury Torres
Geraldine León
Buenísima clase: el contenido y el mejor profesor!
Gabriel Salvador
Daniel Reyes Barrera
Cadad vez esto me gusta mas
Jorge Andrés Torres Viveros
Excelente clase.
Miguel Angel Avila Torres
Simplemente alucinante
Daniela Cardona
¿Podrían decirme porque es importante esta linea, por favor?
titulo = "valores singulares = %s" % i
Gen Ko
Aaron Fabrizio Calderon Guillermo
También funciona así:
titulo = f"valores singulares = {i}"
Alex Jesús Huamanvilca Ichocán
Que genial! Les comparto este link, lo compartió un compañero en anteriores clases, por si no lo leyeron se los comparto aquí hace referencia al tema los valores singulares. Muy interesante.
Pablo Antipan Quiñenao
Wow! Cuando finalmente el aprendizaje converge :D
Sebastián Andrade
la imagen comprimida tendrá menot tambaño en bytes que la original?
Cristian Tarazona
Hola buenas alguien por favor me puede decir por qué hace ese sliding: (np.matrix(U[:, :i]) * np.diag(D[:i]) * np.matrix(V[:i,:])) ? Matriz U : Toma todas las filas y de la columna 0 a la columna i . (Toma todas las filas) Matriz D : Todos los valores hasta el valor de las pos i (Va tomando los valores con mas peso) Matriz V : Desde la fila 0 hasta la fila i y todas las columnas . (Toma todas las columnas)
y no por ejemplo del u [i:,:] , d[:i] y v [:,i:] ????
Benjamín Guzmán
En SVD, podemos representar a la imagen (matriz) A como A = U D L^T. Donde L^T = V.
Las columnas de U corresponden a los vectores característicos de A A^T, mientras que las columnas de L corresponden a los vectores característicos de A^T A, pero si transponemos a L, o sea L^T = V, entonces las filas de V serán los vectores característicos.
El i-ésimo elemento en D (como arreglo) corresponde con la i-ésima columna (i-ésimo vector) en U, y la i-ésima fila (i-ésimo vector) en V.
Es por eso que si queremos quedarnos solamente con los n valores singulares más representativos, hay que tomar las primeras n columnas de U (U[:, :n]), los primeros n elementos en D (D[:n]), y las primeras n filas de V (V[:n, :]).
Si fuera U[i:, :] @ np.diag(D[:i]) @ V[:, i:], estaríamos haciendo una mezcolanza muy rara, porque estaríamos tomando de la i-ésima componente de todos los vectores en U en adelante, multiplicándolo con los sigmas desde 0 hasta i, y luego multiplicando con todos los vectores en V "recortados" desde 0 hasta su i-ésima componente.
LUIS ANTONIO CALVO QUISPE
Simplemente alucinante, aquí podemos observar cómo aumenta la precisión a más Vectores Singulares Considerados
Santiago Ahumada Lozano
Si usan este código pueden ver el avance:
for i in range(len(D)): image_reconstruction = np.matrix(U[:, :i])*np.diag(D[:i])*np.matrix(V[:i,:]) plt.imshow(image_reconstruction, cmap='gray') title = '#Singular values %s' %i plt.title(title) plt.show()
Luis Rogelio Reyes Hernandez
La compresión de imágenes por medio de la descomposición SVD hace uso de que muy pocos de los valores singulares realmente están representando información, la mayoría de ellos apenas logran capturar un porcentaje muy pequeño de su varianza.
Damian Spizzirri
Ahora que vi para que puede llegar a servir voy a volver a ver el video de la teoría.
Mario Alexander Vargas Celis
Compresión de Imágenes Usando Descomposición en Valores Singulares
Antonio Demarco Bonino
Increíble:
Jhon Freddy Tavera Blandon
import numpy as np import matplotlib.pyplot as plt # Crear una matriz de ejemplo A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) # Aplicar la descomposición SVD U, s, Vt = np.linalg.svd(A) # Matriz diagonal de valores singulares S = np.diag(s) # Reconstruir la matriz original A_reconstructed = U.dot(S).dot(Vt) # Imprimir los resultados print("Matriz original:\n", A) print("Matriz U:\n", U) print("Matriz diagonal de valores singulares:\n", S) print("Matriz V transpuesta:\n", Vt) print("Matriz reconstruida:\n", A_reconstructed) # Graficar los valores singulares plt.plot(s, 'ro-') plt.xlabel('Índice') plt.ylabel('Valor singular') plt.title('Valores singulares') plt.show()
Es una variable simple asigancion de variable. Todo el contenido “valores singulares = %s” % i se asigna a la variable titulo. Esa variable titulo se utiliza despues en plt.title(titulo). En realidad depende mas a eleccion personal, por ejemplo:
La manera en la que el profesor lo escribe:
titulo = “valores singulares = %s” % i plt.title(titulo)
. . Y la manera en la que normalmente se escribe:
plt.title(“valores singulares = %s” % i)
Ambas son correctas :)